mirror of
https://github.com/vanitasvitae/Smack.git
synced 2024-11-25 21:42:07 +01:00
[sinttest] Improve mucChangeNicknameInformationTest()
Only declare the body of the participant listeners once. And increase the try block, to account, for example, for participantOneSeesTwoEnter.waitForResult() throwing.
This commit is contained in:
parent
2a243fe3b6
commit
9f58c992bd
1 changed files with 27 additions and 30 deletions
|
@ -1,6 +1,6 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Copyright 2015-2020 Florian Schmaus, 2021 Dan Caseley
|
* Copyright 2015-2024 Florian Schmaus, 2021 Dan Caseley
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -30,6 +30,7 @@ import java.util.Set;
|
||||||
import java.util.concurrent.TimeoutException;
|
import java.util.concurrent.TimeoutException;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import org.jivesoftware.smack.PresenceListener;
|
||||||
import org.jivesoftware.smack.SmackException;
|
import org.jivesoftware.smack.SmackException;
|
||||||
import org.jivesoftware.smack.XMPPException;
|
import org.jivesoftware.smack.XMPPException;
|
||||||
import org.jivesoftware.smack.packet.Message;
|
import org.jivesoftware.smack.packet.Message;
|
||||||
|
@ -968,36 +969,32 @@ public class MultiUserChatOccupantIntegrationTest extends AbstractMultiUserChatI
|
||||||
|
|
||||||
createMuc(mucAsSeenByOne, nicknameOne);
|
createMuc(mucAsSeenByOne, nicknameOne);
|
||||||
|
|
||||||
SimpleResultSyncPoint participantOneSeesTwoEnter = new SimpleResultSyncPoint();
|
|
||||||
mucAsSeenByOne.addParticipantListener(presence -> {
|
|
||||||
if (nicknameTwoOriginal.equals(presence.getFrom().getResourceOrEmpty())) {
|
|
||||||
participantOneSeesTwoEnter.signal();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Have participant two enter the room
|
|
||||||
mucAsSeenByTwo.join(nicknameTwoOriginal);
|
|
||||||
participantOneSeesTwoEnter.waitForResult(timeout);
|
|
||||||
|
|
||||||
// Although logic dictates that the 'unavailable' presence stanzas for the old nick should precede the presence
|
|
||||||
// stanza for the new nick - the specification does not dictate that. So we should allow for the order to be
|
|
||||||
// reversed. Here we will expect an unavailable and an available presence stanza sent to both participant one
|
|
||||||
// and participant two. So that adds up to a total of four.
|
|
||||||
MultiResultSyncPoint<Presence, ?> participantTwoPresencesSyncPoint = new MultiResultSyncPoint<>(4);
|
|
||||||
mucAsSeenByOne.addParticipantListener(presence -> {
|
|
||||||
if (nicknameTwoOriginal.equals(presence.getFrom().getResourceOrEmpty()) || nicknameTwoNew.equals(
|
|
||||||
presence.getFrom().getResourceOrEmpty())) {
|
|
||||||
participantTwoPresencesSyncPoint.signal(presence);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
mucAsSeenByTwo.addParticipantListener(presence -> {
|
|
||||||
if (nicknameTwoOriginal.equals(presence.getFrom().getResourceOrEmpty()) || nicknameTwoNew.equals(
|
|
||||||
presence.getFrom().getResourceOrEmpty())) {
|
|
||||||
participantTwoPresencesSyncPoint.signal(presence);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
SimpleResultSyncPoint participantOneSeesTwoEnter = new SimpleResultSyncPoint();
|
||||||
|
mucAsSeenByOne.addParticipantListener(presence -> {
|
||||||
|
if (nicknameTwoOriginal.equals(presence.getFrom().getResourceOrEmpty())) {
|
||||||
|
participantOneSeesTwoEnter.signal();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Have participant two enter the room
|
||||||
|
mucAsSeenByTwo.join(nicknameTwoOriginal);
|
||||||
|
participantOneSeesTwoEnter.waitForResult(timeout);
|
||||||
|
|
||||||
|
// Although logic dictates that the 'unavailable' presence stanzas for the old nick should precede the presence
|
||||||
|
// stanza for the new nick - the specification does not dictate that. So we should allow for the order to be
|
||||||
|
// reversed. Here we will expect an unavailable and an available presence stanza sent to both participant one
|
||||||
|
// and participant two. So that adds up to a total of four.
|
||||||
|
MultiResultSyncPoint<Presence, ?> participantTwoPresencesSyncPoint = new MultiResultSyncPoint<>(4);
|
||||||
|
PresenceListener mucPresenceListener = presence -> {
|
||||||
|
Resourcepart fromResource = presence.getFrom().getResourceOrEmpty();
|
||||||
|
if (nicknameTwoOriginal.equals(fromResource) || nicknameTwoNew.equals(fromResource)) {
|
||||||
|
participantTwoPresencesSyncPoint.signal(presence);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
mucAsSeenByOne.addParticipantListener(mucPresenceListener);
|
||||||
|
mucAsSeenByTwo.addParticipantListener(mucPresenceListener);
|
||||||
|
|
||||||
// Participant two changes nickname
|
// Participant two changes nickname
|
||||||
mucAsSeenByTwo.changeNickname(nicknameTwoNew);
|
mucAsSeenByTwo.changeNickname(nicknameTwoNew);
|
||||||
final List<Presence> partTwoPresencesReceived = participantTwoPresencesSyncPoint.waitForResults(
|
final List<Presence> partTwoPresencesReceived = participantTwoPresencesSyncPoint.waitForResults(
|
||||||
|
|
Loading…
Reference in a new issue