22
33import static org .junit .Assert .assertEquals ;
44
5- import java .util .ArrayList ;
6- import java .util .List ;
7- import java .util .concurrent .CountDownLatch ;
8- import java .util .concurrent .TimeUnit ;
5+ import java .util .concurrent .atomic .AtomicInteger ;
96
107import org .jooby .test .ServerFeature ;
118import org .junit .After ;
1815import com .ning .http .client .ws .WebSocketTextListener ;
1916import com .ning .http .client .ws .WebSocketUpgradeHandler ;
2017
21-
2218public class WebSocketTerminateFeature extends ServerFeature {
2319
24- private static final List < Integer > statusList = new ArrayList <>( );
20+ private static AtomicInteger state = new AtomicInteger ( 0 );
2521 {
2622 ws ("/ws" , ws -> {
2723
2824 ws .onClose (status -> {
29- statusList . add (status .code ());
25+ state . set (status .code ());
3026 });
3127
3228 ws .terminate ();
@@ -38,6 +34,7 @@ public class WebSocketTerminateFeature extends ServerFeature {
3834
3935 @ Before
4036 public void before () {
37+ state .set (0 );
4138 client = new AsyncHttpClient (new AsyncHttpClientConfig .Builder ().build ());
4239 }
4340
@@ -48,7 +45,8 @@ public void after() {
4845
4946 @ Test
5047 public void terminate () throws Exception {
51- CountDownLatch latch = new CountDownLatch (1 );
48+
49+ assertEquals (0 , state .get ());
5250
5351 client .prepareGet (ws ("ws" ).toString ())
5452 .execute (new WebSocketUpgradeHandler .Builder ().addWebSocketListener (
@@ -64,16 +62,16 @@ public void onOpen(final WebSocket websocket) {
6462
6563 @ Override
6664 public void onClose (final WebSocket websocket ) {
67- latch .countDown ();
6865 }
6966
7067 @ Override
7168 public void onError (final Throwable t ) {
7269 }
73- }).build ()).get ();
74- if (latch .await (1L , TimeUnit .SECONDS )) {
75- assertEquals (new Integer (1006 ), statusList .get (0 ));
70+ }).build ())
71+ .get ();
72+ while (1006 != state .get ()) {
73+ Thread .sleep (300L );
7674 }
77- statusList . clear ( );
75+ assertEquals ( 1006 , state . get () );
7876 }
7977}
0 commit comments