@@ -109,45 +109,7 @@ public void testMessagesReceivedInOrder() throws Exception {
109
109
final CountDownLatch done = new CountDownLatch (1 );
110
110
final AtomicReference <String > error = new AtomicReference <>();
111
111
ContainerProvider .getWebSocketContainer ()
112
- .connectToServer (new Endpoint () {
113
- @ Override
114
- public void onOpen (final Session session , EndpointConfig endpointConfig ) {
115
-
116
- try {
117
- RemoteEndpoint .Basic rem = session .getBasicRemote ();
118
- List <String > messages = new ArrayList <>();
119
- for (int i = 0 ; i < MESSAGES ; i ++) {
120
- byte [] data = new byte [2048 ];
121
- (new Random ()).nextBytes (data );
122
- String crc = md5 (data );
123
- rem .sendBinary (ByteBuffer .wrap (data ));
124
- messages .add (crc );
125
- }
126
-
127
- List <String > received = EchoSocket .receivedEchos .getIoFuture ().get ();
128
- StringBuilder sb = new StringBuilder ();
129
- boolean fail = false ;
130
- for (int i = 0 ; i < messages .size (); i ++) {
131
- if (received .size () <= i ) {
132
- fail = true ;
133
- sb .append (i + ": should be " + messages .get (i ) + " but is empty." );
134
- } else {
135
- if (!messages .get (i ).equals (received .get (i ))) {
136
- fail = true ;
137
- sb .append (i + ": should be " + messages .get (i ) + " but is " + received .get (i ) + " (but found at " + received .indexOf (messages .get (i )) + ")." );
138
- }
139
- }
140
- }
141
- if (fail ) {
142
- error .set (sb .toString ());
143
- }
144
- done .countDown ();
145
-
146
- } catch (Throwable t ) {
147
- t .printStackTrace ();
148
- }
149
- }
150
- }, clientEndpointConfig , new URI (DefaultServer .getDefaultServerURL () + "/webSocket" )
112
+ .connectToServer (new MessageOrderValidatorEndpoint (error , done ), clientEndpointConfig , new URI (DefaultServer .getDefaultServerURL () + "/webSocket" )
151
113
);
152
114
assertTrue (done .await (30 , TimeUnit .SECONDS ));
153
115
if (error .get () != null ) {
@@ -186,4 +148,52 @@ private static String md5(byte[] buffer) {
186
148
throw new InternalError ("MD5 not supported on this platform" );
187
149
}
188
150
}
151
+
152
+ private static class MessageOrderValidatorEndpoint extends Endpoint {
153
+ private final AtomicReference <String > error ;
154
+ private final CountDownLatch done ;
155
+
156
+ MessageOrderValidatorEndpoint (AtomicReference <String > error , CountDownLatch done ) {
157
+ this .error = error ;
158
+ this .done = done ;
159
+ }
160
+
161
+ @ Override
162
+ public void onOpen (final Session session , EndpointConfig endpointConfig ) {
163
+
164
+ try {
165
+ RemoteEndpoint .Basic rem = session .getBasicRemote ();
166
+ List <String > messages = new ArrayList <>();
167
+ for (int i = 0 ; i < MESSAGES ; i ++) {
168
+ byte [] data = new byte [2048 ];
169
+ (new Random ()).nextBytes (data );
170
+ String crc = md5 (data );
171
+ rem .sendBinary (ByteBuffer .wrap (data ));
172
+ messages .add (crc );
173
+ }
174
+
175
+ List <String > received = EchoSocket .receivedEchos .getIoFuture ().get ();
176
+ StringBuilder sb = new StringBuilder ();
177
+ boolean fail = false ;
178
+ for (int i = 0 ; i < messages .size (); i ++) {
179
+ if (received .size () <= i ) {
180
+ fail = true ;
181
+ sb .append (i + ": should be " + messages .get (i ) + " but is empty." );
182
+ } else {
183
+ if (!messages .get (i ).equals (received .get (i ))) {
184
+ fail = true ;
185
+ sb .append (i + ": should be " + messages .get (i ) + " but is " + received .get (i ) + " (but found at " + received .indexOf (messages .get (i )) + ")." );
186
+ }
187
+ }
188
+ }
189
+ if (fail ) {
190
+ error .set (sb .toString ());
191
+ }
192
+ done .countDown ();
193
+
194
+ } catch (Throwable t ) {
195
+ t .printStackTrace ();
196
+ }
197
+ }
198
+ }
189
199
}
0 commit comments