Index: tests/standalone/io/socket_close_test.dart |
diff --git a/tests/standalone/io/socket_close_test.dart b/tests/standalone/io/socket_close_test.dart |
index 3dddf4efbef5c96f9e4e985fc7ecb708ab1dd27c..dcb90a245aa0f451b7ebacc75c75c4c7571764d8 100644 |
--- a/tests/standalone/io/socket_close_test.dart |
+++ b/tests/standalone/io/socket_close_test.dart |
@@ -1,4 +1,4 @@ |
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
+// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
// for details. All rights reserved. Use of this source code is governed by a |
// BSD-style license that can be found in the LICENSE file. |
// |
@@ -41,7 +41,7 @@ class SocketClose { |
void sendData() { |
- void dataHandler() { |
+ void dataHandler(bytes) { |
switch (_mode) { |
case 0: |
case 1: |
@@ -52,8 +52,7 @@ class SocketClose { |
case 4: |
case 5: |
case 6: |
- List<int> b = new List<int>.fixedLength(5); |
- _readBytes += _socket.readList(b, 0, 5); |
+ _readBytes += bytes.length; |
if ((_readBytes % 5) == 0) { |
_dataEvents++; |
} |
@@ -63,23 +62,23 @@ class SocketClose { |
} |
} |
- void closeHandler() { |
+ void closeHandler(socket) { |
_closeEvents++; |
switch (_mode) { |
case 0: |
case 1: |
- Expect.fail("No close expected"); |
+ socket.close(); |
break; |
case 2: |
case 3: |
- _socket.close(); |
+ socket.close(); |
proceed(); |
break; |
case 4: |
proceed(); |
break; |
case 5: |
- _socket.close(); |
+ socket.close(); |
proceed(); |
break; |
case 6: |
@@ -92,32 +91,28 @@ class SocketClose { |
void errorHandler(Exception e) { |
_errorEvents++; |
- _socket.close(); |
+ socket.close(); |
} |
- void connectHandler() { |
- _socket.onData = dataHandler; |
- _socket.onClosed = closeHandler; |
- _socket.onError = errorHandler; |
+ void connectHandler(socket) { |
+ socket.listen( |
+ dataHandler, |
+ onDone: () => closeHandler(socket), |
+ onError: (error) => errorHandler(socket)); |
void writeHello() { |
- int bytesWritten = 0; |
- while (bytesWritten != 5) { |
- bytesWritten += _socket.writeList("Hello".charCodes, |
- bytesWritten, |
- 5 - bytesWritten); |
- } |
+ socket.add("Hello".charCodes); |
} |
_iterations++; |
switch (_mode) { |
case 0: |
- _socket.close(); |
+ socket.destroy(); |
proceed(); |
break; |
case 1: |
writeHello(); |
- _socket.close(); |
+ socket.destroy(); |
proceed(); |
break; |
case 2: |
@@ -126,23 +121,21 @@ class SocketClose { |
break; |
case 4: |
writeHello(); |
- _socket.close(true); |
+ socket.close(); // Half close. |
break; |
case 5: |
writeHello(); |
break; |
case 6: |
writeHello(); |
- _socket.close(true); |
+ socket.close(); // Half close. |
break; |
default: |
Expect.fail("Unknown test mode"); |
} |
} |
- _socket = new Socket(SocketCloseServer.HOST, _port); |
- Expect.equals(true, _socket != null); |
- _socket.onConnect = connectHandler; |
+ Socket.connect(SocketCloseServer.HOST, _port).then(connectHandler); |
} |
void initialize() { |
@@ -164,7 +157,7 @@ class SocketClose { |
case 0: |
case 1: |
Expect.equals(0, _dataEvents); |
- Expect.equals(0, _closeEvents); |
+ Expect.equals(ITERATIONS, _closeEvents); |
break; |
case 2: |
Expect.equals(0, _dataEvents); |
@@ -172,6 +165,10 @@ class SocketClose { |
break; |
case 3: |
case 4: |
+ Expect.isTrue(_dataEvents <= ITERATIONS); |
+ Expect.isTrue(_dataEvents >= 0); |
+ Expect.equals(ITERATIONS, _closeEvents); |
+ break; |
case 5: |
case 6: |
Expect.equals(ITERATIONS, _dataEvents); |
@@ -186,7 +183,6 @@ class SocketClose { |
int _port; |
ReceivePort _receivePort; |
SendPort _sendPort; |
- Socket _socket; |
List<int> _buffer; |
int _readBytes; |
int _dataEvents; |
@@ -219,56 +215,51 @@ class SocketCloseServer { |
void connectionHandler(ConnectionData data) { |
var connection = data.connection; |
- void readBytes(whenFiveBytes) { |
- List<int> b = new List<int>.fixedLength(5); |
- data.readBytes += connection.readList(b, 0, 5); |
+ void readBytes(bytes, whenFiveBytes) { |
+ data.readBytes += bytes.length; |
+ Expect.isTrue(data.readBytes <= 5); |
if (data.readBytes == 5) { |
whenFiveBytes(); |
} |
} |
void writeHello() { |
- int bytesWritten = 0; |
- while (bytesWritten != 5) { |
- bytesWritten += connection.writeList("Hello".charCodes, |
- bytesWritten, |
- 5 - bytesWritten); |
- } |
+ connection.add("Hello".charCodes); |
} |
- void dataHandler() { |
+ void dataHandler(bytes) { |
switch (_mode) { |
case 0: |
Expect.fail("No data expected"); |
break; |
case 1: |
- readBytes(() { _dataEvents++; }); |
+ readBytes(bytes, () { _dataEvents++; }); |
break; |
case 2: |
- readBytes(() { |
+ readBytes(bytes, () { |
_dataEvents++; |
- connection.close(); |
+ connection.destroy(); |
}); |
break; |
case 3: |
- readBytes(() { |
+ readBytes(bytes, () { |
_dataEvents++; |
writeHello(); |
- connection.close(); |
+ connection.destroy(); |
}); |
break; |
case 4: |
- readBytes(() { |
+ readBytes(bytes, () { |
_dataEvents++; |
writeHello(); |
}); |
break; |
case 5: |
case 6: |
- readBytes(() { |
+ readBytes(bytes, () { |
_dataEvents++; |
writeHello(); |
- connection.close(true); |
+ connection.close(); // Half close. |
}); |
break; |
default: |
@@ -281,18 +272,19 @@ class SocketCloseServer { |
connection.close(); |
} |
- void errorHandler(Exception e) { |
+ void errorHandler(e) { |
Expect.fail("Socket error $e"); |
} |
_iterations++; |
- connection.onData = dataHandler; |
- connection.onClosed = closeHandler; |
- connection.onError = errorHandler; |
+ connection.listen( |
+ dataHandler, |
+ onDone: closeHandler, |
+ onError: errorHandler); |
} |
- void errorHandlerServer(Exception e) { |
+ void errorHandlerServer(e) { |
Expect.fail("Server socket error"); |
} |
@@ -310,13 +302,14 @@ class SocketCloseServer { |
Expect.equals(ITERATIONS, _closeEvents); |
break; |
case 1: |
- Expect.equals(ITERATIONS, _dataEvents); |
+ Expect.isTrue(_dataEvents <= ITERATIONS); |
+ Expect.isTrue(_dataEvents >= 0); |
Expect.equals(ITERATIONS, _closeEvents); |
break; |
case 2: |
case 3: |
Expect.equals(ITERATIONS, _dataEvents); |
- Expect.equals(0, _closeEvents); |
+ Expect.equals(ITERATIONS, _closeEvents); |
break; |
case 4: |
case 5: |
@@ -345,14 +338,17 @@ class SocketCloseServer { |
_closeEvents = 0; |
_iterations = 0; |
_mode = message; |
- _server = new ServerSocket(HOST, 0, 10); |
- Expect.equals(true, _server != null); |
- _server.onConnection = (connection) { |
- var data = new ConnectionData(connection); |
- connectionHandler(data); |
- }; |
- _server.onError = errorHandlerServer; |
- replyTo.send(_server.port, null); |
+ ServerSocket.bind().then((server) { |
+ _server = server; |
+ _server.listen( |
+ (socket) { |
+ var data = new ConnectionData(socket); |
+ connectionHandler(data); |
+ }, |
+ onError: errorHandlerServer |
+ ); |
+ replyTo.send(_server.port, null); |
+ }); |
} else { |
Timer.run(waitForResult); |
} |
@@ -372,10 +368,10 @@ class SocketCloseServer { |
main() { |
// Run the close test in these different "modes". |
// 0: Client closes without sending at all. |
- // 1: Client sends and closes. |
- // 2: Client sends. Server closes. |
- // 3: Client sends. Server responds and closes. |
- // 4: Client sends and half-closes. Server responds and closes. |
+ // 1: Client sends and destroys. |
+ // 2: Client sends. Server destroys. |
+ // 3: Client sends. Server responds and destroys. |
+ // 4: Client sends and half-closes. Server responds and destroys. |
// 5: Client sends. Server responds and half closes. |
// 6: Client sends and half-closes. Server responds and half closes. |
var tests = 7; |