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

Side by Side Diff: tests/standalone/io/secure_server_closing_test.dart

Issue 23886004: Update dart:io tests to use asyncStart/asyncEnd (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Addressed review comments Created 7 years, 3 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 // VMOptions= 5 // VMOptions=
6 // VMOptions=--short_socket_read 6 // VMOptions=--short_socket_read
7 // VMOptions=--short_socket_write 7 // VMOptions=--short_socket_write
8 // VMOptions=--short_socket_read --short_socket_write 8 // VMOptions=--short_socket_read --short_socket_write
9 9
10 import "dart:async";
11 import "dart:io";
12
13 import "package:async_helper/async_helper.dart";
10 import "package:expect/expect.dart"; 14 import "package:expect/expect.dart";
11 import "package:path/path.dart"; 15 import "package:path/path.dart";
12 import "dart:async";
13 import "dart:io";
14 import "dart:isolate";
15 16
16 const HOST_NAME = "localhost"; 17 const HOST_NAME = "localhost";
17 const CERTIFICATE = "localhost_cert"; 18 const CERTIFICATE = "localhost_cert";
18 19
19 void testCloseOneEnd(String toClose) { 20 void testCloseOneEnd(String toClose) {
20 ReceivePort port = new ReceivePort(); 21 asyncStart();
21 Completer serverDone = new Completer(); 22 Completer serverDone = new Completer();
22 Completer serverEndDone = new Completer(); 23 Completer serverEndDone = new Completer();
23 Completer clientEndDone = new Completer(); 24 Completer clientEndDone = new Completer();
24 Future.wait([serverDone.future, serverEndDone.future, clientEndDone.future]) 25 Future.wait([serverDone.future, serverEndDone.future, clientEndDone.future])
25 .then((_) { 26 .then((_) {
26 port.close(); 27 asyncEnd();
27 }); 28 });
28 SecureServerSocket.bind(HOST_NAME, 0, CERTIFICATE).then((server) { 29 SecureServerSocket.bind(HOST_NAME, 0, CERTIFICATE).then((server) {
29 server.listen((serverConnection) { 30 server.listen((serverConnection) {
30 serverConnection.listen( 31 serverConnection.listen(
31 (data) { 32 (data) {
32 Expect.fail("No data should be received by server"); 33 Expect.fail("No data should be received by server");
33 }, 34 },
34 onDone: () { 35 onDone: () {
35 serverConnection.close(); 36 serverConnection.close();
36 serverEndDone.complete(null); 37 serverEndDone.complete(null);
(...skipping 16 matching lines...) Expand all
53 clientEndDone.complete(null); 54 clientEndDone.complete(null);
54 }); 55 });
55 if (toClose == "client") { 56 if (toClose == "client") {
56 clientConnection.close(); 57 clientConnection.close();
57 } 58 }
58 }); 59 });
59 }); 60 });
60 } 61 }
61 62
62 void testCloseBothEnds() { 63 void testCloseBothEnds() {
63 ReceivePort port = new ReceivePort(); 64 asyncStart();
64 SecureServerSocket.bind(HOST_NAME, 0, CERTIFICATE).then((server) { 65 SecureServerSocket.bind(HOST_NAME, 0, CERTIFICATE).then((server) {
65 var clientEndFuture = SecureSocket.connect(HOST_NAME, server.port); 66 var clientEndFuture = SecureSocket.connect(HOST_NAME, server.port);
66 server.listen((serverEnd) { 67 server.listen((serverEnd) {
67 clientEndFuture.then((clientEnd) { 68 clientEndFuture.then((clientEnd) {
68 clientEnd.destroy(); 69 clientEnd.destroy();
69 serverEnd.destroy(); 70 serverEnd.destroy();
70 server.close(); 71 server.close();
71 port.close(); 72 asyncEnd();
72 }); 73 });
73 }); 74 });
74 }); 75 });
75 } 76 }
76 77
77 testPauseServerSocket() { 78 testPauseServerSocket() {
78 const int socketCount = 10; 79 const int socketCount = 10;
79 var acceptCount = 0; 80 var acceptCount = 0;
80 var resumed = false; 81 var resumed = false;
81 82
82 ReceivePort port = new ReceivePort(); 83 asyncStart();
83 84
84 SecureServerSocket.bind(HOST_NAME, 85 SecureServerSocket.bind(HOST_NAME,
85 0, 86 0,
86 CERTIFICATE, 87 CERTIFICATE,
87 backlog: 2 * socketCount).then((server) { 88 backlog: 2 * socketCount).then((server) {
88 Expect.isTrue(server.port > 0); 89 Expect.isTrue(server.port > 0);
89 var subscription; 90 var subscription;
90 subscription = server.listen((connection) { 91 subscription = server.listen((connection) {
91 Expect.isTrue(resumed); 92 Expect.isTrue(resumed);
92 connection.close(); 93 connection.close();
93 if (++acceptCount == 2 * socketCount) { 94 if (++acceptCount == 2 * socketCount) {
94 server.close(); 95 server.close();
95 port.close(); 96 asyncEnd();
96 } 97 }
97 }); 98 });
98 99
99 // Pause the server socket subscription and resume it after having 100 // Pause the server socket subscription and resume it after having
100 // connected a number client sockets. Then connect more client 101 // connected a number client sockets. Then connect more client
101 // sockets. 102 // sockets.
102 subscription.pause(); 103 subscription.pause();
103 var connectCount = 0; 104 var connectCount = 0;
104 for (int i = 0; i < socketCount; i++) { 105 for (int i = 0; i < socketCount; i++) {
105 SecureSocket.connect(HOST_NAME, server.port).then((connection) { 106 SecureSocket.connect(HOST_NAME, server.port).then((connection) {
106 connection.close(); 107 connection.close();
107 }); 108 });
108 } 109 }
109 new Timer(const Duration(milliseconds: 500), () { 110 new Timer(const Duration(milliseconds: 500), () {
110 subscription.resume(); 111 subscription.resume();
111 resumed = true; 112 resumed = true;
112 for (int i = 0; i < socketCount; i++) { 113 for (int i = 0; i < socketCount; i++) {
113 SecureSocket.connect(HOST_NAME, server.port).then((connection) { 114 SecureSocket.connect(HOST_NAME, server.port).then((connection) {
114 connection.close(); 115 connection.close();
115 }); 116 });
116 } 117 }
117 }); 118 });
118 }); 119 });
119 } 120 }
120 121
121 122
122 testCloseServer() { 123 testCloseServer() {
123 const int socketCount = 3; 124 const int socketCount = 3;
124 var endCount = 0; 125 var endCount = 0;
125 ReceivePort port = new ReceivePort(); 126 asyncStart();
126 List ends = []; 127 List ends = [];
127 128
128 SecureServerSocket.bind(HOST_NAME, 0, CERTIFICATE).then((server) { 129 SecureServerSocket.bind(HOST_NAME, 0, CERTIFICATE).then((server) {
129 Expect.isTrue(server.port > 0); 130 Expect.isTrue(server.port > 0);
130 void checkDone() { 131 void checkDone() {
131 if (ends.length < 2 * socketCount) return; 132 if (ends.length < 2 * socketCount) return;
132 for (var end in ends) { 133 for (var end in ends) {
133 end.destroy(); 134 end.destroy();
134 } 135 }
135 server.close(); 136 server.close();
136 port.close(); 137 asyncEnd();
137 } 138 }
138 139
139 server.listen((connection) { 140 server.listen((connection) {
140 ends.add(connection); 141 ends.add(connection);
141 checkDone(); 142 checkDone();
142 }); 143 });
143 144
144 for (int i = 0; i < socketCount; i++) { 145 for (int i = 0; i < socketCount; i++) {
145 SecureSocket.connect(HOST_NAME, server.port).then((connection) { 146 SecureSocket.connect(HOST_NAME, server.port).then((connection) {
146 ends.add(connection); 147 ends.add(connection);
(...skipping 11 matching lines...) Expand all
158 useBuiltinRoots: false); 159 useBuiltinRoots: false);
159 160
160 testCloseOneEnd("client"); 161 testCloseOneEnd("client");
161 testCloseOneEnd("server"); 162 testCloseOneEnd("server");
162 testCloseBothEnds(); 163 testCloseBothEnds();
163 testPauseServerSocket(); 164 testPauseServerSocket();
164 testCloseServer(); 165 testCloseServer();
165 // TODO(whesse): Add testPauseSocket from raw_socket_test.dart. 166 // TODO(whesse): Add testPauseSocket from raw_socket_test.dart.
166 // TODO(whesse): Add testCancelResubscribeSocket from raw_socket_test.dart. 167 // TODO(whesse): Add testCancelResubscribeSocket from raw_socket_test.dart.
167 } 168 }
OLDNEW
« no previous file with comments | « tests/standalone/io/secure_server_client_certificate_test.dart ('k') | tests/standalone/io/secure_server_socket_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698