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

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

Issue 201993002: Fix SecureSocket tests to look up localhost only once, where possible. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Remove useless change to https_client_certificate_test.dart Created 6 years, 9 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"; 10 import "dart:async";
11 import "dart:io"; 11 import "dart:io";
12 12
13 import "package:async_helper/async_helper.dart"; 13 import "package:async_helper/async_helper.dart";
14 import "package:expect/expect.dart"; 14 import "package:expect/expect.dart";
15 import "package:path/path.dart";
16 15
17 const HOST_NAME = "localhost"; 16 InternetAddress HOST;
18 const CERTIFICATE = "localhost_cert"; 17 const CERTIFICATE = "localhost_cert";
19 18
20 void testCloseOneEnd(String toClose) { 19 void testCloseOneEnd(String toClose) {
21 asyncStart(); 20 asyncStart();
22 Completer serverDone = new Completer(); 21 Completer serverDone = new Completer();
23 Completer serverEndDone = new Completer(); 22 Completer serverEndDone = new Completer();
24 Completer clientEndDone = new Completer(); 23 Completer clientEndDone = new Completer();
25 Future.wait([serverDone.future, serverEndDone.future, clientEndDone.future]) 24 Future.wait([serverDone.future, serverEndDone.future, clientEndDone.future])
26 .then((_) { 25 .then((_) {
27 asyncEnd(); 26 asyncEnd();
28 }); 27 });
29 SecureServerSocket.bind(HOST_NAME, 0, CERTIFICATE).then((server) { 28 SecureServerSocket.bind(HOST, 0, CERTIFICATE).then((server) {
30 server.listen((serverConnection) { 29 server.listen((serverConnection) {
31 serverConnection.listen( 30 serverConnection.listen(
32 (data) { 31 (data) {
33 Expect.fail("No data should be received by server"); 32 Expect.fail("No data should be received by server");
34 }, 33 },
35 onDone: () { 34 onDone: () {
36 serverConnection.close(); 35 serverConnection.close();
37 serverEndDone.complete(null); 36 serverEndDone.complete(null);
38 server.close(); 37 server.close();
39 }); 38 });
40 if (toClose == "server") { 39 if (toClose == "server") {
41 serverConnection.close(); 40 serverConnection.close();
42 } 41 }
43 }, 42 },
44 onDone: () { 43 onDone: () {
45 serverDone.complete(null); 44 serverDone.complete(null);
46 }); 45 });
47 SecureSocket.connect(HOST_NAME, server.port).then((clientConnection) { 46 SecureSocket.connect(HOST, server.port).then((clientConnection) {
48 clientConnection.listen( 47 clientConnection.listen(
49 (data) { 48 (data) {
50 Expect.fail("No data should be received by client"); 49 Expect.fail("No data should be received by client");
51 }, 50 },
52 onDone: () { 51 onDone: () {
53 clientConnection.close(); 52 clientConnection.close();
54 clientEndDone.complete(null); 53 clientEndDone.complete(null);
55 }); 54 });
56 if (toClose == "client") { 55 if (toClose == "client") {
57 clientConnection.close(); 56 clientConnection.close();
58 } 57 }
59 }); 58 });
60 }); 59 });
61 } 60 }
62 61
63 void testCloseBothEnds() { 62 void testCloseBothEnds() {
64 asyncStart(); 63 asyncStart();
65 SecureServerSocket.bind(HOST_NAME, 0, CERTIFICATE).then((server) { 64 SecureServerSocket.bind(HOST, 0, CERTIFICATE).then((server) {
66 var clientEndFuture = SecureSocket.connect(HOST_NAME, server.port); 65 var clientEndFuture = SecureSocket.connect(HOST, server.port);
67 server.listen((serverEnd) { 66 server.listen((serverEnd) {
68 clientEndFuture.then((clientEnd) { 67 clientEndFuture.then((clientEnd) {
69 clientEnd.destroy(); 68 clientEnd.destroy();
70 serverEnd.destroy(); 69 serverEnd.destroy();
71 server.close(); 70 server.close();
72 asyncEnd(); 71 asyncEnd();
73 }); 72 });
74 }); 73 });
75 }); 74 });
76 } 75 }
77 76
78 testPauseServerSocket() { 77 testPauseServerSocket() {
79 const int socketCount = 10; 78 const int socketCount = 10;
80 var acceptCount = 0; 79 var acceptCount = 0;
81 var resumed = false; 80 var resumed = false;
82 81
83 asyncStart(); 82 asyncStart();
84 83
85 SecureServerSocket.bind(HOST_NAME, 84 SecureServerSocket.bind(HOST,
86 0, 85 0,
87 CERTIFICATE, 86 CERTIFICATE,
88 backlog: 2 * socketCount).then((server) { 87 backlog: 2 * socketCount).then((server) {
89 Expect.isTrue(server.port > 0); 88 Expect.isTrue(server.port > 0);
90 var subscription; 89 var subscription;
91 subscription = server.listen((connection) { 90 subscription = server.listen((connection) {
92 Expect.isTrue(resumed); 91 Expect.isTrue(resumed);
93 connection.close(); 92 connection.close();
94 if (++acceptCount == 2 * socketCount) { 93 if (++acceptCount == 2 * socketCount) {
95 server.close(); 94 server.close();
96 asyncEnd(); 95 asyncEnd();
97 } 96 }
98 }); 97 });
99 98
100 // Pause the server socket subscription and resume it after having 99 // Pause the server socket subscription and resume it after having
101 // connected a number client sockets. Then connect more client 100 // connected a number client sockets. Then connect more client
102 // sockets. 101 // sockets.
103 subscription.pause(); 102 subscription.pause();
104 var connectCount = 0; 103 var connectCount = 0;
105 for (int i = 0; i < socketCount; i++) { 104 for (int i = 0; i < socketCount; i++) {
106 SecureSocket.connect(HOST_NAME, server.port).then((connection) { 105 SecureSocket.connect(HOST, server.port).then((connection) {
107 connection.close(); 106 connection.close();
108 }); 107 });
109 } 108 }
110 new Timer(const Duration(milliseconds: 500), () { 109 new Timer(const Duration(milliseconds: 500), () {
111 subscription.resume(); 110 subscription.resume();
112 resumed = true; 111 resumed = true;
113 for (int i = 0; i < socketCount; i++) { 112 for (int i = 0; i < socketCount; i++) {
114 SecureSocket.connect(HOST_NAME, server.port).then((connection) { 113 SecureSocket.connect(HOST, server.port).then((connection) {
115 connection.close(); 114 connection.close();
116 }); 115 });
117 } 116 }
118 }); 117 });
119 }); 118 });
120 } 119 }
121 120
122 121
123 testCloseServer() { 122 testCloseServer() {
124 const int socketCount = 3; 123 const int socketCount = 3;
125 var endCount = 0; 124 var endCount = 0;
126 asyncStart(); 125 asyncStart();
127 List ends = []; 126 List ends = [];
128 127
129 SecureServerSocket.bind(HOST_NAME, 0, CERTIFICATE).then((server) { 128 SecureServerSocket.bind(HOST, 0, CERTIFICATE).then((server) {
130 Expect.isTrue(server.port > 0); 129 Expect.isTrue(server.port > 0);
131 void checkDone() { 130 void checkDone() {
132 if (ends.length < 2 * socketCount) return; 131 if (ends.length < 2 * socketCount) return;
133 for (var end in ends) { 132 for (var end in ends) {
134 end.destroy(); 133 end.destroy();
135 } 134 }
136 server.close(); 135 server.close();
137 asyncEnd(); 136 asyncEnd();
138 } 137 }
139 138
140 server.listen((connection) { 139 server.listen((connection) {
141 ends.add(connection); 140 ends.add(connection);
142 checkDone(); 141 checkDone();
143 }); 142 });
144 143
145 for (int i = 0; i < socketCount; i++) { 144 for (int i = 0; i < socketCount; i++) {
146 SecureSocket.connect(HOST_NAME, server.port).then((connection) { 145 SecureSocket.connect(HOST, server.port).then((connection) {
147 ends.add(connection); 146 ends.add(connection);
148 checkDone(); 147 checkDone();
149 }); 148 });
150 } 149 }
151 }); 150 });
152 } 151 }
153 152
154 153
155 main() { 154 main() {
155 asyncStart();
156 String certificateDatabase = Platform.script.resolve('pkcert').toFilePath(); 156 String certificateDatabase = Platform.script.resolve('pkcert').toFilePath();
157 SecureSocket.initialize(database: certificateDatabase, 157 SecureSocket.initialize(database: certificateDatabase,
158 password: 'dartdart', 158 password: 'dartdart',
159 useBuiltinRoots: false); 159 useBuiltinRoots: false);
160 InternetAddress.lookup("localhost").then((hosts) {
161 HOST = hosts.first;
162 runTests();
163 asyncEnd();
164 });
165 }
160 166
167 runTests() {
161 testCloseOneEnd("client"); 168 testCloseOneEnd("client");
162 testCloseOneEnd("server"); 169 testCloseOneEnd("server");
163 testCloseBothEnds(); 170 testCloseBothEnds();
164 testPauseServerSocket(); 171 testPauseServerSocket();
165 testCloseServer(); 172 testCloseServer();
166 // TODO(whesse): Add testPauseSocket from raw_socket_test.dart. 173 // TODO(whesse): Add testPauseSocket from raw_socket_test.dart.
167 // TODO(whesse): Add testCancelResubscribeSocket from raw_socket_test.dart. 174 // TODO(whesse): Add testCancelResubscribeSocket from raw_socket_test.dart.
168 } 175 }
OLDNEW
« no previous file with comments | « tests/standalone/io/secure_server_client_no_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