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


Reply via email to