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

jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 0e1faf0d33f70af5983d1e4b498df8587f653005
Author: James Netherton <jamesnether...@gmail.com>
AuthorDate: Thu Mar 2 14:19:32 2023 +0000

    camel-vertx-websocket: Fix flaky tests
---
 .../vertx/websocket/VertxWebSocketEventTest.java   |  9 ++--
 ...WebsocketConsumerAsClientMaxReconnectTest.java} | 49 ++--------------------
 ...ertxWebsocketConsumerAsClientReconnectTest.java | 42 -------------------
 3 files changed, 10 insertions(+), 90 deletions(-)

diff --git 
a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebSocketEventTest.java
 
b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebSocketEventTest.java
index ec581d33730..e980c651b6d 100644
--- 
a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebSocketEventTest.java
+++ 
b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebSocketEventTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.vertx.websocket;
 
+import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
@@ -34,7 +35,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 public class VertxWebSocketEventTest extends VertxWebSocketTestSupport {
 
     private static final String MESSAGE_BODY = "Hello World";
-    private ServerWebSocket webSocket;
+    private final CompletableFuture<ServerWebSocket> webSocketFuture = new 
CompletableFuture<>();
 
     @BindToRegistry("serverOptions")
     public HttpServerOptions serverOptions() {
@@ -46,10 +47,12 @@ public class VertxWebSocketEventTest extends 
VertxWebSocketTestSupport {
     @Test
     void webSocketEvents() throws Exception {
         MockEndpoint mockEndpoint = getMockEndpoint("mock:result");
-        mockEndpoint.expectedBodiesReceived("WebSocket Open", "WebSocket 
Message", "WebSocket Error", "WebSocket Close");
+        mockEndpoint.expectedBodiesReceivedInAnyOrder("WebSocket Open", 
"WebSocket Message", "WebSocket Error",
+                "WebSocket Close");
 
         template.sendBody("vertx-websocket:localhost:" + port + "/test", 
MESSAGE_BODY);
 
+        ServerWebSocket webSocket = webSocketFuture.get(5000, 
TimeUnit.SECONDS);
         assertNotNull(webSocket);
 
         // Trigger error event (message length > max allowed)
@@ -82,7 +85,7 @@ public class VertxWebSocketEventTest extends 
VertxWebSocketTestSupport {
                         .when(simple("${header.CamelVertxWebsocket.event} == 
'OPEN'"))
                         .process(exchange -> {
                             Message message = exchange.getMessage();
-                            webSocket = message.getBody(ServerWebSocket.class);
+                            
webSocketFuture.complete(message.getBody(ServerWebSocket.class));
                         })
                         .setBody().constant("WebSocket Open")
                         .to("mock:result")
diff --git 
a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketConsumerAsClientReconnectTest.java
 
b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketConsumerAsClientMaxReconnectTest.java
similarity index 66%
copy from 
components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketConsumerAsClientReconnectTest.java
copy to 
components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketConsumerAsClientMaxReconnectTest.java
index 1805dae64f3..789dacbdf7c 100644
--- 
a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketConsumerAsClientReconnectTest.java
+++ 
b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketConsumerAsClientMaxReconnectTest.java
@@ -26,47 +26,10 @@ import org.apache.camel.component.mock.MockEndpoint;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
-public class VertxWebsocketConsumerAsClientReconnectTest extends 
VertxWebSocketTestSupport {
-    @Test
-    void testReconnect() throws Exception {
-        MockEndpoint mockEndpoint = getMockEndpoint("mock:result");
-        mockEndpoint.expectedBodiesReceived("Hello World");
-
-        String uri = String.format("vertx-websocket:localhost:%d/echo", port);
-        template.sendBody(uri, "Hello World");
-        mockEndpoint.assertIsSatisfied();
-
-        // Stop server
-        mockEndpoint.reset();
-        mockEndpoint.expectedBodiesReceived("Hello World Again");
-
-        context.getRouteController().stopRoute("server");
-
-        // Verify that we cannot send messages
-        Exchange exchange = template.send(uri, new Processor() {
-            @Override
-            public void process(Exchange exchange) throws Exception {
-                exchange.getMessage().setBody("Hello World Again");
-            }
-        });
-        Exception exception = exchange.getException();
-        Assertions.assertNotNull(exception);
-        Assertions.assertInstanceOf(ConnectException.class, 
exception.getCause());
-
-        // Restart server
-        context.getRouteController().startRoute("server");
-
-        // Wait for client consumer reconnect
-        Thread.sleep(300);
-
-        // Verify that the client consumer reconnected
-        template.sendBody(uri, "Hello World Again");
-        mockEndpoint.assertIsSatisfied();
-    }
-
+public class VertxWebsocketConsumerAsClientMaxReconnectTest extends 
VertxWebSocketTestSupport {
     @Test
     void testMaxReconnect() throws Exception {
-        MockEndpoint mockEndpoint = getMockEndpoint("mock:result2");
+        MockEndpoint mockEndpoint = getMockEndpoint("mock:result");
         mockEndpoint.expectedBodiesReceived("Hello World");
 
         String uri = String.format("vertx-websocket:localhost:%d/echo", port);
@@ -110,14 +73,10 @@ public class VertxWebsocketConsumerAsClientReconnectTest 
extends VertxWebSocketT
                         .log("Server consumer: Received message: ${body}")
                         
.toF("vertx-websocket:localhost:%d/echo?sendToAll=true", port);
 
-                
fromF("vertx-websocket:localhost:%d/echo?consumeAsClient=true&reconnectInterval=10",
 port)
-                        .log("Client consumer 1: Received message: ${body}")
-                        .to("mock:result");
-
                 
fromF("vertx-websocket:localhost:%d/echo?consumeAsClient=true&reconnectInterval=10&maxReconnectAttempts=1",
                         port)
-                        .log("Client consumer 2: Received message: ${body}")
-                        .to("mock:result2");
+                        .log("Client consumer 1: Received message: ${body}")
+                        .to("mock:result");
             }
         };
     }
diff --git 
a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketConsumerAsClientReconnectTest.java
 
b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketConsumerAsClientReconnectTest.java
index 1805dae64f3..e452f85e1a9 100644
--- 
a/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketConsumerAsClientReconnectTest.java
+++ 
b/components/camel-vertx/camel-vertx-websocket/src/test/java/org/apache/camel/component/vertx/websocket/VertxWebsocketConsumerAsClientReconnectTest.java
@@ -64,43 +64,6 @@ public class VertxWebsocketConsumerAsClientReconnectTest 
extends VertxWebSocketT
         mockEndpoint.assertIsSatisfied();
     }
 
-    @Test
-    void testMaxReconnect() throws Exception {
-        MockEndpoint mockEndpoint = getMockEndpoint("mock:result2");
-        mockEndpoint.expectedBodiesReceived("Hello World");
-
-        String uri = String.format("vertx-websocket:localhost:%d/echo", port);
-        template.sendBody(uri, "Hello World");
-        mockEndpoint.assertIsSatisfied();
-
-        // Stop server
-        mockEndpoint.reset();
-        mockEndpoint.expectedMessageCount(0);
-
-        context.getRouteController().stopRoute("server");
-
-        // Verify that we cannot send messages
-        Exchange exchange = template.send(uri, new Processor() {
-            @Override
-            public void process(Exchange exchange) throws Exception {
-                exchange.getMessage().setBody("Hello World Again");
-            }
-        });
-        Exception exception = exchange.getException();
-        Assertions.assertNotNull(exception);
-        Assertions.assertInstanceOf(ConnectException.class, 
exception.getCause());
-
-        // Wait for client consumer reconnect max attempts to be exhausted
-        Thread.sleep(300);
-
-        // Restart server
-        context.getRouteController().startRoute("server");
-
-        // Verify that the client consumer gave up reconnecting
-        template.sendBody(uri, "Hello World Again");
-        mockEndpoint.assertIsSatisfied();
-    }
-
     @Override
     protected RoutesBuilder createRouteBuilder() {
         return new RouteBuilder() {
@@ -113,11 +76,6 @@ public class VertxWebsocketConsumerAsClientReconnectTest 
extends VertxWebSocketT
                 
fromF("vertx-websocket:localhost:%d/echo?consumeAsClient=true&reconnectInterval=10",
 port)
                         .log("Client consumer 1: Received message: ${body}")
                         .to("mock:result");
-
-                
fromF("vertx-websocket:localhost:%d/echo?consumeAsClient=true&reconnectInterval=10&maxReconnectAttempts=1",
-                        port)
-                        .log("Client consumer 2: Received message: ${body}")
-                        .to("mock:result2");
             }
         };
     }

Reply via email to