This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch camel-4.22.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-4.22.x by this push:
     new 4a3535954699 camel-vertx-websocket: Fix flaky peer count assertions in 
VertxWebsocketTest (#26263)
4a3535954699 is described below

commit 4a35359546995daabeda7d2224a09bfbe4280763
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Sep 10 14:57:52 2026 +0200

    camel-vertx-websocket: Fix flaky peer count assertions in 
VertxWebsocketTest (#26263)
    
    VertxWebsocketTest.testSendWithMultipleConnectionKeys failed in CI with
    "expected: <5> but was: <4>". openWebSocketConnection() returns as soon as 
the
    client side of the WebSocket handshake completes, which can happen before 
the
    server side consumer has registered the peer, so asserting
    endpoint.findPeersForHostPort().size() on the next line is racy.
    
    Add an awaitConnectedPeers() helper to VertxWebSocketTestSupport that waits
    (via Awaitility, already a test dependency of the module) for the endpoint 
to
    register the expected number of peers, and use it for all six peer count
    assertions in VertxWebsocketTest that had the same race.
    
    Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
    Signed-off-by: Claus Ibsen <[email protected]>
    (cherry picked from commit e1d8cc6fee921a1b79200f993b6e6337732c7175)
    Signed-off-by: Claus Ibsen <[email protected]>
---
 .../vertx/websocket/VertxWebSocketTestSupport.java     | 17 +++++++++++++++++
 .../component/vertx/websocket/VertxWebsocketTest.java  | 18 ++++++------------
 2 files changed, 23 insertions(+), 12 deletions(-)

diff --git 
a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebSocketTestSupport.java
 
b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebSocketTestSupport.java
index e48e9e790c45..ff603c1debd7 100644
--- 
a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebSocketTestSupport.java
+++ 
b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebSocketTestSupport.java
@@ -26,6 +26,7 @@ import io.vertx.core.Handler;
 import io.vertx.core.Vertx;
 import io.vertx.core.VertxException;
 import io.vertx.core.VertxOptions;
+import io.vertx.core.http.ServerWebSocket;
 import io.vertx.core.http.WebSocket;
 import io.vertx.core.http.WebSocketClient;
 import io.vertx.core.impl.VertxInternal;
@@ -37,6 +38,9 @@ import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.test.junit6.CamelTestSupport;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
+import static org.awaitility.Awaitility.await;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 public class VertxWebSocketTestSupport extends CamelTestSupport {
 
     @RegisterExtension
@@ -69,6 +73,19 @@ public class VertxWebSocketTestSupport extends 
CamelTestSupport {
         return webSocket;
     }
 
+    /**
+     * Waits for the given endpoint to have registered the expected number of 
connected peers.
+     * <p>
+     * {@link #openWebSocketConnection(String, int, String, Consumer)} returns 
as soon as the client side of the
+     * handshake completes, which can happen before the server side consumer 
has registered the peer. Asserting the peer
+     * count immediately after opening the connections is therefore racy.
+     */
+    public Map<String, ServerWebSocket> 
awaitConnectedPeers(VertxWebsocketEndpoint endpoint, int expectedPeerCount) {
+        await().atMost(10, TimeUnit.SECONDS)
+                .untilAsserted(() -> assertEquals(expectedPeerCount, 
endpoint.findPeersForHostPort().size()));
+        return endpoint.findPeersForHostPort();
+    }
+
     public Router createRouter(String path, CountDownLatch latch) {
         return createRouter(path, null, latch);
     }
diff --git 
a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketTest.java
 
b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketTest.java
index 1184a25f6bfb..0a336cb58291 100644
--- 
a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketTest.java
+++ 
b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketTest.java
@@ -106,8 +106,7 @@ public class VertxWebsocketTest extends 
VertxWebSocketTestSupport {
 
         VertxWebsocketEndpoint endpoint
                 = context.getEndpoint("vertx-websocket:localhost:" + port + 
"/test", VertxWebsocketEndpoint.class);
-        Map<String, ServerWebSocket> connectedPeers = 
endpoint.findPeersForHostPort();
-        assertEquals(2, connectedPeers.size());
+        Map<String, ServerWebSocket> connectedPeers = 
awaitConnectedPeers(endpoint, 2);
 
         String connectionKey = connectedPeers.keySet().iterator().next();
 
@@ -165,8 +164,7 @@ public class VertxWebsocketTest extends 
VertxWebSocketTestSupport {
         VertxWebsocketEndpoint endpoint
                 = context.getEndpoint("vertx-websocket:localhost:" + port + 
"/test/paramA/other/paramB",
                         VertxWebsocketEndpoint.class);
-        Map<String, ServerWebSocket> connectedPeers = 
endpoint.findPeersForHostPort();
-        assertEquals(2, connectedPeers.size());
+        Map<String, ServerWebSocket> connectedPeers = 
awaitConnectedPeers(endpoint, 2);
 
         String connectionKey = connectedPeers.keySet().iterator().next();
 
@@ -197,8 +195,7 @@ public class VertxWebsocketTest extends 
VertxWebSocketTestSupport {
         VertxWebsocketEndpoint endpoint
                 = context.getEndpoint("vertx-websocket:localhost:" + port + 
"/test/paramA/other/paramB",
                         VertxWebsocketEndpoint.class);
-        Map<String, ServerWebSocket> connectedPeers = 
endpoint.findPeersForHostPort();
-        assertEquals(2, connectedPeers.size());
+        Map<String, ServerWebSocket> connectedPeers = 
awaitConnectedPeers(endpoint, 2);
 
         String connectionKey = connectedPeers.keySet().iterator().next();
 
@@ -236,8 +233,7 @@ public class VertxWebsocketTest extends 
VertxWebSocketTestSupport {
         VertxWebsocketEndpoint endpoint
                 = context.getEndpoint("vertx-websocket:localhost:" + port + 
"/test/wildcarded/path",
                         VertxWebsocketEndpoint.class);
-        Map<String, ServerWebSocket> connectedPeers = 
endpoint.findPeersForHostPort();
-        assertEquals(2, connectedPeers.size());
+        Map<String, ServerWebSocket> connectedPeers = 
awaitConnectedPeers(endpoint, 2);
 
         String connectionKey = connectedPeers.keySet().iterator().next();
 
@@ -274,8 +270,7 @@ public class VertxWebsocketTest extends 
VertxWebSocketTestSupport {
         VertxWebsocketEndpoint endpoint
                 = context.getEndpoint("vertx-websocket:localhost:" + port + 
"/test/wildcarded/path",
                         VertxWebsocketEndpoint.class);
-        Map<String, ServerWebSocket> connectedPeers = 
endpoint.findPeersForHostPort();
-        assertEquals(2, connectedPeers.size());
+        Map<String, ServerWebSocket> connectedPeers = 
awaitConnectedPeers(endpoint, 2);
 
         String connectionKey = connectedPeers.keySet().iterator().next();
 
@@ -316,8 +311,7 @@ public class VertxWebsocketTest extends 
VertxWebSocketTestSupport {
 
         VertxWebsocketEndpoint endpoint
                 = context.getEndpoint("vertx-websocket:localhost:" + port + 
"/test", VertxWebsocketEndpoint.class);
-        Map<String, ServerWebSocket> connectedPeers = 
endpoint.findPeersForHostPort();
-        assertEquals(5, connectedPeers.size());
+        Map<String, ServerWebSocket> connectedPeers = 
awaitConnectedPeers(endpoint, 5);
 
         StringJoiner joiner = new StringJoiner(",");
         Iterator<String> iterator = connectedPeers.keySet().iterator();

Reply via email to