This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new ae46225d66dc Speedup test for camel-atmosphere-websocket. Move tests
to individual classes to avoid setting up too many atmosphere that are not used
anyway in a test method. (#19681)
ae46225d66dc is described below
commit ae46225d66dcd7efc6350ec110c597c62e374aec
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Oct 23 20:37:37 2025 +0200
Speedup test for camel-atmosphere-websocket. Move tests to individual
classes to avoid setting up too many atmosphere that are not used anyway in a
test method. (#19681)
---
...cketRouteTest.java => WebsocketRoute1Test.java} | 88 +-----------
.../WebsocketRoute1WithInitParamTest.java | 103 ++++++++++++++
...cketRouteTest.java => WebsocketRoute2Test.java} | 88 +-----------
.../WebsocketRoute2WithInitParamTest.java | 157 +++++++++++++++++++++
...cketRouteTest.java => WebsocketRoute3Test.java} | 88 +-----------
....java => WebsocketRoute3WithInitParamTest.java} | 148 +------------------
...cketRouteTest.java => WebsocketRoute4Test.java} | 109 +-------------
7 files changed, 267 insertions(+), 514 deletions(-)
diff --git
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRouteTest.java
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute1Test.java
similarity index 60%
copy from
components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRouteTest.java
copy to
components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute1Test.java
index 85c718da08e3..d7c9fbd5d519 100644
---
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRouteTest.java
+++
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute1Test.java
@@ -31,10 +31,9 @@ import org.apache.camel.util.IOHelper;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
-public class WebsocketRouteTest extends WebsocketCamelRouterTestSupport {
+public class WebsocketRoute1Test extends WebsocketCamelRouterTestSupport {
private static final String RESPONSE_GREETING = "Hola ";
private static final byte[] RESPONSE_GREETING_BYTES = { 0x48, 0x6f, 0x6c,
0x61, 0x20 };
@@ -66,70 +65,6 @@ public class WebsocketRouteTest extends
WebsocketCamelRouterTestSupport {
wsclient.close();
}
- @Test
- void testWebsocketSingleClientForReader() throws Exception {
- WebsocketTestClient wsclient = new
WebsocketTestClient("ws://localhost:" + PORT + "/hola3");
- wsclient.connect();
-
- wsclient.sendTextMessage("Cerveza");
-
- assertTrue(wsclient.await(10));
- List<String> received = wsclient.getReceived(String.class);
- assertEquals(1, received.size());
- assertEquals("Hola Cerveza", received.get(0));
- wsclient.close();
- }
-
- @Test
- void testWebsocketSingleClientForInputStream() throws Exception {
- WebsocketTestClient wsclient = new
WebsocketTestClient("ws://localhost:" + PORT + "/hola3");
- wsclient.connect();
-
- wsclient.sendBytesMessage("Cerveza".getBytes("UTF-8"));
-
- assertTrue(wsclient.await(10));
- List<String> received = wsclient.getReceived(String.class);
- assertEquals(1, received.size());
- assertEquals("Hola Cerveza", received.get(0));
- wsclient.close();
- }
-
- @Test
- void testWebsocketBroadcastClient() throws Exception {
- WebsocketTestClient wsclient1 = new
WebsocketTestClient("ws://localhost:" + PORT + "/broadcast", 2);
- WebsocketTestClient wsclient2 = new
WebsocketTestClient("ws://localhost:" + PORT + "/broadcast", 2);
- wsclient1.connect();
- wsclient2.connect();
-
- wsclient1.sendTextMessage("Gambas");
- wsclient2.sendTextMessage("Calamares");
-
- assertTrue(wsclient1.await(10));
- assertTrue(wsclient2.await(10));
-
- List<String> received1 = wsclient1.getReceived(String.class);
- assertEquals(2, received1.size());
-
- assertTrue(received1.contains("Hola Gambas"));
- assertTrue(received1.contains("Hola Calamares"));
-
- List<String> received2 = wsclient2.getReceived(String.class);
- assertEquals(2, received2.size());
- assertTrue(received2.contains("Hola Gambas"));
- assertTrue(received2.contains("Hola Calamares"));
-
- wsclient1.close();
- wsclient2.close();
- }
-
- @Test
- void testWebsocketEventsResendingDisabled() throws Exception {
- WebsocketTestClient wsclient = new
WebsocketTestClient("ws://localhost:" + PORT + "/hola4");
- wsclient.connect();
- assertFalse(wsclient.await(10));
- wsclient.close();
- }
-
// START SNIPPET: payload
@Override
protected RouteBuilder createRouteBuilder() {
@@ -141,27 +76,6 @@ public class WebsocketRouteTest extends
WebsocketCamelRouterTestSupport {
createResponse(exchange, false);
}
}).to("atmosphere-websocket:///hola");
-
- // route for a broadcast line
-
from("atmosphere-websocket:///broadcast").to("log:info").process(new
Processor() {
- public void process(final Exchange exchange) {
- createResponse(exchange, false);
- }
- }).to("atmosphere-websocket:///broadcast?sendToAll=true");
-
- // route for a single stream line
-
from("atmosphere-websocket:///hola3?useStreaming=true").to("log:info").process(new
Processor() {
- public void process(final Exchange exchange) {
- createResponse(exchange, true);
- }
- }).to("atmosphere-websocket:///hola3");
-
- // route for events resending disabled
-
from("atmosphere-websocket:///hola4").to("log:info").process(new Processor() {
- public void process(final Exchange exchange) {
- checkEventsResendingDisabled(exchange);
- }
- }).to("atmosphere-websocket:///hola4");
}
};
}
diff --git
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute1WithInitParamTest.java
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute1WithInitParamTest.java
new file mode 100644
index 000000000000..a10f061ff070
--- /dev/null
+++
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute1WithInitParamTest.java
@@ -0,0 +1,103 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.atmosphere.websocket;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.infra.common.http.WebsocketTestClient;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class WebsocketRoute1WithInitParamTest extends
WebsocketCamelRouterWithInitParamTestSupport {
+
+ private void runtTest(String s) {
+ WebsocketTestClient wsclient = new
WebsocketTestClient("ws://localhost:" + PORT + s);
+ wsclient.connect();
+ wsclient.close();
+ }
+
+ @Test
+ void testWebsocketEventsResendingEnabled() {
+ assertDoesNotThrow(() -> runtTest("/hola"));
+
+ }
+
+ @Test
+ void testPassParametersWebsocketOnOpen() {
+ assertDoesNotThrow(() ->
runtTest("/hola1?param1=value1¶m2=value2"));
+ }
+
+ // START SNIPPET: payload
+ @Override
+ protected RouteBuilder createRouteBuilder() {
+ return new RouteBuilder() {
+ public void configure() {
+ // route for events resending enabled
+
from("atmosphere-websocket:///hola").to("log:info").process(new Processor() {
+ public void process(final Exchange exchange) {
+ checkEventsResendingEnabled(exchange);
+ }
+ });
+
+ // route for events resending enabled
+
from("atmosphere-websocket:///hola1").to("log:info").process(new Processor() {
+ public void process(final Exchange exchange) {
+ checkPassedParameters(exchange);
+ }
+ });
+ }
+ };
+ }
+
+ private static void checkEventsResendingEnabled(Exchange exchange) {
+ Object connectionKey =
exchange.getIn().getHeader(WebsocketConstants.CONNECTION_KEY);
+ Object eventType =
exchange.getIn().getHeader(WebsocketConstants.EVENT_TYPE);
+ Object msg = exchange.getIn().getBody();
+
+ assertNull(msg);
+ assertNotNull(connectionKey);
+
+ if (eventType instanceof Integer) {
+ assertTrue(eventType.equals(WebsocketConstants.ONOPEN_EVENT_TYPE)
+ || eventType.equals(WebsocketConstants.ONCLOSE_EVENT_TYPE)
+ ||
eventType.equals(WebsocketConstants.ONERROR_EVENT_TYPE));
+ }
+ }
+
+ private static void checkPassedParameters(Exchange exchange) {
+ Object connectionKey =
exchange.getIn().getHeader(WebsocketConstants.CONNECTION_KEY);
+ Object eventType =
exchange.getIn().getHeader(WebsocketConstants.EVENT_TYPE);
+ Object msg = exchange.getIn().getBody();
+
+ assertNull(msg);
+ assertNotNull(connectionKey);
+
+ if (eventType instanceof Integer &&
eventType.equals(WebsocketConstants.ONOPEN_EVENT_TYPE)) {
+
+ String param1 = (String) exchange.getIn().getHeader("param1");
+ String param2 = (String) exchange.getIn().getHeader("param2");
+
+ assertTrue(param1.equals("value1") && param2.equals("value2"));
+ }
+ }
+ // END SNIPPET: payload
+}
diff --git
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRouteTest.java
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute2Test.java
similarity index 61%
copy from
components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRouteTest.java
copy to
components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute2Test.java
index 85c718da08e3..f2730c1f1237 100644
---
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRouteTest.java
+++
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute2Test.java
@@ -31,69 +31,12 @@ import org.apache.camel.util.IOHelper;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
-public class WebsocketRouteTest extends WebsocketCamelRouterTestSupport {
+public class WebsocketRoute2Test extends WebsocketCamelRouterTestSupport {
private static final String RESPONSE_GREETING = "Hola ";
private static final byte[] RESPONSE_GREETING_BYTES = { 0x48, 0x6f, 0x6c,
0x61, 0x20 };
- @Test
- void testWebsocketSingleClient() throws Exception {
- WebsocketTestClient wsclient = new
WebsocketTestClient("ws://localhost:" + PORT + "/hola");
- wsclient.connect();
-
- wsclient.sendTextMessage("Cerveza");
-
- assertTrue(wsclient.await(10));
- List<String> received = wsclient.getReceived(String.class);
- assertEquals(1, received.size());
- assertEquals("Hola Cerveza", received.get(0));
- wsclient.close();
- }
-
- @Test
- void testWebsocketSingleClientForBytes() throws Exception {
- WebsocketTestClient wsclient = new
WebsocketTestClient("ws://localhost:" + PORT + "/hola");
- wsclient.connect();
-
- wsclient.sendBytesMessage("Cerveza".getBytes("UTF-8"));
-
- assertTrue(wsclient.await(10));
- List<String> received = wsclient.getReceived(String.class);
- assertEquals(1, received.size());
- assertEquals("Hola Cerveza", received.get(0));
- wsclient.close();
- }
-
- @Test
- void testWebsocketSingleClientForReader() throws Exception {
- WebsocketTestClient wsclient = new
WebsocketTestClient("ws://localhost:" + PORT + "/hola3");
- wsclient.connect();
-
- wsclient.sendTextMessage("Cerveza");
-
- assertTrue(wsclient.await(10));
- List<String> received = wsclient.getReceived(String.class);
- assertEquals(1, received.size());
- assertEquals("Hola Cerveza", received.get(0));
- wsclient.close();
- }
-
- @Test
- void testWebsocketSingleClientForInputStream() throws Exception {
- WebsocketTestClient wsclient = new
WebsocketTestClient("ws://localhost:" + PORT + "/hola3");
- wsclient.connect();
-
- wsclient.sendBytesMessage("Cerveza".getBytes("UTF-8"));
-
- assertTrue(wsclient.await(10));
- List<String> received = wsclient.getReceived(String.class);
- assertEquals(1, received.size());
- assertEquals("Hola Cerveza", received.get(0));
- wsclient.close();
- }
-
@Test
void testWebsocketBroadcastClient() throws Exception {
WebsocketTestClient wsclient1 = new
WebsocketTestClient("ws://localhost:" + PORT + "/broadcast", 2);
@@ -122,46 +65,17 @@ public class WebsocketRouteTest extends
WebsocketCamelRouterTestSupport {
wsclient2.close();
}
- @Test
- void testWebsocketEventsResendingDisabled() throws Exception {
- WebsocketTestClient wsclient = new
WebsocketTestClient("ws://localhost:" + PORT + "/hola4");
- wsclient.connect();
- assertFalse(wsclient.await(10));
- wsclient.close();
- }
-
// START SNIPPET: payload
@Override
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
- // route for a single line
-
from("atmosphere-websocket:///hola").to("log:info").process(new Processor() {
- public void process(final Exchange exchange) {
- createResponse(exchange, false);
- }
- }).to("atmosphere-websocket:///hola");
-
// route for a broadcast line
from("atmosphere-websocket:///broadcast").to("log:info").process(new
Processor() {
public void process(final Exchange exchange) {
createResponse(exchange, false);
}
}).to("atmosphere-websocket:///broadcast?sendToAll=true");
-
- // route for a single stream line
-
from("atmosphere-websocket:///hola3?useStreaming=true").to("log:info").process(new
Processor() {
- public void process(final Exchange exchange) {
- createResponse(exchange, true);
- }
- }).to("atmosphere-websocket:///hola3");
-
- // route for events resending disabled
-
from("atmosphere-websocket:///hola4").to("log:info").process(new Processor() {
- public void process(final Exchange exchange) {
- checkEventsResendingDisabled(exchange);
- }
- }).to("atmosphere-websocket:///hola4");
}
};
}
diff --git
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute2WithInitParamTest.java
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute2WithInitParamTest.java
new file mode 100644
index 000000000000..030d1031fc8d
--- /dev/null
+++
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute2WithInitParamTest.java
@@ -0,0 +1,157 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.atmosphere.websocket;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.infra.common.http.WebsocketTestClient;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class WebsocketRoute2WithInitParamTest extends
WebsocketCamelRouterWithInitParamTestSupport {
+
+ private static final String[] EXISTED_USERS = { "Kim", "Pavlo", "Peter" };
+ private static String[] broadcastMessageTo = {};
+ private static Map<String, String> connectionKeyUserMap = new HashMap<>();
+
+ @Test
+ void testWebsocketSingleClientBroadcastMultipleClients() throws Exception {
+ final int awaitTime = 2;
+ connectionKeyUserMap.clear();
+
+ WebsocketTestClient wsclient1 = new
WebsocketTestClient("ws://localhost:" + PORT + "/broadcast", 2);
+ WebsocketTestClient wsclient2 = new
WebsocketTestClient("ws://localhost:" + PORT + "/broadcast", 2);
+ WebsocketTestClient wsclient3 = new
WebsocketTestClient("ws://localhost:" + PORT + "/broadcast", 2);
+
+ wsclient1.connect();
+ wsclient1.await(awaitTime);
+
+ wsclient2.connect();
+ wsclient2.await(awaitTime);
+
+ wsclient3.connect();
+ wsclient3.await(awaitTime);
+
+ //all connections were registered in external store
+ assertEquals(EXISTED_USERS.length, connectionKeyUserMap.size());
+
+ broadcastMessageTo = new String[] { EXISTED_USERS[0], EXISTED_USERS[1]
};
+
+ wsclient1.sendTextMessage("Gambas");
+ wsclient1.await(awaitTime);
+
+ List<String> received1 = wsclient1.getReceived(String.class);
+ assertEquals(1, received1.size());
+
+ for (String element : broadcastMessageTo) {
+ assertTrue(received1.get(0).contains(element));
+ }
+
+ List<String> received2 = wsclient2.getReceived(String.class);
+ assertEquals(1, received2.size());
+ for (String element : broadcastMessageTo) {
+ assertTrue(received2.get(0).contains(element));
+ }
+
+ List<String> received3 = wsclient3.getReceived(String.class);
+ assertEquals(0, received3.size());
+
+ wsclient1.close();
+ wsclient2.close();
+ wsclient3.close();
+ }
+
+ // START SNIPPET: payload
+ @Override
+ protected RouteBuilder createRouteBuilder() {
+ return new RouteBuilder() {
+ public void configure() {
+ // route for single client broadcast to multiple clients
+ from("atmosphere-websocket:///broadcast").to("log:info")
+ .choice()
+
.when(header(WebsocketConstants.EVENT_TYPE).isEqualTo(WebsocketConstants.ONOPEN_EVENT_TYPE))
+ .process(new Processor() {
+ public void process(final Exchange exchange) {
+ createExternalConnectionRegister(exchange);
+ }
+ })
+
.when(header(WebsocketConstants.EVENT_TYPE).isEqualTo(WebsocketConstants.ONCLOSE_EVENT_TYPE))
+ .process(new Processor() {
+ public void process(final Exchange exchange) {
+ removeExternalConnectionRegister();
+ }
+ })
+
.when(header(WebsocketConstants.EVENT_TYPE).isEqualTo(WebsocketConstants.ONERROR_EVENT_TYPE))
+ .process(new Processor() {
+ public void process(final Exchange exchange) {
+ removeExternalConnectionRegister();
+ }
+ })
+ .otherwise()
+ .process(new Processor() {
+ public void process(final Exchange exchange) {
+
createBroadcastMultipleClientsResponse(exchange);
+ }
+ }).to("atmosphere-websocket:///broadcast");
+ }
+ };
+ }
+
+ private static void createExternalConnectionRegister(Exchange exchange) {
+ Object connectionKey =
exchange.getIn().getHeader(WebsocketConstants.CONNECTION_KEY);
+
+ String userName = EXISTED_USERS[0];
+
+ if (!connectionKeyUserMap.isEmpty()) {
+ userName = EXISTED_USERS[connectionKeyUserMap.size()];
+ }
+
+ connectionKeyUserMap.put(userName, (String) connectionKey);
+ }
+
+ private static void removeExternalConnectionRegister() {
+ // remove connectionKey from external store
+ }
+
+ private static void createBroadcastMultipleClientsResponse(Exchange
exchange) {
+ List<String> connectionKeyList = new ArrayList<>();
+ Object msg = exchange.getIn().getBody();
+
+ String additionalMessage = "";
+
+ //send the message only to selected connections
+ for (String element : broadcastMessageTo) {
+ connectionKeyList.add(connectionKeyUserMap.get(element));
+ additionalMessage += element + " ";
+ }
+
+ additionalMessage += " Received the message: ";
+
+ exchange.getIn().setBody(additionalMessage + msg);
+ exchange.getIn().setHeader(WebsocketConstants.CONNECTION_KEY_LIST,
connectionKeyList);
+ }
+
+ // END SNIPPET: payload
+}
diff --git
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRouteTest.java
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute3Test.java
similarity index 61%
copy from
components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRouteTest.java
copy to
components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute3Test.java
index 85c718da08e3..2dc9664ce94d 100644
---
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRouteTest.java
+++
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute3Test.java
@@ -31,41 +31,12 @@ import org.apache.camel.util.IOHelper;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
-public class WebsocketRouteTest extends WebsocketCamelRouterTestSupport {
+public class WebsocketRoute3Test extends WebsocketCamelRouterTestSupport {
private static final String RESPONSE_GREETING = "Hola ";
private static final byte[] RESPONSE_GREETING_BYTES = { 0x48, 0x6f, 0x6c,
0x61, 0x20 };
- @Test
- void testWebsocketSingleClient() throws Exception {
- WebsocketTestClient wsclient = new
WebsocketTestClient("ws://localhost:" + PORT + "/hola");
- wsclient.connect();
-
- wsclient.sendTextMessage("Cerveza");
-
- assertTrue(wsclient.await(10));
- List<String> received = wsclient.getReceived(String.class);
- assertEquals(1, received.size());
- assertEquals("Hola Cerveza", received.get(0));
- wsclient.close();
- }
-
- @Test
- void testWebsocketSingleClientForBytes() throws Exception {
- WebsocketTestClient wsclient = new
WebsocketTestClient("ws://localhost:" + PORT + "/hola");
- wsclient.connect();
-
- wsclient.sendBytesMessage("Cerveza".getBytes("UTF-8"));
-
- assertTrue(wsclient.await(10));
- List<String> received = wsclient.getReceived(String.class);
- assertEquals(1, received.size());
- assertEquals("Hola Cerveza", received.get(0));
- wsclient.close();
- }
-
@Test
void testWebsocketSingleClientForReader() throws Exception {
WebsocketTestClient wsclient = new
WebsocketTestClient("ws://localhost:" + PORT + "/hola3");
@@ -94,74 +65,17 @@ public class WebsocketRouteTest extends
WebsocketCamelRouterTestSupport {
wsclient.close();
}
- @Test
- void testWebsocketBroadcastClient() throws Exception {
- WebsocketTestClient wsclient1 = new
WebsocketTestClient("ws://localhost:" + PORT + "/broadcast", 2);
- WebsocketTestClient wsclient2 = new
WebsocketTestClient("ws://localhost:" + PORT + "/broadcast", 2);
- wsclient1.connect();
- wsclient2.connect();
-
- wsclient1.sendTextMessage("Gambas");
- wsclient2.sendTextMessage("Calamares");
-
- assertTrue(wsclient1.await(10));
- assertTrue(wsclient2.await(10));
-
- List<String> received1 = wsclient1.getReceived(String.class);
- assertEquals(2, received1.size());
-
- assertTrue(received1.contains("Hola Gambas"));
- assertTrue(received1.contains("Hola Calamares"));
-
- List<String> received2 = wsclient2.getReceived(String.class);
- assertEquals(2, received2.size());
- assertTrue(received2.contains("Hola Gambas"));
- assertTrue(received2.contains("Hola Calamares"));
-
- wsclient1.close();
- wsclient2.close();
- }
-
- @Test
- void testWebsocketEventsResendingDisabled() throws Exception {
- WebsocketTestClient wsclient = new
WebsocketTestClient("ws://localhost:" + PORT + "/hola4");
- wsclient.connect();
- assertFalse(wsclient.await(10));
- wsclient.close();
- }
-
// START SNIPPET: payload
@Override
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
- // route for a single line
-
from("atmosphere-websocket:///hola").to("log:info").process(new Processor() {
- public void process(final Exchange exchange) {
- createResponse(exchange, false);
- }
- }).to("atmosphere-websocket:///hola");
-
- // route for a broadcast line
-
from("atmosphere-websocket:///broadcast").to("log:info").process(new
Processor() {
- public void process(final Exchange exchange) {
- createResponse(exchange, false);
- }
- }).to("atmosphere-websocket:///broadcast?sendToAll=true");
-
// route for a single stream line
from("atmosphere-websocket:///hola3?useStreaming=true").to("log:info").process(new
Processor() {
public void process(final Exchange exchange) {
createResponse(exchange, true);
}
}).to("atmosphere-websocket:///hola3");
-
- // route for events resending disabled
-
from("atmosphere-websocket:///hola4").to("log:info").process(new Processor() {
- public void process(final Exchange exchange) {
- checkEventsResendingDisabled(exchange);
- }
- }).to("atmosphere-websocket:///hola4");
}
};
}
diff --git
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRouteWithInitParamTest.java
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute3WithInitParamTest.java
similarity index 52%
rename from
components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRouteWithInitParamTest.java
rename to
components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute3WithInitParamTest.java
index aaf6ae26ea09..311bc64f40e4 100644
---
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRouteWithInitParamTest.java
+++
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute3WithInitParamTest.java
@@ -16,12 +16,10 @@
*/
package org.apache.camel.component.atmosphere.websocket;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.ExecutionException;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
@@ -29,85 +27,18 @@ import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.test.infra.common.http.WebsocketTestClient;
import org.junit.jupiter.api.Test;
-import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
-public class WebsocketRouteWithInitParamTest extends
WebsocketCamelRouterWithInitParamTestSupport {
+public class WebsocketRoute3WithInitParamTest extends
WebsocketCamelRouterWithInitParamTestSupport {
private static final String[] EXISTED_USERS = { "Kim", "Pavlo", "Peter" };
private static String[] broadcastMessageTo = {};
private static Map<String, String> connectionKeyUserMap = new HashMap<>();
- private void runtTest(String s) throws InterruptedException,
ExecutionException, IOException {
- WebsocketTestClient wsclient = new
WebsocketTestClient("ws://localhost:" + PORT + s);
- wsclient.connect();
- wsclient.close();
- }
-
- @Test
- void testWebsocketEventsResendingEnabled() {
- assertDoesNotThrow(() -> runtTest("/hola"));
-
- }
-
- @Test
- void testPassParametersWebsocketOnOpen() {
- assertDoesNotThrow(() ->
runtTest("/hola1?param1=value1¶m2=value2"));
- }
-
- @Test
- void testWebsocketSingleClientBroadcastMultipleClients() throws Exception {
- final int awaitTime = 5;
- connectionKeyUserMap.clear();
-
- WebsocketTestClient wsclient1 = new
WebsocketTestClient("ws://localhost:" + PORT + "/broadcast", 2);
- WebsocketTestClient wsclient2 = new
WebsocketTestClient("ws://localhost:" + PORT + "/broadcast", 2);
- WebsocketTestClient wsclient3 = new
WebsocketTestClient("ws://localhost:" + PORT + "/broadcast", 2);
-
- wsclient1.connect();
- wsclient1.await(awaitTime);
-
- wsclient2.connect();
- wsclient2.await(awaitTime);
-
- wsclient3.connect();
- wsclient3.await(awaitTime);
-
- //all connections were registered in external store
- assertEquals(EXISTED_USERS.length, connectionKeyUserMap.size());
-
- broadcastMessageTo = new String[] { EXISTED_USERS[0], EXISTED_USERS[1]
};
-
- wsclient1.sendTextMessage("Gambas");
- wsclient1.await(awaitTime);
-
- List<String> received1 = wsclient1.getReceived(String.class);
- assertEquals(1, received1.size());
-
- for (String element : broadcastMessageTo) {
- assertTrue(received1.get(0).contains(element));
- }
-
- List<String> received2 = wsclient2.getReceived(String.class);
- assertEquals(1, received2.size());
- for (String element : broadcastMessageTo) {
- assertTrue(received2.get(0).contains(element));
- }
-
- List<String> received3 = wsclient3.getReceived(String.class);
- assertEquals(0, received3.size());
-
- wsclient1.close();
- wsclient2.close();
- wsclient3.close();
- }
-
@Test
void testWebsocketSingleClientBroadcastMultipleClientsGuaranteeDelivery()
throws Exception {
- final int awaitTime = 5;
+ final int awaitTime = 2;
connectionKeyUserMap.clear();
WebsocketTestClient wsclient1 = new
WebsocketTestClient("ws://localhost:" + PORT + "/guarantee", 2);
@@ -156,48 +87,6 @@ public class WebsocketRouteWithInitParamTest extends
WebsocketCamelRouterWithIni
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
- // route for events resending enabled
-
from("atmosphere-websocket:///hola").to("log:info").process(new Processor() {
- public void process(final Exchange exchange) {
- checkEventsResendingEnabled(exchange);
- }
- });
-
- // route for events resending enabled
-
from("atmosphere-websocket:///hola1").to("log:info").process(new Processor() {
- public void process(final Exchange exchange) {
- checkPassedParameters(exchange);
- }
- });
-
- // route for single client broadcast to multiple clients
- from("atmosphere-websocket:///broadcast").to("log:info")
- .choice()
-
.when(header(WebsocketConstants.EVENT_TYPE).isEqualTo(WebsocketConstants.ONOPEN_EVENT_TYPE))
- .process(new Processor() {
- public void process(final Exchange exchange) {
- createExternalConnectionRegister(exchange);
- }
- })
-
.when(header(WebsocketConstants.EVENT_TYPE).isEqualTo(WebsocketConstants.ONCLOSE_EVENT_TYPE))
- .process(new Processor() {
- public void process(final Exchange exchange) {
- removeExternalConnectionRegister();
- }
- })
-
.when(header(WebsocketConstants.EVENT_TYPE).isEqualTo(WebsocketConstants.ONERROR_EVENT_TYPE))
- .process(new Processor() {
- public void process(final Exchange exchange) {
- removeExternalConnectionRegister();
- }
- })
- .otherwise()
- .process(new Processor() {
- public void process(final Exchange exchange) {
-
createBroadcastMultipleClientsResponse(exchange);
- }
- }).to("atmosphere-websocket:///broadcast");
-
// route for single client broadcast to multiple clients
guarantee delivery
from("atmosphere-websocket:///guarantee").to("log:info")
.choice()
@@ -246,7 +135,7 @@ public class WebsocketRouteWithInitParamTest extends
WebsocketCamelRouterWithIni
String userName = EXISTED_USERS[0];
- if (connectionKeyUserMap.size() > 0) {
+ if (!connectionKeyUserMap.isEmpty()) {
userName = EXISTED_USERS[connectionKeyUserMap.size()];
}
@@ -275,36 +164,5 @@ public class WebsocketRouteWithInitParamTest extends
WebsocketCamelRouterWithIni
exchange.getIn().setHeader(WebsocketConstants.CONNECTION_KEY_LIST,
connectionKeyList);
}
- private static void checkEventsResendingEnabled(Exchange exchange) {
- Object connectionKey =
exchange.getIn().getHeader(WebsocketConstants.CONNECTION_KEY);
- Object eventType =
exchange.getIn().getHeader(WebsocketConstants.EVENT_TYPE);
- Object msg = exchange.getIn().getBody();
-
- assertNull(msg);
- assertNotNull(connectionKey);
-
- if (eventType instanceof Integer) {
- assertTrue(eventType.equals(WebsocketConstants.ONOPEN_EVENT_TYPE)
- || eventType.equals(WebsocketConstants.ONCLOSE_EVENT_TYPE)
- ||
eventType.equals(WebsocketConstants.ONERROR_EVENT_TYPE));
- }
- }
-
- private static void checkPassedParameters(Exchange exchange) {
- Object connectionKey =
exchange.getIn().getHeader(WebsocketConstants.CONNECTION_KEY);
- Object eventType =
exchange.getIn().getHeader(WebsocketConstants.EVENT_TYPE);
- Object msg = exchange.getIn().getBody();
-
- assertNull(msg);
- assertNotNull(connectionKey);
-
- if (eventType instanceof Integer &&
eventType.equals(WebsocketConstants.ONOPEN_EVENT_TYPE)) {
-
- String param1 = (String) exchange.getIn().getHeader("param1");
- String param2 = (String) exchange.getIn().getHeader("param2");
-
- assertTrue(param1.equals("value1") && param2.equals("value2"));
- }
- }
// END SNIPPET: payload
}
diff --git
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRouteTest.java
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute4Test.java
similarity index 53%
rename from
components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRouteTest.java
rename to
components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute4Test.java
index 85c718da08e3..72bbd62bee98 100644
---
a/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRouteTest.java
+++
b/components/camel-atmosphere-websocket/src/test/java/org/apache/camel/component/atmosphere/websocket/WebsocketRoute4Test.java
@@ -21,7 +21,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.io.StringReader;
-import java.util.List;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
@@ -30,98 +29,13 @@ import
org.apache.camel.test.infra.common.http.WebsocketTestClient;
import org.apache.camel.util.IOHelper;
import org.junit.jupiter.api.Test;
-import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
-public class WebsocketRouteTest extends WebsocketCamelRouterTestSupport {
+public class WebsocketRoute4Test extends WebsocketCamelRouterTestSupport {
private static final String RESPONSE_GREETING = "Hola ";
private static final byte[] RESPONSE_GREETING_BYTES = { 0x48, 0x6f, 0x6c,
0x61, 0x20 };
- @Test
- void testWebsocketSingleClient() throws Exception {
- WebsocketTestClient wsclient = new
WebsocketTestClient("ws://localhost:" + PORT + "/hola");
- wsclient.connect();
-
- wsclient.sendTextMessage("Cerveza");
-
- assertTrue(wsclient.await(10));
- List<String> received = wsclient.getReceived(String.class);
- assertEquals(1, received.size());
- assertEquals("Hola Cerveza", received.get(0));
- wsclient.close();
- }
-
- @Test
- void testWebsocketSingleClientForBytes() throws Exception {
- WebsocketTestClient wsclient = new
WebsocketTestClient("ws://localhost:" + PORT + "/hola");
- wsclient.connect();
-
- wsclient.sendBytesMessage("Cerveza".getBytes("UTF-8"));
-
- assertTrue(wsclient.await(10));
- List<String> received = wsclient.getReceived(String.class);
- assertEquals(1, received.size());
- assertEquals("Hola Cerveza", received.get(0));
- wsclient.close();
- }
-
- @Test
- void testWebsocketSingleClientForReader() throws Exception {
- WebsocketTestClient wsclient = new
WebsocketTestClient("ws://localhost:" + PORT + "/hola3");
- wsclient.connect();
-
- wsclient.sendTextMessage("Cerveza");
-
- assertTrue(wsclient.await(10));
- List<String> received = wsclient.getReceived(String.class);
- assertEquals(1, received.size());
- assertEquals("Hola Cerveza", received.get(0));
- wsclient.close();
- }
-
- @Test
- void testWebsocketSingleClientForInputStream() throws Exception {
- WebsocketTestClient wsclient = new
WebsocketTestClient("ws://localhost:" + PORT + "/hola3");
- wsclient.connect();
-
- wsclient.sendBytesMessage("Cerveza".getBytes("UTF-8"));
-
- assertTrue(wsclient.await(10));
- List<String> received = wsclient.getReceived(String.class);
- assertEquals(1, received.size());
- assertEquals("Hola Cerveza", received.get(0));
- wsclient.close();
- }
-
- @Test
- void testWebsocketBroadcastClient() throws Exception {
- WebsocketTestClient wsclient1 = new
WebsocketTestClient("ws://localhost:" + PORT + "/broadcast", 2);
- WebsocketTestClient wsclient2 = new
WebsocketTestClient("ws://localhost:" + PORT + "/broadcast", 2);
- wsclient1.connect();
- wsclient2.connect();
-
- wsclient1.sendTextMessage("Gambas");
- wsclient2.sendTextMessage("Calamares");
-
- assertTrue(wsclient1.await(10));
- assertTrue(wsclient2.await(10));
-
- List<String> received1 = wsclient1.getReceived(String.class);
- assertEquals(2, received1.size());
-
- assertTrue(received1.contains("Hola Gambas"));
- assertTrue(received1.contains("Hola Calamares"));
-
- List<String> received2 = wsclient2.getReceived(String.class);
- assertEquals(2, received2.size());
- assertTrue(received2.contains("Hola Gambas"));
- assertTrue(received2.contains("Hola Calamares"));
-
- wsclient1.close();
- wsclient2.close();
- }
-
@Test
void testWebsocketEventsResendingDisabled() throws Exception {
WebsocketTestClient wsclient = new
WebsocketTestClient("ws://localhost:" + PORT + "/hola4");
@@ -135,27 +49,6 @@ public class WebsocketRouteTest extends
WebsocketCamelRouterTestSupport {
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
- // route for a single line
-
from("atmosphere-websocket:///hola").to("log:info").process(new Processor() {
- public void process(final Exchange exchange) {
- createResponse(exchange, false);
- }
- }).to("atmosphere-websocket:///hola");
-
- // route for a broadcast line
-
from("atmosphere-websocket:///broadcast").to("log:info").process(new
Processor() {
- public void process(final Exchange exchange) {
- createResponse(exchange, false);
- }
- }).to("atmosphere-websocket:///broadcast?sendToAll=true");
-
- // route for a single stream line
-
from("atmosphere-websocket:///hola3?useStreaming=true").to("log:info").process(new
Processor() {
- public void process(final Exchange exchange) {
- createResponse(exchange, true);
- }
- }).to("atmosphere-websocket:///hola3");
-
// route for events resending disabled
from("atmosphere-websocket:///hola4").to("log:info").process(new Processor() {
public void process(final Exchange exchange) {