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

Side by Side Diff: tests/standalone/src/SocketManyConnectionsTest.dart

Issue 8662038: Refactor some of the duplicated code in the tests using a socket server (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Minor fix Created 9 years 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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 // Test creating a large number of socket connections. 5 // Test creating a large number of socket connections.
6 6
7 final SERVERINIT = 0; 7 #source("TestingServer.dart");
8 final SERVERSHUTDOWN = -1; 8
9 final CONNECTIONS = 200; 9 final CONNECTIONS = 200;
10 final HOST = "127.0.0.1";
11 10
12 class SocketManyConnectionsTest { 11 class SocketManyConnectionsTest {
13 12
14 SocketManyConnectionsTest.start() 13 SocketManyConnectionsTest.start()
15 : _receivePort = new ReceivePort(), 14 : _receivePort = new ReceivePort(),
16 _sendPort = null, 15 _sendPort = null,
17 _connections = 0, 16 _connections = 0,
18 _sockets = new List<Socket>(CONNECTIONS) { 17 _sockets = new List<Socket>(CONNECTIONS) {
19 new TestServer().spawn().then((SendPort port) { 18 new TestServer().spawn().then((SendPort port) {
20 _sendPort = port; 19 _sendPort = port;
21 start(); 20 start();
22 }); 21 });
23 } 22 }
24 23
25 void run() { 24 void run() {
26 25
27 void connectHandler() { 26 void connectHandler() {
28 _connections++; 27 _connections++;
29 if (_connections == CONNECTIONS) { 28 if (_connections == CONNECTIONS) {
30 for (int i = 0; i < CONNECTIONS; i++) { 29 for (int i = 0; i < CONNECTIONS; i++) {
31 _sockets[i].close(); 30 _sockets[i].close();
32 } 31 }
33 shutdown(); 32 shutdown();
34 } 33 }
35 } 34 }
36 35
37 for (int i = 0; i < CONNECTIONS; i++) { 36 for (int i = 0; i < CONNECTIONS; i++) {
38 _sockets[i] = new Socket(HOST, _port); 37 _sockets[i] = new Socket(TestingServer.HOST, _port);
39 if (_sockets[i] !== null) { 38 if (_sockets[i] !== null) {
40 _sockets[i].connectHandler = connectHandler; 39 _sockets[i].connectHandler = connectHandler;
41 } else { 40 } else {
42 Expect.fail("socket creation failed"); 41 Expect.fail("socket creation failed");
43 } 42 }
44 } 43 }
45 } 44 }
46 45
47 void start() { 46 void start() {
48 _receivePort.receive((var message, SendPort replyTo) { 47 _receivePort.receive((var message, SendPort replyTo) {
49 _port = message; 48 _port = message;
50 run(); 49 run();
51 }); 50 });
52 _sendPort.send(SERVERINIT, _receivePort.toSendPort()); 51 _sendPort.send(TestingServer.INIT, _receivePort.toSendPort());
53 } 52 }
54 53
55 void shutdown() { 54 void shutdown() {
56 _sendPort.send(SERVERSHUTDOWN, _receivePort.toSendPort()); 55 _sendPort.send(TestingServer.SHUTDOWN, _receivePort.toSendPort());
57 _receivePort.close(); 56 _receivePort.close();
58 } 57 }
59 58
60 int _port; 59 int _port;
61 ReceivePort _receivePort; 60 ReceivePort _receivePort;
62 SendPort _sendPort; 61 SendPort _sendPort;
63 List<Socket> _sockets; 62 List<Socket> _sockets;
64 int _connections; 63 int _connections;
65 } 64 }
66 65
67 class TestServer extends Isolate { 66 class TestServer extends TestingServer {
68 67
69 void main() { 68 void connectionHandler() {
69 Socket _client;
70 70
71 void connectionHandler() { 71 void closeHandler() {
72 Socket _client; 72 _client.close();
73
74 void closeHandler() {
75 _client.close();
76 }
77
78 void errorHandler() {
79 print("Socket error");
80 _client.close();
81 }
82
83 _client = _server.accept();
84 _connections++;
85 _client.closeHandler = closeHandler;
86 _client.errorHandler = errorHandler;
87 } 73 }
88 74
89 void errorHandlerServer() { 75 void errorHandler() {
90 print("Server socket error"); 76 print("Socket error");
91 _server.close(); 77 _client.close();
92 } 78 }
93 79
94 this.port.receive((message, SendPort replyTo) { 80 _client = _server.accept();
95 if (message == SERVERINIT) { 81 _connections++;
96 _server = new ServerSocket(HOST, 0, 10); 82 _client.closeHandler = closeHandler;
97 Expect.equals(true, _server !== null); 83 _client.errorHandler = errorHandler;
98 _server.connectionHandler = connectionHandler;
99 _server.errorHandler = errorHandlerServer;
100 replyTo.send(_server.port, null);
101 } else if (message == SERVERSHUTDOWN) {
102 _server.close();
103 this.port.close();
104 }
105 });
106 } 84 }
107 85
108 ServerSocket _server;
109 int _connections = 0; 86 int _connections = 0;
110 } 87 }
111 88
112 main() { 89 main() {
113 SocketManyConnectionsTest test = new SocketManyConnectionsTest.start(); 90 SocketManyConnectionsTest test = new SocketManyConnectionsTest.start();
114 } 91 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698