This is an automated email from the ASF dual-hosted git repository. liubao pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
commit c43f4b840aa037fc98b79a0dfe81679d9c4b9aac Author: liubao68 <[email protected]> AuthorDate: Fri Oct 10 17:55:40 2025 +0800 make test case run more stable --- .../apache/servicecomb/samples/WebsocketController.java | 12 +++++++++--- demo/demo-consul/test-client/pom.xml | 2 +- .../java/org/apache/servicecomb/samples/WebsocketIT.java | 16 ++++++++++++++++ .../apache/servicecomb/samples/WebsocketController.java | 12 +++++++++--- .../java/org/apache/servicecomb/samples/WebsocketIT.java | 16 ++++++++++++++++ 5 files changed, 51 insertions(+), 7 deletions(-) diff --git a/demo/demo-consul/provider/src/main/java/org/apache/servicecomb/samples/WebsocketController.java b/demo/demo-consul/provider/src/main/java/org/apache/servicecomb/samples/WebsocketController.java index 3bc88c64a..6381ef1d5 100644 --- a/demo/demo-consul/provider/src/main/java/org/apache/servicecomb/samples/WebsocketController.java +++ b/demo/demo-consul/provider/src/main/java/org/apache/servicecomb/samples/WebsocketController.java @@ -17,6 +17,8 @@ package org.apache.servicecomb.samples; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import org.apache.servicecomb.core.CoreConst; @@ -33,17 +35,21 @@ public class WebsocketController { @PostMapping("/websocket") @Transport(name = CoreConst.WEBSOCKET) public void websocket(ServerWebSocket serverWebsocket) { - // Client may have not registered message handler, and messages sent may get lost. - // So we sleep for a while to send message. AtomicInteger receiveCount = new AtomicInteger(0); + CountDownLatch startSend = new CountDownLatch(1); serverWebsocket.textMessageHandler(s -> { + if ("start".equals(s)) { + startSend.countDown(); + serverWebsocket.writeTextMessage("started"); + return; + } receiveCount.getAndIncrement(); }); serverWebsocket.closeHandler((v) -> System.out.println("closed")); new Thread(() -> { try { - Thread.sleep(1000); + startSend.await(30, TimeUnit.SECONDS); } catch (InterruptedException e) { e.printStackTrace(); } diff --git a/demo/demo-consul/test-client/pom.xml b/demo/demo-consul/test-client/pom.xml index 286231574..791ac4748 100644 --- a/demo/demo-consul/test-client/pom.xml +++ b/demo/demo-consul/test-client/pom.xml @@ -68,7 +68,7 @@ <configuration> <images> <image> - <name>hashicorp/consul</name> + <name>hashicorp/consul:1.21</name> <alias>consul</alias> <run> <namingStrategy>alias</namingStrategy> diff --git a/demo/demo-consul/test-client/src/main/java/org/apache/servicecomb/samples/WebsocketIT.java b/demo/demo-consul/test-client/src/main/java/org/apache/servicecomb/samples/WebsocketIT.java index ea7a7f45b..c36f2d16d 100644 --- a/demo/demo-consul/test-client/src/main/java/org/apache/servicecomb/samples/WebsocketIT.java +++ b/demo/demo-consul/test-client/src/main/java/org/apache/servicecomb/samples/WebsocketIT.java @@ -38,10 +38,15 @@ public class WebsocketIT implements CategorizedTestCase { public void testRestTransport() throws Exception { StringBuffer sb = new StringBuffer(); AtomicBoolean closed = new AtomicBoolean(false); + CountDownLatch latchStarted = new CountDownLatch(1); CountDownLatch latch = new CountDownLatch(1); WebSocket webSocket = websocketClient.websocket(); webSocket.textMessageHandler(s -> { + if ("started".equals(s)) { + latchStarted.countDown(); + return; + } sb.append(s); sb.append(" "); webSocket.writeTextMessage(s); @@ -50,6 +55,17 @@ public class WebsocketIT implements CategorizedTestCase { closed.set(true); latch.countDown(); }); + + webSocket.writeTextMessage("start"); + int i = 0; + for (; i < 10; i++) { + if (!latchStarted.await(3, TimeUnit.SECONDS)) { + webSocket.writeTextMessage("start"); + continue; + } + break; + } + TestMgr.check(i < 10, true); latch.await(30, TimeUnit.SECONDS); TestMgr.check(sb.toString(), "hello hello 0 hello 1 hello 2 hello 3 hello 4 total 6 "); TestMgr.check(closed.get(), true); diff --git a/demo/demo-zookeeper/provider/src/main/java/org/apache/servicecomb/samples/WebsocketController.java b/demo/demo-zookeeper/provider/src/main/java/org/apache/servicecomb/samples/WebsocketController.java index 3bc88c64a..6381ef1d5 100644 --- a/demo/demo-zookeeper/provider/src/main/java/org/apache/servicecomb/samples/WebsocketController.java +++ b/demo/demo-zookeeper/provider/src/main/java/org/apache/servicecomb/samples/WebsocketController.java @@ -17,6 +17,8 @@ package org.apache.servicecomb.samples; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import org.apache.servicecomb.core.CoreConst; @@ -33,17 +35,21 @@ public class WebsocketController { @PostMapping("/websocket") @Transport(name = CoreConst.WEBSOCKET) public void websocket(ServerWebSocket serverWebsocket) { - // Client may have not registered message handler, and messages sent may get lost. - // So we sleep for a while to send message. AtomicInteger receiveCount = new AtomicInteger(0); + CountDownLatch startSend = new CountDownLatch(1); serverWebsocket.textMessageHandler(s -> { + if ("start".equals(s)) { + startSend.countDown(); + serverWebsocket.writeTextMessage("started"); + return; + } receiveCount.getAndIncrement(); }); serverWebsocket.closeHandler((v) -> System.out.println("closed")); new Thread(() -> { try { - Thread.sleep(1000); + startSend.await(30, TimeUnit.SECONDS); } catch (InterruptedException e) { e.printStackTrace(); } diff --git a/demo/demo-zookeeper/test-client/src/main/java/org/apache/servicecomb/samples/WebsocketIT.java b/demo/demo-zookeeper/test-client/src/main/java/org/apache/servicecomb/samples/WebsocketIT.java index ea7a7f45b..c36f2d16d 100644 --- a/demo/demo-zookeeper/test-client/src/main/java/org/apache/servicecomb/samples/WebsocketIT.java +++ b/demo/demo-zookeeper/test-client/src/main/java/org/apache/servicecomb/samples/WebsocketIT.java @@ -38,10 +38,15 @@ public class WebsocketIT implements CategorizedTestCase { public void testRestTransport() throws Exception { StringBuffer sb = new StringBuffer(); AtomicBoolean closed = new AtomicBoolean(false); + CountDownLatch latchStarted = new CountDownLatch(1); CountDownLatch latch = new CountDownLatch(1); WebSocket webSocket = websocketClient.websocket(); webSocket.textMessageHandler(s -> { + if ("started".equals(s)) { + latchStarted.countDown(); + return; + } sb.append(s); sb.append(" "); webSocket.writeTextMessage(s); @@ -50,6 +55,17 @@ public class WebsocketIT implements CategorizedTestCase { closed.set(true); latch.countDown(); }); + + webSocket.writeTextMessage("start"); + int i = 0; + for (; i < 10; i++) { + if (!latchStarted.await(3, TimeUnit.SECONDS)) { + webSocket.writeTextMessage("start"); + continue; + } + break; + } + TestMgr.check(i < 10, true); latch.await(30, TimeUnit.SECONDS); TestMgr.check(sb.toString(), "hello hello 0 hello 1 hello 2 hello 3 hello 4 total 6 "); TestMgr.check(closed.get(), true);
