From adafcdb6d1dc6806ec487b7d74ccdc7df15066b4 Mon Sep 17 00:00:00 2001 From: Guus der Kinderen Date: Thu, 13 Jun 2024 15:26:42 +0200 Subject: [PATCH] [sinttest] Fix race condition in MUC test When occupant One waits for occupant Two to join the room, One should register the corresponding listener _before_ Two joins. Without this, a race conditions occurs, where Two could have joined the room before One registered the listener, thus missing the event. --- .../smackx/muc/MultiUserChatOccupantIntegrationTest.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/smack-integration-test/src/main/java/org/jivesoftware/smackx/muc/MultiUserChatOccupantIntegrationTest.java b/smack-integration-test/src/main/java/org/jivesoftware/smackx/muc/MultiUserChatOccupantIntegrationTest.java index 4caad88d9..396097868 100644 --- a/smack-integration-test/src/main/java/org/jivesoftware/smackx/muc/MultiUserChatOccupantIntegrationTest.java +++ b/smack-integration-test/src/main/java/org/jivesoftware/smackx/muc/MultiUserChatOccupantIntegrationTest.java @@ -214,16 +214,15 @@ public class MultiUserChatOccupantIntegrationTest extends AbstractMultiUserChatI final Resourcepart nicknameThree = Resourcepart.from("three-" + randomString); createMuc(mucAsSeenByOne, nicknameOne); - mucAsSeenByTwo.join(nicknameTwo); - SimpleResultSyncPoint oneSeesTwo = new SimpleResultSyncPoint(); mucAsSeenByOne.addParticipantListener(presence -> { if (nicknameTwo.equals(presence.getFrom().getResourceOrEmpty())) { oneSeesTwo.signal(); } }); - mucAsSeenByOne.grantModerator(nicknameTwo); + mucAsSeenByTwo.join(nicknameTwo); oneSeesTwo.waitForResult(timeout); + mucAsSeenByOne.grantModerator(nicknameTwo); List results = new ArrayList<>(); mucAsSeenByThree.addParticipantListener(results::add);