Build: #1912 was successful
Job: Default Job was successful
Code commits
Smack (master)
-
Florian Schmaus d2810cf9b6c9f91d57269040a65c133eeebbbe07
[sinttest] Move throw statement before setting the listener in mucDestroyTest()
Also add tryDestroy(muc). -
Florian Schmaus bf6b7bd692adaf522ecbacf0ee4bb4f3d4e95633
[sinttest] Use set operation instead of Java stream API in mucDestroyTest()
-
Florian Schmaus 35f621be053eced19555aedcb246e567eecd5efc
[muc] Switch away from deprecated DefaultUserStatusListener in mucDestroyTest()
-
Florian Schmaus c5e3f89e215e5e7b310e7b1ecd6d7b671afebce9
[sinttest] Add MultiUserChatIntegrationTest.mucNameChangeTest()
-
Florian Schmaus 2a243fe3b6486353d8f96183228433cd7692e86a
[sinttest] Do not use Java stream() API to check if MUC status is set
MUCUser.getStatus() returns a set, checking if a particular MUC status
number is set should be done via a simple and efficient set operation
and not by resorting to using Java's stream API. -
Florian Schmaus 1d498efd46308f5957f688fcd958fb812101c618
[muc] Add support for muc#roomconfig_enablelogging to MucConfigFormManager
-
Florian Schmaus 9f58c992bdd462fdd66965e39cf0d157a4e8fdd9
[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. -
Florian Schmaus 90c7dc4390705884eee987095d656c251b018a50
[sinttest] Add ejabberd specific behavior for mucJoinLockedRoomTest()
ejabberd does not seem to implement the MUC locked behavior specified
in XEP-0045 § 7.2.10. -
Florian Schmaus 482a117e0da416110319192630b85dfc6c0fc533
[sinttest] Migrate mucJoinRoomWithPublicLoggingTest() to use MucConfigFormManager
This also ensures that the test does not fail if the service does not
support the required MUC configuration option.- smack-integration-test/src/main/java/org/jivesoftware/smackx/muc/AbstractMultiUserChatIntegrationTest.java (version 482a117e0da416110319192630b85dfc6c0fc533) (diffs)
- smack-integration-test/src/main/java/org/jivesoftware/smackx/muc/MultiUserChatOccupantIntegrationTest.java (version 482a117e0da416110319192630b85dfc6c0fc533) (diffs)
-
Florian Schmaus 6cda9a637961bb3bbf472b72142a303dee028b7c
[sinttest] Add ejabberd specific behavior for mucMaxUsersLimitJoinRoomTest
ejabberd returns resource-constraint instead of service-unavailable if
the maximum number of participants is reached. -
Florian Schmaus e69e7d23420d96a935da4a0809201216a51de0b3
[sinttest] Add TestNotPossibleException(Throwable)
-
Florian Schmaus eed707f39dd7a676476a3edf91619e965c235ed7
[sinttest] Inline createLockedMuc()
This method only had one call site and using such "helper" methods has
the drawback that it is not immediatly obvious what it does when
reading the integration test code. Therefore, we better inline it.- smack-integration-test/src/main/java/org/jivesoftware/smackx/muc/AbstractMultiUserChatIntegrationTest.java (version eed707f39dd7a676476a3edf91619e965c235ed7) (diffs)
- smack-integration-test/src/main/java/org/jivesoftware/smackx/muc/MultiUserChatOccupantIntegrationTest.java (version eed707f39dd7a676476a3edf91619e965c235ed7) (diffs)
-
Florian Schmaus c87bb8aaa495928d51eb4c6fcc4ca03f42bd8c65
[sinttest] Ensure that message has body in mucJoinEventOrderingTest()
It is possible that messages do not have a body. Therefore, we need to
ensure that the message has one before we compare the body. -
Florian Schmaus 9447030cd4d3c0ac72da1279ef4a9e35e9efb594
[muc] Do not invoke userHasLeft() on nickname change
When the incoming unavailable presence is signalling a nickname
change (303), then do not invoke userHasLeft(), because the user
actually does not leave but instead just changes its nickname.
Note that this would also have had fixed SMACK-942, as it would
resolve the deadlock. However, using a dedicated lock for
changeNickname() still seems sensible, and if its just to avoid a bit
of lock contention.
What this also fixes is that a MultiUserChat does no longer invoke its
listener-based callbacks after a nickname change, as previously, after
a nickname change, the userHasLeft() would have been invoked, which
tears down the listeners. This issue was found with
MultiUserChatOccupantIntegrationTest.mucChangeNicknameInformationTest(). -
Florian Schmaus c34c9bdb62978d56ded495692c88bbd07f0750bd
[muc] Fix MultiUserChat.changeNickname(Resourcepart)
Using this method used to result in a deadlock, as shown by these two threads
"main" #1 prio=5 os_prio=0 cpu=926.39ms elapsed=21.00s tid=0x00007f463802c800 nid=0x5a691 in Object.wait() [0x00007f463f323000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.23/Native Method)
- waiting on <0x0000000622e82fd8> (a org.jivesoftware.smack.StanzaCollector)
at org.jivesoftware.smack.StanzaCollector.nextResult(StanzaCollector.java:206)
- waiting to re-lock in wait() <0x0000000622e82fd8> (a org.jivesoftware.smack.StanzaCollector)
at org.jivesoftware.smack.StanzaCollector.nextResultOrThrow(StanzaCollector.java:270)
at org.jivesoftware.smack.StanzaCollector.nextResultOrThrow(StanzaCollector.java:228)
at org.jivesoftware.smackx.muc.MultiUserChat.changeNickname(MultiUserChat.java:1314)
- locked <0x0000000622e19700> (a org.jivesoftware.smackx.muc.MultiUserChat)
at org.jivesoftware.smackx.muc.MultiUserChatOccupantIntegrationTest.mucChangeNicknameInformationTest(MultiUserChatOccupantIntegrationTest.java:981)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@11.0.23/Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@11.0.23/NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@11.0.23/DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(java.base@11.0.23/Method.java:566)
at org.igniterealtime.smack.inttest.SmackIntegrationTestFramework.lambda$runTests$0(SmackIntegrationTestFramework.java:476)
at org.igniterealtime.smack.inttest.SmackIntegrationTestFramework$$Lambda$141/0x000000084026e040.execute(Unknown Source)
at org.igniterealtime.smack.inttest.SmackIntegrationTestFramework.runConcreteTest(SmackIntegrationTestFramework.java:551)
at org.igniterealtime.smack.inttest.SmackIntegrationTestFramework$PreparedTest.run(SmackIntegrationTestFramework.java:759)
at org.igniterealtime.smack.inttest.SmackIntegrationTestFramework.runTests(SmackIntegrationTestFramework.java:539)
at org.igniterealtime.smack.inttest.SmackIntegrationTestFramework.run(SmackIntegrationTestFramework.java:277)
- locked <0x000000062d191318> (a org.igniterealtime.smack.inttest.SmackIntegrationTestFramework)
at
org.igniterealtime.smack.inttest.SmackIntegrationTestFramework.main(SmackIntegrationTestFramework.java:115)
"Smack Cached Executor" #19 daemon prio=5 os_prio=0 cpu=7.85ms elapsed=20.48s tid=0x00007f4638a42800 nid=0x5a6b2 waiting for monitor entry [0x00007f46023fe000]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.jivesoftware.smackx.muc.MultiUserChat.userHasLeft(MultiUserChat.java:2281)
- waiting to lock <0x0000000622e19700> (a org.jivesoftware.smackx.muc.MultiUserChat)
at org.jivesoftware.smackx.muc.MultiUserChat.access$800(MultiUserChat.java:117)
at org.jivesoftware.smackx.muc.MultiUserChat$3.processStanza(MultiUserChat.java:263)
at org.jivesoftware.smack.AbstractXMPPConnection.lambda$invokeStanzaCollectorsAndNotifyRecvListeners$8(AbstractXMPPConnection.java:1654)
at org.jivesoftware.smack.AbstractXMPPConnection$$Lambda$127/0x000000084022f440.run(Unknown Source)
at org.jivesoftware.smack.AbstractXMPPConnection$10.run(AbstractXMPPConnection.java:2213)
at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@11.0.23/ThreadPoolExecutor.java:1128)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@11.0.23/ThreadPoolExecutor.java:628)
at java.lang.Thread.run(java.base@11.0.23/Thread.java:829)
The changeNickname() method was synchronized and is userHasLeft(),
this caused a deadlock since changeNickname() awaits the presence that
is send as result of the nickname change. But this presence is also
processed in a listener which invokes userHasLeft(). However, this
invocation blocks as userHasLeft() is waiting on the montior currently
hold by the thread invoking changeNickname().
To fix this, we change changeNickname() to not take the MultiUserChat
monitor, but instead use a dedicate lock.
Fixes SMACK-942. -
Florian Schmaus 1836537c42966f50d45fdf22e184e875e6cc8e84
[core] Add unit test for IQ parsing
Motivated by
https://discourse.igniterealtime.org/t/question-about-tigase-server-8-3-1-and-smack-4-4-7/93796/ -
Florian Schmaus e70d0cd858afbc4b558b85426f81b58d59b1de4d
[sinttest] Improve MultiUResultSyncPoint's TimoutException message
-
Florian Schmaus c4ce6b470795b764e8a2bcaf562ac8e9a2129bf2
[muc] Add support for muc#roomconfig_roomname in MucConfigFormManager
-
Florian Schmaus 1bf0aed0f525acc9a3910cb96a3b7dd9e0fa8162
[build.gradle] Add junit-platform-launcher add testRuntimeOnly
Fixes
NoSuchMethodError: 'java.util.Set org.junit.platform.engine.TestDescriptor.getAncestors()
when running unit tests in Eclipse.