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"); } }; }