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

Reply via email to