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

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

Issue 1390353005: Web Socket compression - take two (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Fix observatory issues Created 5 years, 1 month 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 | « tests/standalone/io/web_socket_compression_test.dart ('k') | 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 "package:expect/expect.dart"; 10 import "package:expect/expect.dart";
11 import "dart:async"; 11 import "dart:async";
12 import "dart:io"; 12 import "dart:io";
13 import "dart:isolate"; 13 import "dart:isolate";
14 import "dart:typed_data"; 14 import "dart:typed_data";
15 15
16 Future<HttpServer> createServer() => HttpServer.bind("127.0.0.1", 0); 16 Future<HttpServer> createServer() => HttpServer.bind("127.0.0.1", 0);
17 17
18 Future<WebSocket> createClient(int port) => 18 Future<WebSocket> createClient(int port, bool compression) =>
19 WebSocket.connect('ws://127.0.0.1:$port/'); 19 compression ? WebSocket.connect('ws://127.0.0.1:$port/')
20 : WebSocket.connect('ws://127.0.0.1:$port/',
21 compression: CompressionOptions.OFF);
20 22
21 void test(expected, testData) { 23 void test(expected, testData, compression) {
22 createServer().then((server) { 24 createServer().then((server) {
23 var messageCount = 0; 25 var messageCount = 0;
24 server.transform(new WebSocketTransformer()).listen((webSocket) { 26 var transformer = compression ? new WebSocketTransformer()
27 : new WebSocketTransformer(compression: CompressionOptions.OFF);
28 server.transform(transformer).listen((webSocket) {
25 webSocket.listen( 29 webSocket.listen(
26 (message) { 30 (message) {
27 Expect.listEquals(expected, message); 31 Expect.listEquals(expected, message);
28 webSocket.add(testData[messageCount]); 32 webSocket.add(testData[messageCount]);
29 messageCount++; 33 messageCount++;
30 }, 34 },
31 onDone: () => Expect.equals(testData.length, messageCount)); 35 onDone: () => Expect.equals(testData.length, messageCount));
32 }); 36 });
33 37
34 createClient(server.port).then((webSocket) { 38 createClient(server.port, compression).then((webSocket) {
35 var messageCount = 0; 39 var messageCount = 0;
36 webSocket.listen( 40 webSocket.listen(
37 (message) { 41 (message) {
38 Expect.listEquals(expected, message); 42 Expect.listEquals(expected, message);
39 messageCount++; 43 messageCount++;
40 if (messageCount == testData.length) webSocket.close(); 44 if (messageCount == testData.length) webSocket.close();
41 }, 45 },
42 onDone: server.close); 46 onDone: server.close);
43 testData.forEach(webSocket.add); 47 testData.forEach(webSocket.add);
44 }); 48 });
45 }); 49 });
46 } 50 }
47 51
48 testUintLists() { 52 testUintLists({bool compression: false}) {
49 var fillData = new List.generate(256, (index) => index); 53 var fillData = new List.generate(256, (index) => index);
50 var testData = [ 54 var testData = [
51 new Uint8List(256), 55 new Uint8List(256),
52 new Uint8ClampedList(256), 56 new Uint8ClampedList(256),
53 new Uint16List(256), 57 new Uint16List(256),
54 new Uint32List(256), 58 new Uint32List(256),
55 new Uint64List(256), 59 new Uint64List(256),
56 ]; 60 ];
57 testData.forEach((list) => list.setAll(0, fillData)); 61 testData.forEach((list) => list.setAll(0, fillData));
58 test(fillData, testData); 62 test(fillData, testData, compression);
59 } 63 }
60 64
61 testIntLists() { 65 testIntLists({bool compression: false}) {
62 var fillData = new List.generate(128, (index) => index); 66 var fillData = new List.generate(128, (index) => index);
63 var testData = [ 67 var testData = [
64 new Int8List(128), 68 new Int8List(128),
65 new Int16List(128), 69 new Int16List(128),
66 new Int32List(128), 70 new Int32List(128),
67 new Int64List(128), 71 new Int64List(128),
68 ]; 72 ];
69 testData.forEach((list) => list.setAll(0, fillData)); 73 testData.forEach((list) => list.setAll(0, fillData));
70 test(fillData, testData); 74 test(fillData, testData, compression);
71 } 75 }
72 76
73 void testOutOfRangeClient() { 77 void testOutOfRangeClient({bool compression: false}) {
74 createServer().then((server) { 78 createServer().then((server) {
75 var messageCount = 0; 79 var messageCount = 0;
76 server.transform(new WebSocketTransformer()).listen((webSocket) { 80 var transformer = compression ? new WebSocketTransformer()
81 : new WebSocketTransformer(compression: CompressionOptions.OFF);
82 server.transform(transformer).listen((webSocket) {
77 webSocket.listen((message) => Expect.fail("No message expected")); 83 webSocket.listen((message) => Expect.fail("No message expected"));
78 }); 84 });
79 85
80 Future clientError(data) { 86 Future clientError(data) {
81 return createClient(server.port).then((webSocket) { 87 return createClient(server.port, compression).then((webSocket) {
82 var messageCount = 0; 88 var messageCount = 0;
83 webSocket.listen((message) => Expect.fail("No message expected")); 89 webSocket.listen((message) => Expect.fail("No message expected"));
84 webSocket.add(data); 90 webSocket.add(data);
85 webSocket.close(); 91 webSocket.close();
86 return webSocket.done; 92 return webSocket.done;
87 }); 93 });
88 } 94 }
89 95
90 Future expectError(data) { 96 Future expectError(data) {
91 var completer = new Completer(); 97 var completer = new Completer();
(...skipping 30 matching lines...) Expand all
122 futures.add(expectError(data)); 128 futures.add(expectError(data));
123 data[0] = -1; 129 data[0] = -1;
124 futures.add(expectError(data)); 130 futures.add(expectError(data));
125 futures.add(expectError([-1])); 131 futures.add(expectError([-1]));
126 futures.add(expectError([256])); 132 futures.add(expectError([256]));
127 133
128 Future.wait(futures).then((_) => server.close()); 134 Future.wait(futures).then((_) => server.close());
129 }); 135 });
130 } 136 }
131 137
132 void testOutOfRangeServer() { 138 void testOutOfRangeServer({bool compression: false}) {
133 var futures = []; 139 var futures = [];
134 var testData = []; 140 var testData = [];
135 var data; 141 var data;
136 data = new Uint16List(1); 142 data = new Uint16List(1);
137 data[0] = 256; 143 data[0] = 256;
138 testData.add(data); 144 testData.add(data);
139 data = new Uint32List(1); 145 data = new Uint32List(1);
140 data[0] = 256; 146 data[0] = 256;
141 testData.add(data); 147 testData.add(data);
142 data = new Uint64List(1); 148 data = new Uint64List(1);
(...skipping 25 matching lines...) Expand all
168 Future expectError(future) { 174 Future expectError(future) {
169 var completer = new Completer(); 175 var completer = new Completer();
170 future 176 future
171 .then((_) => completer.completeError("Message $data did not fail")) 177 .then((_) => completer.completeError("Message $data did not fail"))
172 .catchError((e) => completer.complete(true)); 178 .catchError((e) => completer.complete(true));
173 return completer.future; 179 return completer.future;
174 } 180 }
175 181
176 createServer().then((server) { 182 createServer().then((server) {
177 var messageCount = 0; 183 var messageCount = 0;
178 server.transform(new WebSocketTransformer()).listen((webSocket) { 184 var transformer = compression ? new WebSocketTransformer()
185 : new WebSocketTransformer(compression: CompressionOptions.OFF);
186 server.transform(transformer).listen((webSocket) {
179 webSocket.listen((message) { 187 webSocket.listen((message) {
180 messageCount++; 188 messageCount++;
181 webSocket.add(testData[message[0]]); 189 webSocket.add(testData[message[0]]);
182 webSocket.close(); 190 webSocket.close();
183 futures.add(expectError(webSocket.done)); 191 futures.add(expectError(webSocket.done));
184 if (messageCount == testData.length) allDone.complete(true); 192 if (messageCount == testData.length) allDone.complete(true);
185 }); 193 });
186 }); 194 });
187 195
188 Future x(int i) { 196 Future x(int i) {
189 var completer = new Completer(); 197 var completer = new Completer();
190 createClient(server.port).then((webSocket) { 198 createClient(server.port, compression).then((webSocket) {
191 webSocket.listen((message) => Expect.fail("No message expected"), 199 webSocket.listen((message) => Expect.fail("No message expected"),
192 onDone: () => completer.complete(true), 200 onDone: () => completer.complete(true),
193 onError: (e) => completer.completeError(e)); 201 onError: (e) => completer.completeError(e));
194 webSocket.add(new List()..add(i)); 202 webSocket.add(new List()..add(i));
195 }); 203 });
196 return completer.future; 204 return completer.future;
197 } 205 }
198 206
199 for (int i = 0; i < testData.length; i++) futures.add(x(i)); 207 for (int i = 0; i < testData.length; i++) futures.add(x(i));
200 allDone.future.then( 208 allDone.future.then(
201 (_) => Future.wait(futures).then((_) => server.close())); 209 (_) => Future.wait(futures).then((_) => server.close()));
202 }); 210 });
203 } 211 }
204 212
205 main() { 213 main() {
206 testUintLists(); 214 testUintLists();
215 testUintLists(compression: true);
207 testIntLists(); 216 testIntLists();
217 testIntLists(compression: true);
208 testOutOfRangeClient(); 218 testOutOfRangeClient();
219 testOutOfRangeClient(compression: true);
209 // testOutOfRangeServer(); 220 // testOutOfRangeServer();
221 // testOutOfRangeServer(compression: true);
210 } 222 }
OLDNEW
« no previous file with comments | « tests/standalone/io/web_socket_compression_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698