| 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;
|
|
|