Skip to content

Commit 138ba93

Browse files
committed
Add test for onOpen exception on WS Next
1 parent 04ffd18 commit 138ba93

File tree

3 files changed

+59
-0
lines changed

3 files changed

+59
-0
lines changed

extensions/websockets-next/deployment/src/test/java/io/quarkus/websockets/next/test/telemetry/MicrometerWebSocketsOnErrorTest.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import static io.quarkus.websockets.next.test.telemetry.MetricsAsserter.assertServerConnectionOpenedTotal;
88
import static io.quarkus.websockets.next.test.telemetry.MetricsAsserter.assertServerConnectionOpeningFailedTotal;
99
import static io.quarkus.websockets.next.test.telemetry.MetricsAsserter.stringToBytes;
10+
import static org.junit.jupiter.api.Assertions.assertEquals;
1011
import static org.junit.jupiter.api.Assertions.assertTrue;
1112

1213
import java.net.URI;
@@ -22,8 +23,10 @@
2223

2324
import io.quarkus.test.QuarkusUnitTest;
2425
import io.quarkus.test.common.http.TestHTTPResource;
26+
import io.quarkus.websockets.next.WebSocketClientConnection;
2527
import io.quarkus.websockets.next.WebSocketConnector;
2628
import io.quarkus.websockets.next.test.telemetry.endpoints.onerror.ErroneousClient_NoOnError;
29+
import io.quarkus.websockets.next.test.telemetry.endpoints.onerror.ErroneousClient_OnConnectError;
2730
import io.quarkus.websockets.next.test.telemetry.endpoints.onerror.ErroneousClient_OverloadedOnError;
2831
import io.quarkus.websockets.next.test.telemetry.endpoints.onerror.ErroneousServerEndpoint_OnClose;
2932
import io.quarkus.websockets.next.test.telemetry.endpoints.onerror.ErroneousServerEndpoint_OverriddenOnError;
@@ -43,6 +46,9 @@ public class MicrometerWebSocketsOnErrorTest {
4346
@Inject
4447
WebSocketConnector<ErroneousClient_OverloadedOnError> erroneousClientConnector_OverloadedOnErr;
4548

49+
@Inject
50+
WebSocketConnector<ErroneousClient_OnConnectError> onConnectErrorClient;
51+
4652
@TestHTTPResource("/")
4753
URI baseUri;
4854

@@ -255,4 +261,22 @@ public void testServerEndpoint_HttpUpgradeFailed() {
255261
.body(assertServerConnectionOpeningFailedTotal(path, 1));
256262
});
257263
}
264+
265+
@Test
266+
public void testServerEndpoint_OnConnectionError() {
267+
try {
268+
WebSocketClientConnection connection = onConnectErrorClient.baseUri(baseUri).connectAndAwait();
269+
connection.sendTextAndAwait("Hold the Line");
270+
// assertFalse(connection.isOpen(),
271+
// "Runtime exception happened on server side and connection is still open");
272+
} catch (Exception e) {
273+
// TODO evaluate exact message received
274+
assertEquals("Crafted exception - Websocket failed to open", e.getMessage());
275+
}
276+
277+
Awaitility.await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> {
278+
getMetrics()
279+
.body(assertServerConnectionOpeningFailedTotal("/on-connect-error", 1));
280+
});
281+
}
258282
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package io.quarkus.websockets.next.test.telemetry.endpoints.onerror;
2+
3+
import io.quarkus.logging.Log;
4+
import io.quarkus.websockets.next.OnOpen;
5+
import io.quarkus.websockets.next.WebSocketClient;
6+
7+
@WebSocketClient(path = "/on-connect-error")
8+
public class ErroneousClient_OnConnectError {
9+
10+
@OnOpen()
11+
public void onOpen() {
12+
Log.info("client onOpen");
13+
}
14+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package io.quarkus.websockets.next.test.telemetry.endpoints.onerror;
2+
3+
import io.quarkus.logging.Log;
4+
import io.quarkus.websockets.next.OnOpen;
5+
import io.quarkus.websockets.next.WebSocket;
6+
7+
@WebSocket(path = "/on-connect-error")
8+
public class OnConnectErrorEndpoint {
9+
10+
@OnOpen()
11+
public void onOpen() {
12+
Log.info("onOpen throwing exception");
13+
throw new RuntimeException("Crafted exception - Websocket failed to open");
14+
}
15+
16+
// @OnTextMessage
17+
// public Uni<Dto> onMessage(Multi<Dto> dto) {
18+
// //echo
19+
// return dto.toUni();
20+
// }
21+
}

0 commit comments

Comments
 (0)