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

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

Issue 1273663002: Echo the WebSocket close reason as well as the close code (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 4 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 | « sdk/lib/io/websocket_impl.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 "dart:async"; 10 import "dart:async";
(...skipping 24 matching lines...) Expand all
35 0, 35 0,
36 backlog: backlog, 36 backlog: backlog,
37 certificateName: CERT_NAME) 37 certificateName: CERT_NAME)
38 : HttpServer.bind(HOST_NAME, 38 : HttpServer.bind(HOST_NAME,
39 0, 39 0,
40 backlog: backlog); 40 backlog: backlog);
41 41
42 Future<WebSocket> createClient(int port) => 42 Future<WebSocket> createClient(int port) =>
43 WebSocket.connect('${secure ? "wss" : "ws"}://$HOST_NAME:$port/'); 43 WebSocket.connect('${secure ? "wss" : "ws"}://$HOST_NAME:$port/');
44 44
45 checkCloseStatus(webSocket, closeStatus, closeReason) {
46 Expect.equals(closeStatus == null ? WebSocketStatus.NO_STATUS_RECEIVED
47 : closeStatus, webSocket.closeCode);
48 Expect.equals(closeReason == null ? ""
49 : closeReason, webSocket.closeReason);
50 }
51
45 void testRequestResponseClientCloses(int totalConnections, 52 void testRequestResponseClientCloses(int totalConnections,
46 int closeStatus, 53 int closeStatus,
47 String closeReason, 54 String closeReason,
48 int numberOfMessages) { 55 int numberOfMessages) {
49 assert (numberOfMessages >= 1); 56 assert (numberOfMessages >= 1);
50 57
51 asyncStart(); 58 asyncStart();
52 createServer().then((server) { 59 createServer().then((server) {
53 server.transform(new WebSocketTransformer()).listen((webSocket) { 60 server.transform(new WebSocketTransformer()).listen((webSocket) {
54 asyncStart(); 61 asyncStart();
55 webSocket.listen( 62 webSocket.listen(
56 webSocket.add, 63 webSocket.add,
57 onDone: () { 64 onDone: () {
58 Expect.equals(closeStatus == null 65 checkCloseStatus(webSocket, closeStatus, closeReason);
59 ? WebSocketStatus.NO_STATUS_RECEIVED
60 : closeStatus, webSocket.closeCode);
61 Expect.equals(
62 closeReason == null ? ""
63 : closeReason, webSocket.closeReason);
64 asyncEnd(); 66 asyncEnd();
65 }); 67 });
66 }, onDone: () { 68 }, onDone: () {
67 asyncEnd(); 69 asyncEnd();
68 }); 70 });
69 71
70 int closeCount = 0; 72 int closeCount = 0;
71 String messageText = "Hello, world!"; 73 String messageText = "Hello, world!";
72 for (int i = 0; i < totalConnections; i++) { 74 for (int i = 0; i < totalConnections; i++) {
73 asyncStart(); 75 asyncStart();
74 createClient(server.port).then((webSocket) { 76 createClient(server.port).then((webSocket) {
75 webSocket.add(messageText); 77 webSocket.add(messageText);
76 webSocket.listen( 78 webSocket.listen(
77 (message) { 79 (message) {
78 numberOfMessages--; 80 numberOfMessages--;
79 Expect.equals(messageText, message); 81 Expect.equals(messageText, message);
80 82
81 if (numberOfMessages > 0) { 83 if (numberOfMessages > 0) {
82 webSocket.add(message); 84 webSocket.add(message);
83 } else { 85 } else {
84 webSocket.close(closeStatus, closeReason); 86 webSocket.close(closeStatus, closeReason);
85 } 87 }
86 }, 88 },
87 onDone: () { 89 onDone: () {
88 Expect.equals(closeStatus == null 90 checkCloseStatus(webSocket, closeStatus, closeReason);
89 ? WebSocketStatus.NO_STATUS_RECEIVED
90 : closeStatus, webSocket.closeCode);
91 Expect.equals("", webSocket.closeReason);
92 closeCount++; 91 closeCount++;
93 if (closeCount == totalConnections) { 92 if (closeCount == totalConnections) {
94 server.close(); 93 server.close();
95 } 94 }
96 asyncEnd(); 95 asyncEnd();
97 }); 96 });
98 }); 97 });
99 } 98 }
100 }); 99 });
101 } 100 }
(...skipping 10 matching lines...) Expand all
112 (message) { 111 (message) {
113 messageCount++; 112 messageCount++;
114 if (messageCount < 10) { 113 if (messageCount < 10) {
115 Expect.equals(messageText, message); 114 Expect.equals(messageText, message);
116 webSocket.add(message); 115 webSocket.add(message);
117 } else { 116 } else {
118 webSocket.close(closeStatus, closeReason); 117 webSocket.close(closeStatus, closeReason);
119 } 118 }
120 }, 119 },
121 onDone: () { 120 onDone: () {
122 Expect.equals(closeStatus == null 121 checkCloseStatus(webSocket, closeStatus, closeReason);
123 ? WebSocketStatus.NO_STATUS_RECEIVED
124 : closeStatus, webSocket.closeCode);
125 Expect.equals("", webSocket.closeReason);
126 closeCount++; 122 closeCount++;
127 if (closeCount == totalConnections) { 123 if (closeCount == totalConnections) {
128 server.close(); 124 server.close();
129 } 125 }
130 }); 126 });
131 webSocket.add(messageText); 127 webSocket.add(messageText);
132 }); 128 });
133 129
134 for (int i = 0; i < totalConnections; i++) { 130 for (int i = 0; i < totalConnections; i++) {
135 createClient(server.port).then((webSocket) { 131 createClient(server.port).then((webSocket) {
136 webSocket.listen( 132 webSocket.listen(
137 webSocket.add, 133 webSocket.add,
138 onDone: () { 134 onDone: () {
139 Expect.equals(closeStatus == null 135 checkCloseStatus(webSocket, closeStatus, closeReason);
140 ? WebSocketStatus.NO_STATUS_RECEIVED
141 : closeStatus, webSocket.closeCode);
142 Expect.equals(closeReason == null
143 ? ""
144 : closeReason, webSocket.closeReason);
145 }); 136 });
146 }); 137 });
147 } 138 }
148 }); 139 });
149 } 140 }
150 141
151 142
152 void testMessageLength(int messageLength) { 143 void testMessageLength(int messageLength) {
153 createServer().then((server) { 144 createServer().then((server) {
154 Uint8List originalMessage = new Uint8List(messageLength); 145 Uint8List originalMessage = new Uint8List(messageLength);
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 (message) { 347 (message) {
357 messageCount++; 348 messageCount++;
358 if (messageCount < 10) { 349 if (messageCount < 10) {
359 Expect.equals(messageText, message); 350 Expect.equals(messageText, message);
360 webSocket.add(message); 351 webSocket.add(message);
361 } else { 352 } else {
362 webSocket.close(closeStatus, closeReason); 353 webSocket.close(closeStatus, closeReason);
363 } 354 }
364 }, 355 },
365 onDone: () { 356 onDone: () {
366 Expect.equals(closeStatus, webSocket.closeCode); 357 checkCloseStatus(webSocket, closeStatus, closeReason);
367 Expect.equals("", webSocket.closeReason);
368 closeCount++; 358 closeCount++;
369 if (closeCount == totalConnections) { 359 if (closeCount == totalConnections) {
370 server.close(); 360 server.close();
371 } 361 }
372 }); 362 });
373 webSocket.add(messageText); 363 webSocket.add(messageText);
374 }); 364 });
375 365
376 void webSocketConnection() { 366 void webSocketConnection() {
377 bool onopenCalled = false; 367 bool onopenCalled = false;
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
596 SecureSocket.initialize(database: testPkcertDatabase, 586 SecureSocket.initialize(database: testPkcertDatabase,
597 password: "dartdart"); 587 password: "dartdart");
598 } 588 }
599 589
600 590
601 main() { 591 main() {
602 new SecurityConfiguration(secure: false).runTests(); 592 new SecurityConfiguration(secure: false).runTests();
603 initializeSSL(); 593 initializeSSL();
604 new SecurityConfiguration(secure: true).runTests(); 594 new SecurityConfiguration(secure: true).runTests();
605 } 595 }
OLDNEW
« no previous file with comments | « sdk/lib/io/websocket_impl.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698