From 6a03bdb9fed56651517677339ea029a08ed9988e Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Tue, 5 Nov 2024 11:20:40 +0100 Subject: [PATCH] [integration-test] Check that connections are connected for normal integration tests --- .../inttest/SmackIntegrationTestFramework.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/smack-integration-test/src/main/java/org/igniterealtime/smack/inttest/SmackIntegrationTestFramework.java b/smack-integration-test/src/main/java/org/igniterealtime/smack/inttest/SmackIntegrationTestFramework.java index 0d6cf1c971..71961aec9c 100644 --- a/smack-integration-test/src/main/java/org/igniterealtime/smack/inttest/SmackIntegrationTestFramework.java +++ b/smack-integration-test/src/main/java/org/igniterealtime/smack/inttest/SmackIntegrationTestFramework.java @@ -48,6 +48,7 @@ import java.util.TreeSet; import java.util.logging.Level; import java.util.logging.Logger; +import java.util.stream.Collectors; import org.jivesoftware.smack.AbstractXMPPConnection; import org.jivesoftware.smack.ConnectionConfiguration; @@ -57,6 +58,7 @@ import org.jivesoftware.smack.SmackException; import org.jivesoftware.smack.SmackException.NoResponseException; import org.jivesoftware.smack.SmackException.NotConnectedException; +import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smack.XMPPException.XMPPErrorException; import org.jivesoftware.smack.util.StringUtils; @@ -483,7 +485,13 @@ private void runTests(Set> classes) for (Method testMethod : smackIntegrationTestMethods) { switch (testType) { case Normal: { - ConcreteTest.Executor concreteTestExecutor = () -> testMethod.invoke(test); + ConcreteTest.Executor concreteTestExecutor = () -> { + AbstractSmackIntegrationTest abstractTest = (AbstractSmackIntegrationTest) test; + + throwIfDisconnectedConnections(abstractTest, testMethod, "Cannot execute test of"); + testMethod.invoke(test); + throwIfDisconnectedConnections(abstractTest, testMethod, "There where disconnected connections after executing"); + }; ConcreteTest concreteTest = new ConcreteTest(testType, testMethod, concreteTestExecutor); concreteTests.add(concreteTest); } @@ -1111,4 +1119,12 @@ static TestMethodParameterType determineTestMethodParameterType(Method testMetho return null; } + private static void throwIfDisconnectedConnections(AbstractSmackIntegrationTest abstractTest, Method testMethod, String message) throws IOException { + List disconnectedConnections = abstractTest.connections.stream().filter(c -> !c.isConnected()).collect(Collectors.toList()); + if (disconnectedConnections.isEmpty()) return; + + throw new IOException(message + " " + testMethod.getDeclaringClass().getSimpleName() + "." + + testMethod.getName() + ", as not all connections are connected. Disconnected connections: " + + disconnectedConnections); + } }