Skip to content

Commit c43f4b8

Browse files
committed
make test case run more stable
1 parent 6852cd0 commit c43f4b8

File tree

5 files changed

+51
-7
lines changed

5 files changed

+51
-7
lines changed

demo/demo-consul/provider/src/main/java/org/apache/servicecomb/samples/WebsocketController.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717

1818
package org.apache.servicecomb.samples;
1919

20+
import java.util.concurrent.CountDownLatch;
21+
import java.util.concurrent.TimeUnit;
2022
import java.util.concurrent.atomic.AtomicInteger;
2123

2224
import org.apache.servicecomb.core.CoreConst;
@@ -33,17 +35,21 @@ public class WebsocketController {
3335
@PostMapping("/websocket")
3436
@Transport(name = CoreConst.WEBSOCKET)
3537
public void websocket(ServerWebSocket serverWebsocket) {
36-
// Client may have not registered message handler, and messages sent may get lost.
37-
// So we sleep for a while to send message.
3838
AtomicInteger receiveCount = new AtomicInteger(0);
39+
CountDownLatch startSend = new CountDownLatch(1);
3940
serverWebsocket.textMessageHandler(s -> {
41+
if ("start".equals(s)) {
42+
startSend.countDown();
43+
serverWebsocket.writeTextMessage("started");
44+
return;
45+
}
4046
receiveCount.getAndIncrement();
4147
});
4248
serverWebsocket.closeHandler((v) -> System.out.println("closed"));
4349

4450
new Thread(() -> {
4551
try {
46-
Thread.sleep(1000);
52+
startSend.await(30, TimeUnit.SECONDS);
4753
} catch (InterruptedException e) {
4854
e.printStackTrace();
4955
}

demo/demo-consul/test-client/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
<configuration>
6969
<images>
7070
<image>
71-
<name>hashicorp/consul</name>
71+
<name>hashicorp/consul:1.21</name>
7272
<alias>consul</alias>
7373
<run>
7474
<namingStrategy>alias</namingStrategy>

demo/demo-consul/test-client/src/main/java/org/apache/servicecomb/samples/WebsocketIT.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,15 @@ public class WebsocketIT implements CategorizedTestCase {
3838
public void testRestTransport() throws Exception {
3939
StringBuffer sb = new StringBuffer();
4040
AtomicBoolean closed = new AtomicBoolean(false);
41+
CountDownLatch latchStarted = new CountDownLatch(1);
4142
CountDownLatch latch = new CountDownLatch(1);
4243

4344
WebSocket webSocket = websocketClient.websocket();
4445
webSocket.textMessageHandler(s -> {
46+
if ("started".equals(s)) {
47+
latchStarted.countDown();
48+
return;
49+
}
4550
sb.append(s);
4651
sb.append(" ");
4752
webSocket.writeTextMessage(s);
@@ -50,6 +55,17 @@ public void testRestTransport() throws Exception {
5055
closed.set(true);
5156
latch.countDown();
5257
});
58+
59+
webSocket.writeTextMessage("start");
60+
int i = 0;
61+
for (; i < 10; i++) {
62+
if (!latchStarted.await(3, TimeUnit.SECONDS)) {
63+
webSocket.writeTextMessage("start");
64+
continue;
65+
}
66+
break;
67+
}
68+
TestMgr.check(i < 10, true);
5369
latch.await(30, TimeUnit.SECONDS);
5470
TestMgr.check(sb.toString(), "hello hello 0 hello 1 hello 2 hello 3 hello 4 total 6 ");
5571
TestMgr.check(closed.get(), true);

demo/demo-zookeeper/provider/src/main/java/org/apache/servicecomb/samples/WebsocketController.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717

1818
package org.apache.servicecomb.samples;
1919

20+
import java.util.concurrent.CountDownLatch;
21+
import java.util.concurrent.TimeUnit;
2022
import java.util.concurrent.atomic.AtomicInteger;
2123

2224
import org.apache.servicecomb.core.CoreConst;
@@ -33,17 +35,21 @@ public class WebsocketController {
3335
@PostMapping("/websocket")
3436
@Transport(name = CoreConst.WEBSOCKET)
3537
public void websocket(ServerWebSocket serverWebsocket) {
36-
// Client may have not registered message handler, and messages sent may get lost.
37-
// So we sleep for a while to send message.
3838
AtomicInteger receiveCount = new AtomicInteger(0);
39+
CountDownLatch startSend = new CountDownLatch(1);
3940
serverWebsocket.textMessageHandler(s -> {
41+
if ("start".equals(s)) {
42+
startSend.countDown();
43+
serverWebsocket.writeTextMessage("started");
44+
return;
45+
}
4046
receiveCount.getAndIncrement();
4147
});
4248
serverWebsocket.closeHandler((v) -> System.out.println("closed"));
4349

4450
new Thread(() -> {
4551
try {
46-
Thread.sleep(1000);
52+
startSend.await(30, TimeUnit.SECONDS);
4753
} catch (InterruptedException e) {
4854
e.printStackTrace();
4955
}

demo/demo-zookeeper/test-client/src/main/java/org/apache/servicecomb/samples/WebsocketIT.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,15 @@ public class WebsocketIT implements CategorizedTestCase {
3838
public void testRestTransport() throws Exception {
3939
StringBuffer sb = new StringBuffer();
4040
AtomicBoolean closed = new AtomicBoolean(false);
41+
CountDownLatch latchStarted = new CountDownLatch(1);
4142
CountDownLatch latch = new CountDownLatch(1);
4243

4344
WebSocket webSocket = websocketClient.websocket();
4445
webSocket.textMessageHandler(s -> {
46+
if ("started".equals(s)) {
47+
latchStarted.countDown();
48+
return;
49+
}
4550
sb.append(s);
4651
sb.append(" ");
4752
webSocket.writeTextMessage(s);
@@ -50,6 +55,17 @@ public void testRestTransport() throws Exception {
5055
closed.set(true);
5156
latch.countDown();
5257
});
58+
59+
webSocket.writeTextMessage("start");
60+
int i = 0;
61+
for (; i < 10; i++) {
62+
if (!latchStarted.await(3, TimeUnit.SECONDS)) {
63+
webSocket.writeTextMessage("start");
64+
continue;
65+
}
66+
break;
67+
}
68+
TestMgr.check(i < 10, true);
5369
latch.await(30, TimeUnit.SECONDS);
5470
TestMgr.check(sb.toString(), "hello hello 0 hello 1 hello 2 hello 3 hello 4 total 6 ");
5571
TestMgr.check(closed.get(), true);

0 commit comments

Comments
 (0)