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

Unified Diff: tests/standalone/io/secure_socket_bad_data_test.dart

Issue 18390003: Refactor standalone/io/secure_socket_bad_data_test. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 5 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/standalone/io/secure_socket_bad_data_test.dart
diff --git a/tests/standalone/io/secure_socket_bad_data_test.dart b/tests/standalone/io/secure_socket_bad_data_test.dart
index 55499db4b471b456d232411f81bdbf6d985a4e4b..e89ffb314ff8ec895de390fceaaeb8503709acd1 100644
--- a/tests/standalone/io/secure_socket_bad_data_test.dart
+++ b/tests/standalone/io/secure_socket_bad_data_test.dart
@@ -29,137 +29,139 @@ const CERTIFICATE = "localhost_cert";
// this causes an error in the NSS code. When the NSS code is in debug
// mode, bad data on the connection can cause an assertion failure, rather
// than an exception.
-void test(bool hostnameInConnect) {
- ReceivePort port = new ReceivePort();
- const messageSize = 1000;
+const messageSize = 1000;
- List<int> createTestData() {
- List<int> data = new List<int>(messageSize);
- for (int i = 0; i < messageSize; i++) {
- data[i] = i & 0xff;
- }
- return data;
- }
- void verifyTestData(List<int> data) {
- Expect.equals(messageSize, data.length);
- List<int> expected = createTestData();
- for (int i = 0; i < messageSize; i++) {
- Expect.equals(expected[i], data[i]);
- }
+List<int> createTestData() {
+ List<int> data = new List<int>(messageSize);
+ for (int i = 0; i < messageSize; i++) {
+ data[i] = i & 0xff;
}
+ return data;
+}
- Future runServer(RawSocket client) {
- final completer = new Completer();
- final dataReceived = new List<int>(messageSize);
- int bytesRead = 0;
- client.writeEventsEnabled = false;
- client.listen((event) {
- switch (event) {
- case RawSocketEvent.READ:
- Expect.isTrue(client.available() > 0);
- var buffer = client.read(200);
- dataReceived.setRange(bytesRead, bytesRead + buffer.length, buffer);
- bytesRead += buffer.length;
- if (bytesRead == dataReceived.length) {
- verifyTestData(dataReceived);
- }
- break;
- case RawSocketEvent.WRITE:
- Expect.fail('WRITE event received');
- break;
- case RawSocketEvent.READ_CLOSED:
- Expect.fail('READ_CLOSED event received');
- client.shutdown(SocketDirection.SEND);
- completer.complete(null);
- break;
- default: throw "Unexpected event $event";
- }
- },
- onError: (e) {
- Expect.isTrue(e is TlsException);
- Expect.isTrue(e.toString().contains(
- 'received a record with an incorrect Message Authentication Code'));
- completer.complete(null);
- });
- return completer.future;
+
+void verifyTestData(List<int> data) {
+ Expect.equals(messageSize, data.length);
+ List<int> expected = createTestData();
+ for (int i = 0; i < messageSize; i++) {
+ Expect.equals(expected[i], data[i]);
}
+}
+
- Future<RawSocket> runClient(List sockets) {
- RawSocket baseSocket = sockets[0];
- RawSecureSocket socket = sockets[1];
- final completer = new Completer();
- bool completed = false;
- void tryComplete() {
- if (!completed) {
- completed = true;
+Future runServer(RawSocket client) {
+ final completer = new Completer();
+ final dataReceived = new List<int>(messageSize);
+ int bytesRead = 0;
+ client.writeEventsEnabled = false;
+ client.listen((event) {
+ switch (event) {
+ case RawSocketEvent.READ:
+ Expect.isTrue(client.available() > 0);
+ var buffer = client.read(200);
+ dataReceived.setRange(bytesRead, bytesRead + buffer.length, buffer);
+ bytesRead += buffer.length;
+ if (bytesRead == dataReceived.length) {
+ verifyTestData(dataReceived);
+ }
+ break;
+ case RawSocketEvent.WRITE:
+ Expect.fail('WRITE event received');
+ break;
+ case RawSocketEvent.READ_CLOSED:
+ Expect.fail('READ_CLOSED event received');
+ client.shutdown(SocketDirection.SEND);
completer.complete(null);
- }
+ break;
+ }
+ },
+ onError: (e) {
+ Expect.isTrue(e is TlsException);
+ Expect.isTrue(e.toString().contains(
+ 'received a record with an incorrect Message Authentication Code'));
+ completer.complete(null);
+ });
+ return completer.future;
+}
+
+
+Future<RawSocket> runClient(List sockets) {
+ final RawSocket baseSocket = sockets[0];
+ final RawSecureSocket socket = sockets[1];
+ final data = createTestData();
+ var completer = new Completer();
+ void tryComplete() {
+ if (completer != null) {
+ completer.complete(null);
+ completer = null;
}
- final data = createTestData();
- int bytesWritten = 0;
- socket.listen((event) {
- switch (event) {
- case RawSocketEvent.READ:
- Expect.fail('READ event received');
- break;
- case RawSocketEvent.WRITE:
- if (bytesWritten < data.length) {
- bytesWritten += socket.write(data, bytesWritten);
- }
- if (bytesWritten < data.length) {
- socket.writeEventsEnabled = true;
- }
- if (bytesWritten == data.length) {
- baseSocket.write(data, 0, 300);
- socket.shutdown(SocketDirection.SEND);
- }
- break;
- case RawSocketEvent.READ_CLOSED:
- tryComplete();
- break;
- default: throw "Unexpected event $event";
- }
- },
- onError: (e) {
- Expect.isTrue(e is IOException);
- tryComplete();
- });
- return completer.future;
}
+ int bytesWritten = 0;
+ socket.listen((event) {
+ switch (event) {
+ case RawSocketEvent.READ:
+ Expect.fail('READ event received');
+ break;
+ case RawSocketEvent.WRITE:
+ if (bytesWritten < data.length) {
+ bytesWritten += socket.write(data, bytesWritten);
+ }
+ if (bytesWritten < data.length) {
+ socket.writeEventsEnabled = true;
+ }
+ if (bytesWritten == data.length) {
+ baseSocket.write(data, 0, 300);
+ socket.shutdown(SocketDirection.SEND);
+ }
+ break;
+ case RawSocketEvent.READ_CLOSED:
+ tryComplete();
+ break;
+ }
+ },
+ onError: (e) {
+ Expect.isTrue(e is IOException);
+ tryComplete();
+ });
+ return completer.future;
+}
+
- Future<List> connectClient(int port) =>
- RawSocket.connect(HOST_NAME, port)
- .then((socket) =>
- (hostnameInConnect ? RawSecureSocket.secure(socket)
- : RawSecureSocket.secure(socket, host: HOST_NAME))
- .then((secureSocket) => [socket, secureSocket]));
+Future<List> connectClient(int port, bool hostnameInConnect) =>
+ RawSocket.connect(HOST_NAME, port)
+ .then((socket) =>
+ (hostnameInConnect ? RawSecureSocket.secure(socket)
+ : RawSecureSocket.secure(socket, host: HOST_NAME))
+ .then((secureSocket) => [socket, secureSocket]));
- serverReady(server) {
+Future test(bool hostnameInConnect) {
+ return RawServerSocket.bind(HOST_NAME, 0)
+ .then((server) {
server.listen((client) {
- RawSecureSocket.secureServer(client, CERTIFICATE).then((secureClient) {
+ RawSecureSocket.secureServer(client, CERTIFICATE)
+ .then((secureClient) {
Expect.throws(() => client.add([0]));
- runServer(secureClient).then((_) => server.close());
- });
+ return runServer(secureClient);
+ })
+ .then((_) => server.close());
});
- connectClient(server.port)
- .then(runClient)
- .then((_) => port.close());
- }
-
- RawServerSocket.bind(HOST_NAME, 0).then(serverReady);
+ return connectClient(server.port, hostnameInConnect).then(runClient);
+ });
}
+
main() {
Path scriptDir = new Path(Platform.script).directoryPath;
Path certificateDatabase = scriptDir.append('pkcert');
SecureSocket.initialize(database: certificateDatabase.toNativePath(),
password: 'dartdart',
useBuiltinRoots: false);
- test(false);
- test(true);
+ var keepAlive = new ReceivePort();
+ Future.wait([test(false), test(true)])
+ .then((_) => keepAlive.close());
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698