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


The following commit(s) were added to refs/heads/main by this push:
     new ef4501292e ARTEMIS-4252 Fix flaky QuorumFailOverTest tests
ef4501292e is described below

commit ef4501292e69b782dd5eafc28e68ed24aaf463fc
Author: Domenico Francesco Bruscino <brus...@apache.org>
AuthorDate: Sat Apr 22 20:24:37 2023 +0200

    ARTEMIS-4252 Fix flaky QuorumFailOverTest tests
---
 .../artemis/core/server/cluster/ClusterConnection.java      |  2 ++
 .../core/server/cluster/impl/ClusterConnectionImpl.java     |  5 +++++
 .../activemq/artemis/tests/util/ActiveMQTestBase.java       | 13 +++++++++++++
 .../integration/cluster/failover/QuorumFailOverTest.java    |  2 ++
 4 files changed, 22 insertions(+)

diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ClusterConnection.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ClusterConnection.java
index 306d4da334..6555382601 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ClusterConnection.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ClusterConnection.java
@@ -89,6 +89,8 @@ public interface ClusterConnection extends ActiveMQComponent, 
ClusterTopologyLis
 
    long getCallTimeout();
 
+   Bridge[] getBridges();
+
    /**
     * The metric for this cluster connection
     *
diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/impl/ClusterConnectionImpl.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/impl/ClusterConnectionImpl.java
index 77a718ffee..cde1d5e826 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/impl/ClusterConnectionImpl.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/impl/ClusterConnectionImpl.java
@@ -630,6 +630,11 @@ public final class ClusterConnectionImpl implements 
ClusterConnection, AfterConn
       return callTimeout;
    }
 
+   @Override
+   public Bridge[] getBridges() {
+      return 
records.values().stream().map(MessageFlowRecord::getBridge).toArray(Bridge[]::new);
+   }
+
    @Override
    public Map<String, String> getNodes() {
       synchronized (recordsGuard) {
diff --git 
a/artemis-server/src/test/java/org/apache/activemq/artemis/tests/util/ActiveMQTestBase.java
 
b/artemis-server/src/test/java/org/apache/activemq/artemis/tests/util/ActiveMQTestBase.java
index 1cef31179a..3f828a2de7 100644
--- 
a/artemis-server/src/test/java/org/apache/activemq/artemis/tests/util/ActiveMQTestBase.java
+++ 
b/artemis-server/src/test/java/org/apache/activemq/artemis/tests/util/ActiveMQTestBase.java
@@ -41,6 +41,7 @@ import java.lang.ref.WeakReference;
 import java.sql.DriverManager;
 import java.sql.SQLException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -120,6 +121,7 @@ import org.apache.activemq.artemis.core.server.JournalType;
 import org.apache.activemq.artemis.core.server.MessageReference;
 import org.apache.activemq.artemis.core.server.NodeManager;
 import org.apache.activemq.artemis.core.server.Queue;
+import org.apache.activemq.artemis.core.server.cluster.Bridge;
 import org.apache.activemq.artemis.core.server.cluster.ClusterConnection;
 import org.apache.activemq.artemis.core.server.cluster.ClusterManager;
 import org.apache.activemq.artemis.core.server.cluster.RemoteQueueBinding;
@@ -1328,6 +1330,17 @@ public abstract class ActiveMQTestBase extends Assert {
       }
    }
 
+   protected static final void waitForBridges(final ActiveMQServer server, int 
connectedBridges) throws Exception {
+      waitForBridges(server.getClusterManager().getDefaultConnection(null), 
connectedBridges);
+   }
+
+   protected static final void waitForBridges(ClusterConnection 
clusterConnection, int connectedBridges) throws Exception {
+      Bridge[] bridges = clusterConnection.getBridges();
+
+      Wait.assertTrue(() -> Arrays.stream(clusterConnection.getBridges())
+         .filter(bridge -> bridge.isConnected()).count() >= connectedBridges);
+   }
+
    protected static final Map<String, Object> generateParams(final int node, 
final boolean netty) {
       Map<String, Object> params = new HashMap<>();
 
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/QuorumFailOverTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/QuorumFailOverTest.java
index 4f4253a74b..28f0e71abb 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/QuorumFailOverTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/QuorumFailOverTest.java
@@ -66,6 +66,7 @@ public class QuorumFailOverTest extends 
StaticClusterWithBackupFailoverTest {
       startServers(3, 4, 5);
 
       for (int i : liveServerIDs) {
+         waitForBridges(servers[i], 2);
          waitForTopology(servers[i], 3, 3);
       }
 
@@ -122,6 +123,7 @@ public class QuorumFailOverTest extends 
StaticClusterWithBackupFailoverTest {
       }
 
       for (int i : liveServerIDs) {
+         waitForBridges(servers[i], 2);
          waitForTopology(servers[i], 3, 3);
       }
 

Reply via email to