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-quarkus.git
The following commit(s) were added to refs/heads/main by this push:
new 17e664a690 chore: Migrate vertx-websocket tests from
quarkus-websockets to quarkus-websockets-next
17e664a690 is described below
commit 17e664a69076de23d685b5006d6f5bee2a20928d
Author: James Netherton <[email protected]>
AuthorDate: Tue Aug 4 19:24:59 2026 +0100
chore: Migrate vertx-websocket tests from quarkus-websockets to
quarkus-websockets-next
Co-authored-by: Claude Opus 4.6 <[email protected]>
---
integration-tests/vertx-websocket/pom.xml | 2 +-
.../websocket/it/QuarkusWebsocketResource.java | 8 +-
.../it/VertxWebsocketClientSslProvider.java | 77 --------------------
.../vertx/websocket/it/VertxWebsocketSslTest.java | 10 ++-
.../vertx/websocket/it/VertxWebsocketTest.java | 85 +++++++++++++++-------
....undertow.websockets.WebsocketClientSslProvider | 1 -
6 files changed, 71 insertions(+), 112 deletions(-)
diff --git a/integration-tests/vertx-websocket/pom.xml
b/integration-tests/vertx-websocket/pom.xml
index a6226c15d3..d005a9976c 100644
--- a/integration-tests/vertx-websocket/pom.xml
+++ b/integration-tests/vertx-websocket/pom.xml
@@ -49,7 +49,7 @@
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
- <artifactId>quarkus-websockets</artifactId>
+ <artifactId>quarkus-websockets-next</artifactId>
</dependency>
<!-- test dependencies -->
diff --git
a/integration-tests/vertx-websocket/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/it/QuarkusWebsocketResource.java
b/integration-tests/vertx-websocket/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/it/QuarkusWebsocketResource.java
index 15ff63d0a5..4a4c00a3f6 100644
---
a/integration-tests/vertx-websocket/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/it/QuarkusWebsocketResource.java
+++
b/integration-tests/vertx-websocket/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/it/QuarkusWebsocketResource.java
@@ -18,17 +18,17 @@ package
org.apache.camel.quarkus.component.vertx.websocket.it;
import java.util.concurrent.LinkedBlockingDeque;
+import io.quarkus.websockets.next.OnTextMessage;
+import io.quarkus.websockets.next.WebSocket;
import jakarta.enterprise.context.ApplicationScoped;
-import jakarta.websocket.OnMessage;
-import jakarta.websocket.server.ServerEndpoint;
-@ServerEndpoint("/managed/by/quarkus/websockets")
+@WebSocket(path = "/managed/by/quarkus/websockets")
@ApplicationScoped
public class QuarkusWebsocketResource {
private static final LinkedBlockingDeque<String> MESSAGES = new
LinkedBlockingDeque<>();
- @OnMessage
+ @OnTextMessage
public void onMessage(String message) {
MESSAGES.add("Received message: " + message);
}
diff --git
a/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketClientSslProvider.java
b/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketClientSslProvider.java
deleted file mode 100644
index e39f924a5f..0000000000
---
a/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketClientSslProvider.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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.quarkus.component.vertx.websocket.it;
-
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.net.URI;
-import java.nio.file.Paths;
-import java.security.KeyStore;
-
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.TrustManagerFactory;
-
-import io.netty.channel.EventLoopGroup;
-import io.undertow.websockets.WebsocketClientSslProvider;
-import jakarta.websocket.ClientEndpointConfig;
-import jakarta.websocket.Endpoint;
-
-/**
- * Enable the Quarkus WebSocket client to handle self-signed certificates.
- */
-public class VertxWebsocketClientSslProvider implements
WebsocketClientSslProvider {
-
- private static SSLContext SSL_CONTEXT;
-
- static SSLContext getSslContext() {
- if (SSL_CONTEXT != null) {
- return SSL_CONTEXT;
- }
- try (InputStream stream = new
FileInputStream(Paths.get("target/certs/vertx-websocket-truststore.p12").toFile()))
{
- KeyStore keystore =
KeyStore.getInstance(KeyStore.getDefaultType());
- keystore.load(stream, "changeit".toCharArray());
-
- String defaultAlgorithm =
TrustManagerFactory.getDefaultAlgorithm();
- TrustManagerFactory trustManagerFactory =
TrustManagerFactory.getInstance(defaultAlgorithm);
- trustManagerFactory.init(keystore);
-
- SSL_CONTEXT = SSLContext.getInstance("TLS");
- SSL_CONTEXT.init(null, trustManagerFactory.getTrustManagers(),
null);
- } catch (java.io.FileNotFoundException notFound) {
- //ignore
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
-
- return SSL_CONTEXT;
- }
-
- @Override
- public SSLContext getSsl(EventLoopGroup worker, Class<?>
annotatedEndpoint, URI uri) {
- return getSslContext();
- }
-
- @Override
- public SSLContext getSsl(EventLoopGroup worker, Object
annotatedEndpointInstance, URI uri) {
- return getSslContext();
- }
-
- @Override
- public SSLContext getSsl(EventLoopGroup worker, Endpoint endpoint,
ClientEndpointConfig cec, URI uri) {
- return getSslContext();
- }
-}
diff --git
a/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketSslTest.java
b/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketSslTest.java
index 869310ac59..ff44900489 100644
---
a/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketSslTest.java
+++
b/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketSslTest.java
@@ -21,6 +21,8 @@ import java.util.List;
import io.quarkus.test.common.http.TestHTTPResource;
import io.restassured.RestAssured;
+import io.vertx.core.http.WebSocketClientOptions;
+import io.vertx.core.net.PfxOptions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
@@ -49,7 +51,13 @@ public abstract class VertxWebsocketSslTest {
.body(matchesPattern(
"Invalid host/port localhost:8441.*can only be
configured as (localhost|0.0.0.0):" + uri.getPort()));
- try (VertxWebsocketTest.WebSocketConnection connection = new
VertxWebsocketTest.WebSocketConnection(uri, null)) {
+ WebSocketClientOptions sslOptions = new WebSocketClientOptions()
+ .setTrustOptions(new PfxOptions()
+ .setPath("target/certs/vertx-websocket-truststore.p12")
+ .setPassword("changeit"));
+
+ try (VertxWebsocketTest.WebSocketConnection connection = new
VertxWebsocketTest.WebSocketConnection(uri, null, 1,
+ sslOptions)) {
connection.connect();
RestAssured.given()
diff --git
a/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketTest.java
b/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketTest.java
index dd7af097e2..da3c7d6562 100644
---
a/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketTest.java
+++
b/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketTest.java
@@ -28,12 +28,9 @@ import java.util.concurrent.TimeUnit;
import io.quarkus.test.common.http.TestHTTPResource;
import io.quarkus.test.junit.QuarkusTest;
import io.restassured.RestAssured;
-import jakarta.websocket.ClientEndpointConfig;
-import jakarta.websocket.ContainerProvider;
-import jakarta.websocket.Endpoint;
-import jakarta.websocket.EndpointConfig;
-import jakarta.websocket.MessageHandler;
-import jakarta.websocket.Session;
+import io.vertx.core.Vertx;
+import io.vertx.core.http.WebSocketClientOptions;
+import io.vertx.core.http.WebSocketConnectOptions;
import org.apache.camel.component.vertx.websocket.VertxWebsocketConstants;
import org.awaitility.Awaitility;
import org.junit.jupiter.api.Test;
@@ -340,38 +337,63 @@ class VertxWebsocketTest {
private final CountDownLatch latch;
private final URI webSocketUri;
private final String payload;
- private Session session;
+ private final WebSocketClientOptions clientOptions;
+ private io.vertx.core.http.WebSocket webSocket;
+ private Vertx vertx;
+ private boolean closed;
public WebSocketConnection(URI webSocketUri, String payload) {
this(webSocketUri, payload, 1);
}
public WebSocketConnection(URI webSocketUri, String payload, int
expectedMessageCount) {
+ this(webSocketUri, payload, expectedMessageCount, null);
+ }
+
+ public WebSocketConnection(URI webSocketUri, String payload, int
expectedMessageCount,
+ WebSocketClientOptions clientOptions) {
this.webSocketUri = webSocketUri;
this.payload = payload;
this.latch = new CountDownLatch(expectedMessageCount);
+ this.clientOptions = clientOptions;
}
public void connect() throws Exception {
- Endpoint endpoint = new Endpoint() {
- @Override
- public void onOpen(Session session, EndpointConfig
endpointConfig) {
- session.addMessageHandler(new
MessageHandler.Whole<String>() {
- @Override
- public void onMessage(String message) {
- messages.add(message);
- latch.countDown();
- }
- });
-
- if (payload != null) {
- session.getAsyncRemote().sendText(payload);
- }
- }
- };
-
- ClientEndpointConfig config =
ClientEndpointConfig.Builder.create().build();
- this.session =
ContainerProvider.getWebSocketContainer().connectToServer(endpoint, config,
webSocketUri);
+ vertx = Vertx.vertx();
+ io.vertx.core.http.WebSocketClient client = clientOptions != null
+ ? vertx.createWebSocketClient(clientOptions)
+ : vertx.createWebSocketClient();
+
+ String scheme = webSocketUri.getScheme();
+ boolean ssl = "wss".equals(scheme) || "https".equals(scheme);
+
+ StringBuilder requestUri = new StringBuilder();
+ if (webSocketUri.getPath() != null) {
+ requestUri.append(webSocketUri.getPath());
+ }
+ if (webSocketUri.getQuery() != null) {
+ requestUri.append("?").append(webSocketUri.getQuery());
+ }
+
+ WebSocketConnectOptions connectOptions = new
WebSocketConnectOptions()
+ .setHost(webSocketUri.getHost())
+ .setPort(webSocketUri.getPort())
+ .setURI(requestUri.toString())
+ .setSsl(ssl);
+
+ this.webSocket = client.connect(connectOptions)
+ .toCompletionStage()
+ .toCompletableFuture()
+ .join();
+
+ webSocket.textMessageHandler(message -> {
+ messages.add(message);
+ latch.countDown();
+ });
+
+ if (payload != null) {
+ webSocket.writeTextMessage(payload);
+ }
}
public List<String> getMessages() throws InterruptedException {
@@ -385,8 +407,15 @@ class VertxWebsocketTest {
@Override
public void close() throws IOException {
- if (session != null) {
- session.close();
+ if (closed) {
+ return;
+ }
+ closed = true;
+ if (webSocket != null && !webSocket.isClosed()) {
+
webSocket.close().toCompletionStage().toCompletableFuture().join();
+ }
+ if (vertx != null) {
+ vertx.close().toCompletionStage().toCompletableFuture().join();
}
}
}
diff --git
a/integration-tests/vertx-websocket/src/test/resources/META-INF/services/io.undertow.websockets.WebsocketClientSslProvider
b/integration-tests/vertx-websocket/src/test/resources/META-INF/services/io.undertow.websockets.WebsocketClientSslProvider
deleted file mode 100644
index 5046cccc63..0000000000
---
a/integration-tests/vertx-websocket/src/test/resources/META-INF/services/io.undertow.websockets.WebsocketClientSslProvider
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.camel.quarkus.component.vertx.websocket.it.VertxWebsocketClientSslProvider
\ No newline at end of file