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

Side by Side Diff: tests/standalone/io/raw_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 RawSecureServerSocket.bind(HOST_NAME, 0, CERTIFICATE).then((server) { 29 RawSecureServerSocket.bind(HOST_NAME, 0, CERTIFICATE).then((server) {
29 server.listen((serverConnection) { 30 server.listen((serverConnection) {
30 serverConnection.listen((event) { 31 serverConnection.listen((event) {
31 if (toClose == "server" || event == RawSocketEvent.READ_CLOSED) { 32 if (toClose == "server" || event == RawSocketEvent.READ_CLOSED) {
32 serverConnection.shutdown(SocketDirection.SEND); 33 serverConnection.shutdown(SocketDirection.SEND);
33 } 34 }
34 }, 35 },
35 onDone: () { 36 onDone: () {
36 serverEndDone.complete(null); 37 serverEndDone.complete(null);
(...skipping 10 matching lines...) Expand all
47 }, 48 },
48 onDone: () { 49 onDone: () {
49 clientEndDone.complete(null); 50 clientEndDone.complete(null);
50 server.close(); 51 server.close();
51 }); 52 });
52 }); 53 });
53 }); 54 });
54 } 55 }
55 56
56 void testCloseBothEnds() { 57 void testCloseBothEnds() {
57 ReceivePort port = new ReceivePort(); 58 asyncStart();
58 RawSecureServerSocket.bind(HOST_NAME, 0, CERTIFICATE).then((server) { 59 RawSecureServerSocket.bind(HOST_NAME, 0, CERTIFICATE).then((server) {
59 var clientEndFuture = RawSecureSocket.connect(HOST_NAME, server.port); 60 var clientEndFuture = RawSecureSocket.connect(HOST_NAME, server.port);
60 server.listen((serverEnd) { 61 server.listen((serverEnd) {
61 clientEndFuture.then((clientEnd) { 62 clientEndFuture.then((clientEnd) {
62 clientEnd.close(); 63 clientEnd.close();
63 serverEnd.close(); 64 serverEnd.close();
64 server.close(); 65 server.close();
65 port.close(); 66 asyncEnd();
66 }); 67 });
67 }); 68 });
68 }); 69 });
69 } 70 }
70 71
71 testPauseServerSocket() { 72 testPauseServerSocket() {
72 const int socketCount = 10; 73 const int socketCount = 10;
73 var acceptCount = 0; 74 var acceptCount = 0;
74 var resumed = false; 75 var resumed = false;
75 76
76 ReceivePort port = new ReceivePort(); 77 asyncStart();
77 78
78 RawSecureServerSocket.bind(HOST_NAME, 79 RawSecureServerSocket.bind(HOST_NAME,
79 0, 80 0,
80 CERTIFICATE, 81 CERTIFICATE,
81 backlog: 2 * socketCount).then((server) { 82 backlog: 2 * socketCount).then((server) {
82 Expect.isTrue(server.port > 0); 83 Expect.isTrue(server.port > 0);
83 var subscription; 84 var subscription;
84 subscription = server.listen((connection) { 85 subscription = server.listen((connection) {
85 Expect.isTrue(resumed); 86 Expect.isTrue(resumed);
86 connection.shutdown(SocketDirection.SEND); 87 connection.shutdown(SocketDirection.SEND);
87 if (++acceptCount == 2 * socketCount) { 88 if (++acceptCount == 2 * socketCount) {
88 server.close(); 89 server.close();
89 port.close(); 90 asyncEnd();
90 } 91 }
91 }); 92 });
92 93
93 // Pause the server socket subscription and resume it after having 94 // Pause the server socket subscription and resume it after having
94 // connected a number client sockets. Then connect more client 95 // connected a number client sockets. Then connect more client
95 // sockets. 96 // sockets.
96 subscription.pause(); 97 subscription.pause();
97 var connectCount = 0; 98 var connectCount = 0;
98 for (int i = 0; i < socketCount; i++) { 99 for (int i = 0; i < socketCount; i++) {
99 RawSecureSocket.connect(HOST_NAME, server.port).then((connection) { 100 RawSecureSocket.connect(HOST_NAME, server.port).then((connection) {
100 connection.shutdown(SocketDirection.SEND); 101 connection.shutdown(SocketDirection.SEND);
101 }); 102 });
102 } 103 }
103 new Timer(const Duration(milliseconds: 500), () { 104 new Timer(const Duration(milliseconds: 500), () {
104 subscription.resume(); 105 subscription.resume();
105 resumed = true; 106 resumed = true;
106 for (int i = 0; i < socketCount; i++) { 107 for (int i = 0; i < socketCount; i++) {
107 RawSecureSocket.connect(HOST_NAME, server.port).then((connection) { 108 RawSecureSocket.connect(HOST_NAME, server.port).then((connection) {
108 connection.shutdown(SocketDirection.SEND); 109 connection.shutdown(SocketDirection.SEND);
109 }); 110 });
110 } 111 }
111 }); 112 });
112 }); 113 });
113 } 114 }
114 115
115 testCloseServer() { 116 testCloseServer() {
116 const int socketCount = 3; 117 const int socketCount = 3;
117 ReceivePort port = new ReceivePort(); 118 asyncStart();
118 List ends = []; 119 List ends = [];
119 120
120 RawSecureServerSocket.bind(HOST_NAME, 0, CERTIFICATE).then((server) { 121 RawSecureServerSocket.bind(HOST_NAME, 0, CERTIFICATE).then((server) {
121 Expect.isTrue(server.port > 0); 122 Expect.isTrue(server.port > 0);
122 void checkDone() { 123 void checkDone() {
123 if (ends.length < 2 * socketCount) return; 124 if (ends.length < 2 * socketCount) return;
124 for (var end in ends) { 125 for (var end in ends) {
125 end.close(); 126 end.close();
126 } 127 }
127 server.close(); 128 server.close();
128 port.close(); 129 asyncEnd();
129 } 130 }
130 131
131 server.listen((connection) { 132 server.listen((connection) {
132 ends.add(connection); 133 ends.add(connection);
133 checkDone(); 134 checkDone();
134 }); 135 });
135 136
136 for (int i = 0; i < socketCount; i++) { 137 for (int i = 0; i < socketCount; i++) {
137 RawSecureSocket.connect(HOST_NAME, server.port).then((connection) { 138 RawSecureSocket.connect(HOST_NAME, server.port).then((connection) {
138 ends.add(connection); 139 ends.add(connection);
(...skipping 11 matching lines...) Expand all
150 useBuiltinRoots: false); 151 useBuiltinRoots: false);
151 152
152 testCloseOneEnd("client"); 153 testCloseOneEnd("client");
153 testCloseOneEnd("server"); 154 testCloseOneEnd("server");
154 testCloseBothEnds(); 155 testCloseBothEnds();
155 testCloseServer(); 156 testCloseServer();
156 testPauseServerSocket(); 157 testPauseServerSocket();
157 // TODO(whesse): Add testPauseSocket from raw_socket_test.dart. 158 // TODO(whesse): Add testPauseSocket from raw_socket_test.dart.
158 // TODO(whesse): Add testCancelResubscribeSocket from raw_socket_test.dart. 159 // TODO(whesse): Add testCancelResubscribeSocket from raw_socket_test.dart.
159 } 160 }
OLDNEW
« no previous file with comments | « tests/standalone/io/process_pid_test.dart ('k') | tests/standalone/io/raw_secure_server_socket_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698