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

Side by Side Diff: tests/standalone/io/raw_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 RawSecureServerSocket.bind(HOST_NAME, 0, CERTIFICATE).then((server) { 28 RawSecureServerSocket.bind(HOST, 0, CERTIFICATE).then((server) {
30 server.listen((serverConnection) { 29 server.listen((serverConnection) {
31 serverConnection.listen((event) { 30 serverConnection.listen((event) {
32 if (toClose == "server" || event == RawSocketEvent.READ_CLOSED) { 31 if (toClose == "server" || event == RawSocketEvent.READ_CLOSED) {
33 serverConnection.shutdown(SocketDirection.SEND); 32 serverConnection.shutdown(SocketDirection.SEND);
34 } 33 }
35 }, 34 },
36 onDone: () { 35 onDone: () {
37 serverEndDone.complete(null); 36 serverEndDone.complete(null);
38 }); 37 });
39 }, 38 },
40 onDone: () { 39 onDone: () {
41 serverDone.complete(null); 40 serverDone.complete(null);
42 }); 41 });
43 RawSecureSocket.connect(HOST_NAME, server.port).then((clientConnection) { 42 RawSecureSocket.connect(HOST, server.port).then((clientConnection) {
44 clientConnection.listen((event){ 43 clientConnection.listen((event){
45 if (toClose == "client" || event == RawSocketEvent.READ_CLOSED) { 44 if (toClose == "client" || event == RawSocketEvent.READ_CLOSED) {
46 clientConnection.shutdown(SocketDirection.SEND); 45 clientConnection.shutdown(SocketDirection.SEND);
47 } 46 }
48 }, 47 },
49 onDone: () { 48 onDone: () {
50 clientEndDone.complete(null); 49 clientEndDone.complete(null);
51 server.close(); 50 server.close();
52 }); 51 });
53 }); 52 });
54 }); 53 });
55 } 54 }
56 55
57 void testCloseBothEnds() { 56 void testCloseBothEnds() {
58 asyncStart(); 57 asyncStart();
59 RawSecureServerSocket.bind(HOST_NAME, 0, CERTIFICATE).then((server) { 58 RawSecureServerSocket.bind(HOST, 0, CERTIFICATE).then((server) {
60 var clientEndFuture = RawSecureSocket.connect(HOST_NAME, server.port); 59 var clientEndFuture = RawSecureSocket.connect(HOST, server.port);
61 server.listen((serverEnd) { 60 server.listen((serverEnd) {
62 clientEndFuture.then((clientEnd) { 61 clientEndFuture.then((clientEnd) {
63 clientEnd.close(); 62 clientEnd.close();
64 serverEnd.close(); 63 serverEnd.close();
65 server.close(); 64 server.close();
66 asyncEnd(); 65 asyncEnd();
67 }); 66 });
68 }); 67 });
69 }); 68 });
70 } 69 }
71 70
72 testPauseServerSocket() { 71 testPauseServerSocket() {
73 const int socketCount = 10; 72 const int socketCount = 10;
74 var acceptCount = 0; 73 var acceptCount = 0;
75 var resumed = false; 74 var resumed = false;
76 75
77 asyncStart(); 76 asyncStart();
78 77
79 RawSecureServerSocket.bind(HOST_NAME, 78 RawSecureServerSocket.bind(HOST,
80 0, 79 0,
81 CERTIFICATE, 80 CERTIFICATE,
82 backlog: 2 * socketCount).then((server) { 81 backlog: 2 * socketCount).then((server) {
83 Expect.isTrue(server.port > 0); 82 Expect.isTrue(server.port > 0);
84 var subscription; 83 var subscription;
85 subscription = server.listen((connection) { 84 subscription = server.listen((connection) {
86 Expect.isTrue(resumed); 85 Expect.isTrue(resumed);
87 connection.shutdown(SocketDirection.SEND); 86 connection.shutdown(SocketDirection.SEND);
88 if (++acceptCount == 2 * socketCount) { 87 if (++acceptCount == 2 * socketCount) {
89 server.close(); 88 server.close();
90 asyncEnd(); 89 asyncEnd();
91 } 90 }
92 }); 91 });
93 92
94 // Pause the server socket subscription and resume it after having 93 // Pause the server socket subscription and resume it after having
95 // connected a number client sockets. Then connect more client 94 // connected a number client sockets. Then connect more client
96 // sockets. 95 // sockets.
97 subscription.pause(); 96 subscription.pause();
98 var connectCount = 0; 97 var connectCount = 0;
99 for (int i = 0; i < socketCount; i++) { 98 for (int i = 0; i < socketCount; i++) {
100 RawSecureSocket.connect(HOST_NAME, server.port).then((connection) { 99 RawSecureSocket.connect(HOST, server.port).then((connection) {
101 connection.shutdown(SocketDirection.SEND); 100 connection.shutdown(SocketDirection.SEND);
102 }); 101 });
103 } 102 }
104 new Timer(const Duration(milliseconds: 500), () { 103 new Timer(const Duration(milliseconds: 500), () {
105 subscription.resume(); 104 subscription.resume();
106 resumed = true; 105 resumed = true;
107 for (int i = 0; i < socketCount; i++) { 106 for (int i = 0; i < socketCount; i++) {
108 RawSecureSocket.connect(HOST_NAME, server.port).then((connection) { 107 RawSecureSocket.connect(HOST, server.port).then((connection) {
109 connection.shutdown(SocketDirection.SEND); 108 connection.shutdown(SocketDirection.SEND);
110 }); 109 });
111 } 110 }
112 }); 111 });
113 }); 112 });
114 } 113 }
115 114
116 testCloseServer() { 115 testCloseServer() {
117 const int socketCount = 3; 116 const int socketCount = 3;
118 asyncStart(); 117 asyncStart();
119 List ends = []; 118 List ends = [];
120 119
121 RawSecureServerSocket.bind(HOST_NAME, 0, CERTIFICATE).then((server) { 120 RawSecureServerSocket.bind(HOST, 0, CERTIFICATE).then((server) {
122 Expect.isTrue(server.port > 0); 121 Expect.isTrue(server.port > 0);
123 void checkDone() { 122 void checkDone() {
124 if (ends.length < 2 * socketCount) return; 123 if (ends.length < 2 * socketCount) return;
125 for (var end in ends) { 124 for (var end in ends) {
126 end.close(); 125 end.close();
127 } 126 }
128 server.close(); 127 server.close();
129 asyncEnd(); 128 asyncEnd();
130 } 129 }
131 130
132 server.listen((connection) { 131 server.listen((connection) {
133 ends.add(connection); 132 ends.add(connection);
134 checkDone(); 133 checkDone();
135 }); 134 });
136 135
137 for (int i = 0; i < socketCount; i++) { 136 for (int i = 0; i < socketCount; i++) {
138 RawSecureSocket.connect(HOST_NAME, server.port).then((connection) { 137 RawSecureSocket.connect(HOST, server.port).then((connection) {
139 ends.add(connection); 138 ends.add(connection);
140 checkDone(); 139 checkDone();
141 }); 140 });
142 } 141 }
143 }); 142 });
144 } 143 }
145 144
146 145
147 main() { 146 main() {
147 asyncStart();
148 var certificateDatabase = Platform.script.resolve('pkcert').toFilePath(); 148 var certificateDatabase = Platform.script.resolve('pkcert').toFilePath();
149 SecureSocket.initialize(database: certificateDatabase, 149 SecureSocket.initialize(database: certificateDatabase,
150 password: 'dartdart', 150 password: 'dartdart',
151 useBuiltinRoots: false); 151 useBuiltinRoots: false);
152 InternetAddress.lookup("localhost").then((hosts) {
153 HOST = hosts.first;
154 runTests();
155 asyncEnd();
156 });
157 }
152 158
159 runTests() {
153 testCloseOneEnd("client"); 160 testCloseOneEnd("client");
154 testCloseOneEnd("server"); 161 testCloseOneEnd("server");
155 testCloseBothEnds(); 162 testCloseBothEnds();
156 testCloseServer(); 163 testCloseServer();
157 testPauseServerSocket(); 164 testPauseServerSocket();
158 // TODO(whesse): Add testPauseSocket from raw_socket_test.dart. 165 // TODO(whesse): Add testPauseSocket from raw_socket_test.dart.
159 // TODO(whesse): Add testCancelResubscribeSocket from raw_socket_test.dart. 166 // TODO(whesse): Add testCancelResubscribeSocket from raw_socket_test.dart.
160 } 167 }
OLDNEW
« no previous file with comments | « tests/standalone/io/https_server_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