Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(184)

Side by Side Diff: tests/standalone/io/web_socket_compression_test.dart

Issue 1605583002: Add tests for no context takeover configurations with multiple messages. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 // 4 //
5 // VMOptions= 5 // VMOptions=
6 // VMOptions=--short_socket_read 6 // VMOptions=--short_socket_read
7 // VMOptions=--short_socket_write 7 // VMOptions=--short_socket_write
8 // VMOptions=--short_socket_read --short_socket_write 8 // VMOptions=--short_socket_read --short_socket_write
9 9
10 import "dart:async"; 10 import "dart:async";
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 }).asFuture(); 123 }).asFuture();
124 websocket.add("Hello World"); 124 websocket.add("Hello World");
125 return future; 125 return future;
126 }).then((_) { 126 }).then((_) {
127 server.close(); 127 server.close();
128 asyncEnd(); 128 asyncEnd();
129 }); 129 });
130 }); 130 });
131 } 131 }
132 132
133 void testContextSupport({CompressionOptions serverOpts,
134 CompressionOptions clientOpts,
135 int messages}) {
136 asyncStart();
137
138 createServer().then((server) {
139 server.listen((request) {
140 Expect.isTrue(WebSocketTransformer.isUpgradeRequest(request));
141 WebSocketTransformer.upgrade(request, compression: serverOpts)
142 .then((webSocket) {
143 webSocket.listen((message) {
144 Expect.equals("Hello World", message);
145 webSocket.add(message);
146 });
147 });
148 });
149
150 var url = '${secure ? "wss" : "ws"}://$HOST_NAME:${server.port}/';
151 WebSocket.connect(url, compression: clientOpts).then((websocket) {
152 var i = 1;
153 websocket.listen((message) {
154 Expect.equals("Hello World", message);
155 if (i == messages) {
156 websocket.close();
157 return;
158 }
159 websocket.add("Hello World");
160 i++;
161 }, onDone: () {
162 server.close();
163 asyncEnd();
164 });
165 websocket.add("Hello World");
166 });
167 });
168 }
169
133 void testCompressionHeaders() { 170 void testCompressionHeaders() {
134 asyncStart(); 171 asyncStart();
135 createServer().then((server) { 172 createServer().then((server) {
136 server.listen((request) { 173 server.listen((request) {
137 Expect.equals('Upgrade', request.headers.value(HttpHeaders.CONNECTION)); 174 Expect.equals('Upgrade', request.headers.value(HttpHeaders.CONNECTION));
138 Expect.equals('websocket', request.headers.value(HttpHeaders.UPGRADE)); 175 Expect.equals('websocket', request.headers.value(HttpHeaders.UPGRADE));
139 176
140 var key = request.headers.value('Sec-WebSocket-Key'); 177 var key = request.headers.value('Sec-WebSocket-Key');
141 var sha1 = new SHA1()..add("$key$WEB_SOCKET_GUID".codeUnits); 178 var sha1 = new SHA1()..add("$key$WEB_SOCKET_GUID".codeUnits);
142 var accept = CryptoUtils.bytesToBase64(sha1.close()); 179 var accept = CryptoUtils.bytesToBase64(sha1.close());
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 testCompressionSupport(); 301 testCompressionSupport();
265 // compression no takeover 302 // compression no takeover
266 testCompressionSupport(server: true, client: true); 303 testCompressionSupport(server: true, client: true);
267 // compression and context takeover. 304 // compression and context takeover.
268 testCompressionSupport(server: true, client: true, contextTakeover: true); 305 testCompressionSupport(server: true, client: true, contextTakeover: true);
269 // Compression on client but not server. No take over 306 // Compression on client but not server. No take over
270 testCompressionSupport(client: true); 307 testCompressionSupport(client: true);
271 // Compression on server but not client. 308 // Compression on server but not client.
272 testCompressionSupport(server: true); 309 testCompressionSupport(server: true);
273 310
311 // Test Multiple messages with various context takeover configurations.
312 // no context takeover on the server.
313 var serverComp = new CompressionOptions(serverNoContextTakeover: true);
314 testContextSupport(serverOpts: serverComp,
315 clientOpts: serverComp,
316 messages: 5);
317 // no contexttakeover on the client.
318 var clientComp = new CompressionOptions(clientNoContextTakeover: true);
319 testContextSupport(serverOpts: clientComp,
320 clientOpts: clientComp,
321 messages: 5);
322 // no context takeover enabled for both.
323 var compression = new CompressionOptions(serverNoContextTakeover: true,
324 clientNoContextTakeover: true);
325 testContextSupport(serverOpts: compression,
326 clientOpts: compression,
327 messages: 5);
328 // no context take over for opposing configurations.
329 testContextSupport(serverOpts: serverComp,
330 clientOpts: clientComp,
331 messages: 5);
332 testContextSupport(serverOpts: clientComp,
333 clientOpts: serverComp,
334 messages: 5);
335
274 testCompressionHeaders(); 336 testCompressionHeaders();
275 // Chrome headers 337 // Chrome headers
276 testReturnHeaders('permessage-deflate; client_max_window_bits', 338 testReturnHeaders('permessage-deflate; client_max_window_bits',
277 "permessage-deflate; client_max_window_bits=15"); 339 "permessage-deflate; client_max_window_bits=15");
278 // Firefox headers 340 // Firefox headers
279 testReturnHeaders('permessage-deflate', 341 testReturnHeaders('permessage-deflate',
280 "permessage-deflate; client_max_window_bits=15"); 342 "permessage-deflate; client_max_window_bits=15");
281 // Ensure max_window_bits resize appropriately. 343 // Ensure max_window_bits resize appropriately.
282 testReturnHeaders('permessage-deflate; server_max_window_bits=10', 344 testReturnHeaders('permessage-deflate; server_max_window_bits=10',
283 "permessage-deflate;" 345 "permessage-deflate;"
284 " server_max_window_bits=10;" 346 " server_max_window_bits=10;"
285 " client_max_window_bits=10"); 347 " client_max_window_bits=10");
286 // Don't provider context takeover if requested but not enabled. 348 // Don't provider context takeover if requested but not enabled.
287 // Default is not enabled. 349 // Default is not enabled.
288 testReturnHeaders('permessage-deflate; client_max_window_bits;' 350 testReturnHeaders('permessage-deflate; client_max_window_bits;'
289 'client_no_context_takeover', 351 'client_no_context_takeover',
290 'permessage-deflate; client_max_window_bits=15'); 352 'permessage-deflate; client_max_window_bits=15');
291 // Enable context Takeover and provide if requested. 353 // Enable context Takeover and provide if requested.
292 var compression = new CompressionOptions(clientNoContextTakeover: true, 354 compression = new CompressionOptions(clientNoContextTakeover: true,
293 serverNoContextTakeover: true); 355 serverNoContextTakeover: true);
294 testReturnHeaders('permessage-deflate; client_max_window_bits; ' 356 testReturnHeaders('permessage-deflate; client_max_window_bits; '
295 'client_no_context_takeover', 357 'client_no_context_takeover',
296 'permessage-deflate; client_no_context_takeover; ' 358 'permessage-deflate; client_no_context_takeover; '
297 'client_max_window_bits=15', 359 'client_max_window_bits=15',
298 serverCompression: compression); 360 serverCompression: compression);
299 // Enable context takeover and don't provide if not requested 361 // Enable context takeover and don't provide if not requested
300 compression = new CompressionOptions(clientNoContextTakeover: true, 362 compression = new CompressionOptions(clientNoContextTakeover: true,
301 serverNoContextTakeover: true); 363 serverNoContextTakeover: true);
302 testReturnHeaders('permessage-deflate; client_max_window_bits; ', 364 testReturnHeaders('permessage-deflate; client_max_window_bits; ',
(...skipping 11 matching lines...) Expand all
314 serverMaxWindowBits: 8); 376 serverMaxWindowBits: 8);
315 testClientRequestHeaders(compression); 377 testClientRequestHeaders(compression);
316 } 378 }
317 } 379 }
318 380
319 main() { 381 main() {
320 new SecurityConfiguration(secure: false).runTests(); 382 new SecurityConfiguration(secure: false).runTests();
321 // TODO(whesse): Make WebSocket.connect() take an optional context: parameter. 383 // TODO(whesse): Make WebSocket.connect() take an optional context: parameter.
322 // new SecurityConfiguration(secure: true).runTests(); 384 // new SecurityConfiguration(secure: true).runTests();
323 } 385 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698