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

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

Issue 8437090: Change the handling of closing sockets (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Another fix to SocketCloseTest Created 9 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 | 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 // Echo server test program for testing sockets. 5 // Echo server test program for testing sockets.
6 // 6 //
7 // VMOptions= 7 // VMOptions=
8 // VMOptions=--short_socket_read 8 // VMOptions=--short_socket_read
9 // VMOptions=--short_socket_write 9 // VMOptions=--short_socket_write
10 // VMOptions=--short_socket_read --short_socket_write 10 // VMOptions=--short_socket_read --short_socket_write
11 11
12 class EchoServerTest { 12 class EchoServerTest {
13 13
14 static void testMain() { 14 static void testMain() {
15 EchoServerGame echoServerGame = new EchoServerGame.start(); 15 EchoServerGame echoServerGame = new EchoServerGame.start();
16 } 16 }
17 } 17 }
18 18
19 class EchoServerGame { 19 class EchoServerGame {
20 20
21 static final MSGSIZE = 10; 21 static final MSGSIZE = 10;
22 static final SERVERINIT = 0; 22 static final SERVERINIT = 0;
23 static final SERVERSHUTDOWN = -1; 23 static final SERVERSHUTDOWN = -1;
24 static final MESSAGES = 200; 24 static final MESSAGES = 100;
25 static final FIRSTCHAR = 65; 25 static final FIRSTCHAR = 65;
26 26
27 EchoServerGame.start() 27 EchoServerGame.start()
28 : _receivePort = new ReceivePort(), 28 : _receivePort = new ReceivePort(),
29 _sendPort = null, 29 _sendPort = null,
30 _buffer = new List<int>(MSGSIZE), 30 _buffer = new List<int>(MSGSIZE),
31 _messages = 0 { 31 _messages = 0 {
32 for (int i = 0; i < MSGSIZE; i++) { 32 for (int i = 0; i < MSGSIZE; i++) {
33 _buffer[i] = FIRSTCHAR + i; 33 _buffer[i] = FIRSTCHAR + i;
34 } 34 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 sendData(); 66 sendData();
67 } else { 67 } else {
68 shutdown(); 68 shutdown();
69 } 69 }
70 } 70 }
71 } 71 }
72 72
73 handleRead(); 73 handleRead();
74 } 74 }
75 75
76 void closeHandler() {
77 _socket.close();
78 }
79
80 void errorHandler() { 76 void errorHandler() {
81 print("Socket error"); 77 Expect.fail("Socket error");
82 _socket.close();
83 } 78 }
84 79
85 void connectHandler() { 80 void connectHandler() {
86 81
87 void writeMessage() { 82 void writeMessage() {
88 int bytesWritten = 0; 83 int bytesWritten = 0;
89 84
90 void handleWrite() { 85 void handleWrite() {
91 bytesWritten += _socket.writeList( 86 bytesWritten += _socket.writeList(
92 _buffer, bytesWritten, MSGSIZE - bytesWritten); 87 _buffer, bytesWritten, MSGSIZE - bytesWritten);
93 if (bytesWritten < MSGSIZE) { 88 if (bytesWritten < MSGSIZE) {
94 _socket.writeHandler = handleWrite; 89 _socket.writeHandler = handleWrite;
95 } 90 }
96 } 91 }
97 92
98 handleWrite(); 93 handleWrite();
99 } 94 }
100 95
101 _socket.dataHandler = messageHandler; 96 _socket.dataHandler = messageHandler;
102 _socket.closeHandler = closeHandler;
103 _socket.errorHandler = errorHandler; 97 _socket.errorHandler = errorHandler;
104 writeMessage(); 98 writeMessage();
105 } 99 }
106 100
107 _socket = new Socket(EchoServer.HOST, _port); 101 _socket = new Socket(EchoServer.HOST, _port);
108 if (_socket !== null) { 102 if (_socket !== null) {
109 _socket.connectHandler = connectHandler; 103 _socket.connectHandler = connectHandler;
110 } else { 104 } else {
111 Expect.fail("socket creation failed"); 105 Expect.fail("Socket creation failed");
112 } 106 }
113 } 107 }
114 108
115 void start() { 109 void start() {
116 _receivePort.receive((var message, SendPort replyTo) { 110 _receivePort.receive((var message, SendPort replyTo) {
117 _port = message; 111 _port = message;
118 sendData(); 112 sendData();
119 }); 113 });
120 _sendPort.send(SERVERINIT, _receivePort.toSendPort()); 114 _sendPort.send(SERVERINIT, _receivePort.toSendPort());
121 } 115 }
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 void writeMessage() { 161 void writeMessage() {
168 162
169 int bytesWritten = 0; 163 int bytesWritten = 0;
170 164
171 void handleWrite() { 165 void handleWrite() {
172 int written = _client.writeList( 166 int written = _client.writeList(
173 buffer, bytesWritten, msgSize - bytesWritten); 167 buffer, bytesWritten, msgSize - bytesWritten);
174 bytesWritten += written; 168 bytesWritten += written;
175 if (bytesWritten < msgSize) { 169 if (bytesWritten < msgSize) {
176 _client.writeHandler = handleWrite; 170 _client.writeHandler = handleWrite;
171 } else {
172 _client.close(true);
177 } 173 }
178 } 174 }
179 handleWrite(); 175 handleWrite();
180 } 176 }
181 writeMessage(); 177 writeMessage();
182 } 178 }
183 } 179 }
184 } 180 }
185 181
186 handleRead(); 182 handleRead();
187 } 183 }
188 184
189 void closeHandler() { 185 void closeHandler() {
190 _client.close(); 186 _client.close();
191 } 187 }
192 188
193 void errorHandler() { 189 void errorHandler() {
194 print("Socket error"); 190 Expect.fail("Socket error");
195 _client.close();
196 } 191 }
197 192
198 _client = _server.accept(); 193 _client = _server.accept();
199 _client.dataHandler = messageHandler; 194 _client.dataHandler = messageHandler;
200 _client.closeHandler = closeHandler; 195 _client.closeHandler = closeHandler;
201 _client.errorHandler = errorHandler; 196 _client.errorHandler = errorHandler;
202 } 197 }
203 198
204 void errorHandlerServer() { 199 void errorHandlerServer() {
205 print("Server socket error"); 200 Expect.fail("Server socket error");
206 _server.close();
207 } 201 }
208 202
209 this.port.receive((message, SendPort replyTo) { 203 this.port.receive((message, SendPort replyTo) {
210 if (message == EchoServerGame.SERVERINIT) { 204 if (message == EchoServerGame.SERVERINIT) {
211 _server = new ServerSocket(HOST, 0, 10); 205 _server = new ServerSocket(HOST, 0, 10);
212 Expect.equals(true, _server !== null); 206 Expect.equals(true, _server !== null);
213 _server.connectionHandler = connectionHandler; 207 _server.connectionHandler = connectionHandler;
214 _server.errorHandler = errorHandlerServer; 208 _server.errorHandler = errorHandlerServer;
215 replyTo.send(_server.port, null); 209 replyTo.send(_server.port, null);
216 } else if (message == EchoServerGame.SERVERSHUTDOWN) { 210 } else if (message == EchoServerGame.SERVERSHUTDOWN) {
217 _server.close(); 211 _server.close();
218 this.port.close(); 212 this.port.close();
219 } 213 }
220 }); 214 });
221 } 215 }
222 216
223 ServerSocket _server; 217 ServerSocket _server;
224 } 218 }
225 219
226 main() { 220 main() {
227 EchoServerTest.testMain(); 221 EchoServerTest.testMain();
228 } 222 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698