File tree Expand file tree Collapse file tree 5 files changed +51
-7
lines changed
provider/src/main/java/org/apache/servicecomb/samples
src/main/java/org/apache/servicecomb/samples
provider/src/main/java/org/apache/servicecomb/samples
test-client/src/main/java/org/apache/servicecomb/samples Expand file tree Collapse file tree 5 files changed +51
-7
lines changed Original file line number Diff line number Diff line change 1717
1818package org .apache .servicecomb .samples ;
1919
20+ import java .util .concurrent .CountDownLatch ;
21+ import java .util .concurrent .TimeUnit ;
2022import java .util .concurrent .atomic .AtomicInteger ;
2123
2224import 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 }
Original file line number Diff line number Diff line change 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 >
Original file line number Diff line number Diff 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 );
Original file line number Diff line number Diff line change 1717
1818package org .apache .servicecomb .samples ;
1919
20+ import java .util .concurrent .CountDownLatch ;
21+ import java .util .concurrent .TimeUnit ;
2022import java .util .concurrent .atomic .AtomicInteger ;
2123
2224import 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 }
Original file line number Diff line number Diff 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 );
You can’t perform that action at this time.
0 commit comments