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);

Reply via email to