| Index: tests/standalone/io/raw_secure_socket_pause_test.dart
|
| diff --git a/tests/standalone/io/raw_secure_socket_pause_test.dart b/tests/standalone/io/raw_secure_socket_pause_test.dart
|
| index 3ca26cbc18058375f3a327ae5f8d9e6a590afc31..c3bfc435495be2fe28f0a4fa562877d75fd830bb 100644
|
| --- a/tests/standalone/io/raw_secure_socket_pause_test.dart
|
| +++ b/tests/standalone/io/raw_secure_socket_pause_test.dart
|
| @@ -13,12 +13,22 @@ import "dart:async";
|
| import "dart:io";
|
| import "dart:isolate";
|
|
|
| +String localFile(path) => Platform.script.resolve(path).toFilePath();
|
| +
|
| +SecurityContext serverContext = new SecurityContext()
|
| + ..useCertificateChain(localFile('certificates/server_chain.pem'))
|
| + ..usePrivateKey(localFile('certificates/server_key.pem'),
|
| + password: 'dartdart');
|
| +
|
| +SecurityContext clientContext = new SecurityContext()
|
| + ..setTrustedCertificates(file: localFile('certificates/trusted_certs.pem'));
|
| +
|
| Future<HttpServer> startServer() {
|
| return HttpServer.bindSecure(
|
| "localhost",
|
| 0,
|
| - backlog: 5,
|
| - certificateName: 'localhost_cert').then((server) {
|
| + serverContext,
|
| + backlog: 5).then((server) {
|
| server.listen((HttpRequest request) {
|
| request.listen(
|
| (_) { },
|
| @@ -34,77 +44,72 @@ Future<HttpServer> startServer() {
|
| });
|
| }
|
|
|
| -void InitializeSSL() {
|
| - var testPkcertDatabase = Platform.script.resolve('pkcert').toFilePath();
|
| - SecureSocket.initialize(database: testPkcertDatabase,
|
| - password: 'dartdart');
|
| -}
|
| -
|
| -void main() {
|
| +main() async {
|
| List<int> message = "GET / HTTP/1.0\r\nHost: localhost\r\n\r\n".codeUnits;
|
| int written = 0;
|
| List<int> body = <int>[];
|
| - InitializeSSL();
|
| - startServer().then((server) {
|
| - RawSecureSocket.connect("localhost", server.port).then((socket) {
|
| - StreamSubscription subscription;
|
| - bool paused = false;
|
| - bool readEventsTested = false;
|
| - bool readEventsPaused = false;
|
| -
|
| - void runPauseTest() {
|
| - subscription.pause();
|
| - paused = true;
|
| - new Timer(const Duration(milliseconds: 500), () {
|
| - paused = false;
|
| - subscription.resume();
|
| - });
|
| - }
|
| + var server = await startServer();
|
| + var socket = await RawSecureSocket.connect("localhost",
|
| + server.port,
|
| + context: clientContext);
|
| + StreamSubscription subscription;
|
| + bool paused = false;
|
| + bool readEventsTested = false;
|
| + bool readEventsPaused = false;
|
|
|
| - void runReadEventTest() {
|
| - if (readEventsTested) return;
|
| - readEventsTested = true;
|
| - socket.readEventsEnabled = false;
|
| - readEventsPaused = true;
|
| - new Timer(const Duration(milliseconds: 500), () {
|
| - readEventsPaused = false;
|
| - socket.readEventsEnabled = true;
|
| - });
|
| - }
|
| + void runPauseTest() {
|
| + subscription.pause();
|
| + paused = true;
|
| + new Timer(const Duration(milliseconds: 500), () {
|
| + paused = false;
|
| + subscription.resume();
|
| + });
|
| + }
|
|
|
| - subscription = socket.listen(
|
| - (RawSocketEvent event) {
|
| - Expect.isFalse(paused);
|
| - switch (event) {
|
| - case RawSocketEvent.READ:
|
| - Expect.isFalse(readEventsPaused);
|
| - runReadEventTest();
|
| - body.addAll(socket.read());
|
| - break;
|
| - case RawSocketEvent.WRITE:
|
| - written +=
|
| - socket.write(message, written, message.length - written);
|
| - if (written < message.length) {
|
| - socket.writeEventsEnabled = true;
|
| - } else {
|
| - socket.shutdown(SocketDirection.SEND);
|
| - runPauseTest();
|
| - }
|
| - break;
|
| - case RawSocketEvent.READ_CLOSED:
|
| - Expect.isTrue(body.length > 100);
|
| - Expect.equals(72, body[0]);
|
| - Expect.equals(9, body[body.length - 1]);
|
| - server.close();
|
| - break;
|
| - default: throw "Unexpected event $event";
|
| - }
|
| - },
|
| - onError: (e, trace) {
|
| - String msg = "onError handler of RawSecureSocket stream hit: $e";
|
| - if (trace != null) msg += "\nStackTrace: $trace";
|
| - Expect.fail(msg);
|
| - });
|
| + void runReadEventTest() {
|
| + if (readEventsTested) return;
|
| + readEventsTested = true;
|
| + socket.readEventsEnabled = false;
|
| + readEventsPaused = true;
|
| + new Timer(const Duration(milliseconds: 500), () {
|
| + readEventsPaused = false;
|
| + socket.readEventsEnabled = true;
|
| });
|
| - });
|
| + }
|
| +
|
| + void handleRawEvent(RawSocketEvent event) {
|
| + Expect.isFalse(paused);
|
| + switch (event) {
|
| + case RawSocketEvent.READ:
|
| + Expect.isFalse(readEventsPaused);
|
| + runReadEventTest();
|
| + body.addAll(socket.read());
|
| + break;
|
| + case RawSocketEvent.WRITE:
|
| + written +=
|
| + socket.write(message, written, message.length - written);
|
| + if (written < message.length) {
|
| + socket.writeEventsEnabled = true;
|
| + } else {
|
| + socket.shutdown(SocketDirection.SEND);
|
| + runPauseTest();
|
| + }
|
| + break;
|
| + case RawSocketEvent.READ_CLOSED:
|
| + Expect.isTrue(body.length > 100);
|
| + Expect.equals(72, body.first);
|
| + Expect.equals(9, body.last);
|
| + server.close();
|
| + break;
|
| + default: throw "Unexpected event $event";
|
| + }
|
| + }
|
| +
|
| + subscription = socket.listen(
|
| + handleRawEvent,
|
| + onError: (e, trace) {
|
| + String msg = "onError handler of RawSecureSocket stream hit: $e";
|
| + if (trace != null) msg += "\nStackTrace: $trace";
|
| + Expect.fail(msg);
|
| + });
|
| }
|
|
|