| OLD | NEW |
| 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"; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 | 37 |
| 38 Future<WebSocket> createClient(int port) => | 38 Future<WebSocket> createClient(int port) => |
| 39 WebSocket.connect('${secure ? "wss" : "ws"}://$HOST_NAME:$port/'); | 39 WebSocket.connect('${secure ? "wss" : "ws"}://$HOST_NAME:$port/'); |
| 40 | 40 |
| 41 void testRequestResponseClientCloses(int totalConnections, | 41 void testRequestResponseClientCloses(int totalConnections, |
| 42 int closeStatus, | 42 int closeStatus, |
| 43 String closeReason) { | 43 String closeReason) { |
| 44 createServer().then((server) { | 44 createServer().then((server) { |
| 45 server.transform(new WebSocketTransformer()).listen((webSocket) { | 45 server.transform(new WebSocketTransformer()).listen((webSocket) { |
| 46 webSocket.listen( | 46 webSocket.listen( |
| 47 webSocket.send, | 47 webSocket.add, |
| 48 onDone: () { | 48 onDone: () { |
| 49 Expect.equals(closeStatus == null | 49 Expect.equals(closeStatus == null |
| 50 ? WebSocketStatus.NO_STATUS_RECEIVED | 50 ? WebSocketStatus.NO_STATUS_RECEIVED |
| 51 : closeStatus, webSocket.closeCode); | 51 : closeStatus, webSocket.closeCode); |
| 52 Expect.equals(closeReason == null ? "" : closeReason, webSocket.cl
oseReason); | 52 Expect.equals(closeReason == null ? "" : closeReason, webSocket.cl
oseReason); |
| 53 }); | 53 }); |
| 54 }); | 54 }); |
| 55 | 55 |
| 56 int closeCount = 0; | 56 int closeCount = 0; |
| 57 String messageText = "Hello, world!"; | 57 String messageText = "Hello, world!"; |
| 58 for (int i = 0; i < totalConnections; i++) { | 58 for (int i = 0; i < totalConnections; i++) { |
| 59 int messageCount = 0; | 59 int messageCount = 0; |
| 60 createClient(server.port).then((webSocket) { | 60 createClient(server.port).then((webSocket) { |
| 61 webSocket.send(messageText); | 61 webSocket.add(messageText); |
| 62 webSocket.listen( | 62 webSocket.listen( |
| 63 (message) { | 63 (message) { |
| 64 messageCount++; | 64 messageCount++; |
| 65 if (messageCount < 1 ) { | 65 if (messageCount < 1 ) { |
| 66 Expect.equals(messageText, message); | 66 Expect.equals(messageText, message); |
| 67 webSocket.send(message); | 67 webSocket.add(message); |
| 68 } else { | 68 } else { |
| 69 webSocket.close(closeStatus, closeReason); | 69 webSocket.close(closeStatus, closeReason); |
| 70 } | 70 } |
| 71 }, | 71 }, |
| 72 onDone: () { | 72 onDone: () { |
| 73 Expect.equals(closeStatus == null | 73 Expect.equals(closeStatus == null |
| 74 ? WebSocketStatus.NO_STATUS_RECEIVED | 74 ? WebSocketStatus.NO_STATUS_RECEIVED |
| 75 : closeStatus, webSocket.closeCode); | 75 : closeStatus, webSocket.closeCode); |
| 76 Expect.equals("", webSocket.closeReason); | 76 Expect.equals("", webSocket.closeReason); |
| 77 closeCount++; | 77 closeCount++; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 90 createServer().then((server) { | 90 createServer().then((server) { |
| 91 int closeCount = 0; | 91 int closeCount = 0; |
| 92 server.transform(new WebSocketTransformer()).listen((webSocket) { | 92 server.transform(new WebSocketTransformer()).listen((webSocket) { |
| 93 String messageText = "Hello, world!"; | 93 String messageText = "Hello, world!"; |
| 94 int messageCount = 0; | 94 int messageCount = 0; |
| 95 webSocket.listen( | 95 webSocket.listen( |
| 96 (message) { | 96 (message) { |
| 97 messageCount++; | 97 messageCount++; |
| 98 if (messageCount < 10) { | 98 if (messageCount < 10) { |
| 99 Expect.equals(messageText, message); | 99 Expect.equals(messageText, message); |
| 100 webSocket.send(message); | 100 webSocket.add(message); |
| 101 } else { | 101 } else { |
| 102 webSocket.close(closeStatus, closeReason); | 102 webSocket.close(closeStatus, closeReason); |
| 103 } | 103 } |
| 104 }, | 104 }, |
| 105 onDone: () { | 105 onDone: () { |
| 106 Expect.equals(closeStatus == null | 106 Expect.equals(closeStatus == null |
| 107 ? WebSocketStatus.NO_STATUS_RECEIVED | 107 ? WebSocketStatus.NO_STATUS_RECEIVED |
| 108 : closeStatus, webSocket.closeCode); | 108 : closeStatus, webSocket.closeCode); |
| 109 Expect.equals("", webSocket.closeReason); | 109 Expect.equals("", webSocket.closeReason); |
| 110 closeCount++; | 110 closeCount++; |
| 111 if (closeCount == totalConnections) { | 111 if (closeCount == totalConnections) { |
| 112 server.close(); | 112 server.close(); |
| 113 } | 113 } |
| 114 }); | 114 }); |
| 115 webSocket.send(messageText); | 115 webSocket.add(messageText); |
| 116 }); | 116 }); |
| 117 | 117 |
| 118 for (int i = 0; i < totalConnections; i++) { | 118 for (int i = 0; i < totalConnections; i++) { |
| 119 createClient(server.port).then((webSocket) { | 119 createClient(server.port).then((webSocket) { |
| 120 webSocket.listen( | 120 webSocket.listen( |
| 121 webSocket.send, | 121 webSocket.add, |
| 122 onDone: () { | 122 onDone: () { |
| 123 Expect.equals(closeStatus == null | 123 Expect.equals(closeStatus == null |
| 124 ? WebSocketStatus.NO_STATUS_RECEIVED | 124 ? WebSocketStatus.NO_STATUS_RECEIVED |
| 125 : closeStatus, webSocket.closeCode); | 125 : closeStatus, webSocket.closeCode); |
| 126 Expect.equals(closeReason == null | 126 Expect.equals(closeReason == null |
| 127 ? "" | 127 ? "" |
| 128 : closeReason, webSocket.closeReason); | 128 : closeReason, webSocket.closeReason); |
| 129 }); | 129 }); |
| 130 }); | 130 }); |
| 131 } | 131 } |
| 132 }); | 132 }); |
| 133 } | 133 } |
| 134 | 134 |
| 135 | 135 |
| 136 void testMessageLength(int messageLength) { | 136 void testMessageLength(int messageLength) { |
| 137 createServer().then((server) { | 137 createServer().then((server) { |
| 138 Uint8List originalMessage = new Uint8List(messageLength); | 138 Uint8List originalMessage = new Uint8List(messageLength); |
| 139 server.transform(new WebSocketTransformer()).listen((webSocket) { | 139 server.transform(new WebSocketTransformer()).listen((webSocket) { |
| 140 webSocket.listen( | 140 webSocket.listen( |
| 141 (message) { | 141 (message) { |
| 142 Expect.listEquals(originalMessage, message); | 142 Expect.listEquals(originalMessage, message); |
| 143 webSocket.send(message); | 143 webSocket.add(message); |
| 144 }); | 144 }); |
| 145 }); | 145 }); |
| 146 | 146 |
| 147 createClient(server.port).then((webSocket) { | 147 createClient(server.port).then((webSocket) { |
| 148 webSocket.listen( | 148 webSocket.listen( |
| 149 (message) { | 149 (message) { |
| 150 Expect.listEquals(originalMessage, message); | 150 Expect.listEquals(originalMessage, message); |
| 151 webSocket.close(); | 151 webSocket.close(); |
| 152 }, | 152 }, |
| 153 onDone: server.close); | 153 onDone: server.close); |
| 154 webSocket.send(originalMessage); | 154 webSocket.add(originalMessage); |
| 155 }); | 155 }); |
| 156 }); | 156 }); |
| 157 } | 157 } |
| 158 | 158 |
| 159 | 159 |
| 160 void testDoubleCloseClient() { | 160 void testDoubleCloseClient() { |
| 161 createServer().then((server) { | 161 createServer().then((server) { |
| 162 server.transform(new WebSocketTransformer()).listen((webSocket) { | 162 server.transform(new WebSocketTransformer()).listen((webSocket) { |
| 163 server.close(); | 163 server.close(); |
| 164 webSocket.listen((_) { }, onDone: webSocket.close); | 164 webSocket.listen((_) { }, onDone: webSocket.close); |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 266 createServer().then((server) { | 266 createServer().then((server) { |
| 267 int closeCount = 0; | 267 int closeCount = 0; |
| 268 server.transform(new WebSocketTransformer()).listen((webSocket) { | 268 server.transform(new WebSocketTransformer()).listen((webSocket) { |
| 269 String messageText = "Hello, world!"; | 269 String messageText = "Hello, world!"; |
| 270 int messageCount = 0; | 270 int messageCount = 0; |
| 271 webSocket.listen( | 271 webSocket.listen( |
| 272 (message) { | 272 (message) { |
| 273 messageCount++; | 273 messageCount++; |
| 274 if (messageCount < 10) { | 274 if (messageCount < 10) { |
| 275 Expect.equals(messageText, message); | 275 Expect.equals(messageText, message); |
| 276 webSocket.send(message); | 276 webSocket.add(message); |
| 277 } else { | 277 } else { |
| 278 webSocket.close(closeStatus, closeReason); | 278 webSocket.close(closeStatus, closeReason); |
| 279 } | 279 } |
| 280 }, | 280 }, |
| 281 onDone: () { | 281 onDone: () { |
| 282 Expect.equals(closeStatus, webSocket.closeCode); | 282 Expect.equals(closeStatus, webSocket.closeCode); |
| 283 Expect.equals("", webSocket.closeReason); | 283 Expect.equals("", webSocket.closeReason); |
| 284 closeCount++; | 284 closeCount++; |
| 285 if (closeCount == totalConnections) { | 285 if (closeCount == totalConnections) { |
| 286 server.close(); | 286 server.close(); |
| 287 } | 287 } |
| 288 }); | 288 }); |
| 289 webSocket.send(messageText); | 289 webSocket.add(messageText); |
| 290 }); | 290 }); |
| 291 | 291 |
| 292 void webSocketConnection() { | 292 void webSocketConnection() { |
| 293 bool onopenCalled = false; | 293 bool onopenCalled = false; |
| 294 int onmessageCalled = 0; | 294 int onmessageCalled = 0; |
| 295 bool oncloseCalled = false; | 295 bool oncloseCalled = false; |
| 296 | 296 |
| 297 createClient(server.port).then((webSocket) { | 297 createClient(server.port).then((webSocket) { |
| 298 Expect.isFalse(onopenCalled); | 298 Expect.isFalse(onopenCalled); |
| 299 Expect.equals(0, onmessageCalled); | 299 Expect.equals(0, onmessageCalled); |
| 300 Expect.isFalse(oncloseCalled); | 300 Expect.isFalse(oncloseCalled); |
| 301 onopenCalled = true; | 301 onopenCalled = true; |
| 302 Expect.equals(WebSocket.OPEN, webSocket.readyState); | 302 Expect.equals(WebSocket.OPEN, webSocket.readyState); |
| 303 webSocket.listen( | 303 webSocket.listen( |
| 304 (message) { | 304 (message) { |
| 305 onmessageCalled++; | 305 onmessageCalled++; |
| 306 Expect.isTrue(onopenCalled); | 306 Expect.isTrue(onopenCalled); |
| 307 Expect.isFalse(oncloseCalled); | 307 Expect.isFalse(oncloseCalled); |
| 308 Expect.equals(WebSocket.OPEN, webSocket.readyState); | 308 Expect.equals(WebSocket.OPEN, webSocket.readyState); |
| 309 webSocket.send(message); | 309 webSocket.add(message); |
| 310 }, | 310 }, |
| 311 onDone: () { | 311 onDone: () { |
| 312 Expect.isTrue(onopenCalled); | 312 Expect.isTrue(onopenCalled); |
| 313 Expect.equals(10, onmessageCalled); | 313 Expect.equals(10, onmessageCalled); |
| 314 Expect.isFalse(oncloseCalled); | 314 Expect.isFalse(oncloseCalled); |
| 315 oncloseCalled = true; | 315 oncloseCalled = true; |
| 316 Expect.equals(3002, webSocket.closeCode); | 316 Expect.equals(3002, webSocket.closeCode); |
| 317 Expect.equals("Got tired", webSocket.closeReason); | 317 Expect.equals("Got tired", webSocket.closeReason); |
| 318 Expect.equals(WebSocket.CLOSED, webSocket.readyState); | 318 Expect.equals(WebSocket.CLOSED, webSocket.readyState); |
| 319 }); | 319 }); |
| 320 }); | 320 }); |
| 321 } | 321 } |
| 322 | 322 |
| 323 for (int i = 0; i < totalConnections; i++) { | 323 for (int i = 0; i < totalConnections; i++) { |
| 324 webSocketConnection(); | 324 webSocketConnection(); |
| 325 } | 325 } |
| 326 }); | 326 }); |
| 327 } | 327 } |
| 328 | 328 |
| 329 testIndivitualUpgrade(int connections) { | 329 testIndivitualUpgrade(int connections) { |
| 330 createServer().then((server) { | 330 createServer().then((server) { |
| 331 server.listen((request) { | 331 server.listen((request) { |
| 332 if (WebSocketTransformer.isUpgradeRequest(request)) { | 332 if (WebSocketTransformer.isUpgradeRequest(request)) { |
| 333 WebSocketTransformer.upgrade(request).then((webSocket) { | 333 WebSocketTransformer.upgrade(request).then((webSocket) { |
| 334 webSocket.listen((_) { webSocket.close(); }); | 334 webSocket.listen((_) { webSocket.close(); }); |
| 335 webSocket.send("Hello"); | 335 webSocket.add("Hello"); |
| 336 }); | 336 }); |
| 337 } else { | 337 } else { |
| 338 Expect.isFalse(WebSocketTransformer.isUpgradeRequest(request)); | 338 Expect.isFalse(WebSocketTransformer.isUpgradeRequest(request)); |
| 339 request.response.statusCode = HttpStatus.OK; | 339 request.response.statusCode = HttpStatus.OK; |
| 340 request.response.close(); | 340 request.response.close(); |
| 341 } | 341 } |
| 342 }); | 342 }); |
| 343 | 343 |
| 344 var futures = []; | 344 var futures = []; |
| 345 | 345 |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 403 SecureSocket.initialize(database: testPkcertDatabase.toNativePath(), | 403 SecureSocket.initialize(database: testPkcertDatabase.toNativePath(), |
| 404 password: "dartdart"); | 404 password: "dartdart"); |
| 405 } | 405 } |
| 406 | 406 |
| 407 | 407 |
| 408 main() { | 408 main() { |
| 409 new SecurityConfiguration(secure: false).runTests(); | 409 new SecurityConfiguration(secure: false).runTests(); |
| 410 initializeSSL(); | 410 initializeSSL(); |
| 411 new SecurityConfiguration(secure: true).runTests(); | 411 new SecurityConfiguration(secure: true).runTests(); |
| 412 } | 412 } |
| OLD | NEW |