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

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

commit f16bbd11f00e9b4486245ade681b9ff437efc1a0
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 8c1237ffc57..fd1c03332da 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 63%
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 81e7d56a218..d1c893d65f7 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 81e7d56a218..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