This is an automated email from the ASF dual-hosted git repository. clebertsuconic pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
commit 812e78e713c580512b0ce38987590051af6fca8a Author: Clebert Suconic <[email protected]> AuthorDate: Fri Nov 22 14:54:04 2024 -0500 ARTEMIS-5173 Improving reliability on SymmetricClusterWithDiscoveryTest::testStartStopServers --- .../cluster/distribution/ClusterTestBase.java | 2 +- .../cluster/distribution/SymmetricClusterTest.java | 24 ++++++++++++++++++++++ .../SymmetricClusterWithDiscoveryTest.java | 7 +++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/ClusterTestBase.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/ClusterTestBase.java index 3a7e87117a..c9b6ee1251 100644 --- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/ClusterTestBase.java +++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/ClusterTestBase.java @@ -123,7 +123,7 @@ public abstract class ClusterTestBase extends ActiveMQTestBase { return false; } - private static final long TIMEOUT_START_SERVER = 10; + private static final long TIMEOUT_START_SERVER = 1000; private static final SimpleString COUNT_PROP = SimpleString.of("count_prop"); diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/SymmetricClusterTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/SymmetricClusterTest.java index a5f3b33c91..63c51eb8c4 100644 --- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/SymmetricClusterTest.java +++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/SymmetricClusterTest.java @@ -16,14 +16,18 @@ */ package org.apache.activemq.artemis.tests.integration.cluster.distribution; +import static org.junit.jupiter.api.Assertions.assertNotNull; + import java.lang.invoke.MethodHandles; import org.apache.activemq.artemis.api.core.RoutingType; import org.apache.activemq.artemis.api.core.SimpleString; +import org.apache.activemq.artemis.core.server.cluster.ClusterConnection; import org.apache.activemq.artemis.core.server.cluster.impl.MessageLoadBalancingType; import org.apache.activemq.artemis.core.server.impl.AddressInfo; import org.apache.activemq.artemis.core.settings.impl.AddressSettings; import org.apache.activemq.artemis.tests.util.ActiveMQTestBase; +import org.apache.activemq.artemis.tests.util.Wait; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.slf4j.Logger; @@ -1395,6 +1399,18 @@ public class SymmetricClusterTest extends ClusterTestBase { doTestStartStopServers(1, 3000); } + protected void validateTopologSize(int expectedSize, int... serverParameters) throws Exception { + for (int s : serverParameters) { + logger.debug("Checking topology size on node {}, expecting it to be {}", s, expectedSize); + + assertNotNull(servers[s], "Server[" + s + "] is null"); + + for (ClusterConnection c : servers[s].getClusterManager().getClusterConnections()) { + Wait.assertEquals(expectedSize, () -> c.getTopology().getMembers().size(), 5000); + } + } + } + public void doTestStartStopServers(long pauseBeforeServerRestarts, long pauseAfterServerRestarts) throws Exception { setupCluster(); @@ -1406,6 +1422,8 @@ public class SymmetricClusterTest extends ClusterTestBase { setupSessionFactory(3, isNetty()); setupSessionFactory(4, isNetty()); + validateTopologSize(5, 0, 1, 2, 3, 4); + createQueue(0, "queues.testaddress", "queue0", null, false); createQueue(1, "queues.testaddress", "queue1", null, false); createQueue(2, "queues.testaddress", "queue2", null, false); @@ -1519,13 +1537,19 @@ public class SymmetricClusterTest extends ClusterTestBase { Thread.sleep(pauseBeforeServerRestarts); + validateTopologSize(3, 1, 2, 4); + startServers(3, 0); Thread.sleep(pauseAfterServerRestarts); + validateTopologSize(5, 0, 1, 2, 3, 4); + setupSessionFactory(0, isNetty()); setupSessionFactory(3, isNetty()); + validateTopologSize(5, 0, 1, 2, 3, 4); + createQueue(0, "queues.testaddress", "queue0", null, false); createQueue(3, "queues.testaddress", "queue3", null, false); diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/SymmetricClusterWithDiscoveryTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/SymmetricClusterWithDiscoveryTest.java index 1c02cc6816..2f8f0e3f4d 100644 --- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/SymmetricClusterWithDiscoveryTest.java +++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/SymmetricClusterWithDiscoveryTest.java @@ -31,6 +31,13 @@ public class SymmetricClusterWithDiscoveryTest extends SymmetricClusterTest { return false; } + @Override + @Test + public void testStartStopServers() throws Exception { + // When using discovery starting and stopping it too fast could have a race condition with UDP + doTestStartStopServers(3000, 3000); + } + @Override protected void setupCluster() throws Exception { setupCluster(MessageLoadBalancingType.ON_DEMAND); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected] For further information, visit: https://activemq.apache.org/contact
