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

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

Issue 1319703002: Breaking Change: merge BoringSSL branch into master (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 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
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 15
16 InternetAddress HOST; 16 InternetAddress HOST;
17 const CERTIFICATE = "localhost_cert"; 17 String localFile(path) => Platform.script.resolve(path).toFilePath();
18
19 SecurityContext serverContext = new SecurityContext()
20 ..useCertificateChain(localFile('certificates/server_chain.pem'))
21 ..usePrivateKey(localFile('certificates/server_key.pem'),
22 password: 'dartdart');
23
24 SecurityContext clientContext = new SecurityContext()
25 ..setTrustedCertificates(file: localFile('certificates/trusted_certs.pem'));
18 26
19 void testCloseOneEnd(String toClose) { 27 void testCloseOneEnd(String toClose) {
20 asyncStart(); 28 asyncStart();
21 Completer serverDone = new Completer(); 29 Completer serverDone = new Completer();
22 Completer serverEndDone = new Completer(); 30 Completer serverEndDone = new Completer();
23 Completer clientEndDone = new Completer(); 31 Completer clientEndDone = new Completer();
24 Future.wait([serverDone.future, serverEndDone.future, clientEndDone.future]) 32 Future.wait([serverDone.future, serverEndDone.future, clientEndDone.future])
25 .then((_) { 33 .then((_) {
26 asyncEnd(); 34 asyncEnd();
27 }); 35 });
28 RawSecureServerSocket.bind(HOST, 0, CERTIFICATE).then((server) { 36 RawSecureServerSocket.bind(HOST, 0, serverContext).then((server) {
29 server.listen((serverConnection) { 37 server.listen((serverConnection) {
30 serverConnection.listen((event) { 38 serverConnection.listen((event) {
31 if (toClose == "server" || event == RawSocketEvent.READ_CLOSED) { 39 if (toClose == "server" || event == RawSocketEvent.READ_CLOSED) {
32 serverConnection.shutdown(SocketDirection.SEND); 40 serverConnection.shutdown(SocketDirection.SEND);
33 } 41 }
34 }, 42 },
35 onDone: () { 43 onDone: () {
36 serverEndDone.complete(null); 44 serverEndDone.complete(null);
37 }); 45 });
38 }, 46 },
39 onDone: () { 47 onDone: () {
40 serverDone.complete(null); 48 serverDone.complete(null);
41 }); 49 });
42 RawSecureSocket.connect(HOST, server.port).then((clientConnection) { 50 RawSecureSocket.connect(HOST, server.port, context: clientContext)
51 .then((clientConnection) {
43 clientConnection.listen((event){ 52 clientConnection.listen((event){
44 if (toClose == "client" || event == RawSocketEvent.READ_CLOSED) { 53 if (toClose == "client" || event == RawSocketEvent.READ_CLOSED) {
45 clientConnection.shutdown(SocketDirection.SEND); 54 clientConnection.shutdown(SocketDirection.SEND);
46 } 55 }
47 }, 56 },
48 onDone: () { 57 onDone: () {
49 clientEndDone.complete(null); 58 clientEndDone.complete(null);
50 server.close(); 59 server.close();
51 }); 60 });
52 }); 61 });
53 }); 62 });
54 } 63 }
55 64
56 void testCloseBothEnds() { 65 void testCloseBothEnds() {
57 asyncStart(); 66 asyncStart();
58 RawSecureServerSocket.bind(HOST, 0, CERTIFICATE).then((server) { 67 RawSecureServerSocket.bind(HOST, 0, serverContext).then((server) {
59 var clientEndFuture = RawSecureSocket.connect(HOST, server.port); 68 var clientEndFuture =
69 RawSecureSocket.connect(HOST, server.port, context: clientContext);
60 server.listen((serverEnd) { 70 server.listen((serverEnd) {
61 clientEndFuture.then((clientEnd) { 71 clientEndFuture.then((clientEnd) {
62 clientEnd.close(); 72 clientEnd.close();
63 serverEnd.close(); 73 serverEnd.close();
64 server.close(); 74 server.close();
65 asyncEnd(); 75 asyncEnd();
66 }); 76 });
67 }); 77 });
68 }); 78 });
69 } 79 }
70 80
71 testPauseServerSocket() { 81 testPauseServerSocket() {
72 const int socketCount = 10; 82 const int socketCount = 10;
73 var acceptCount = 0; 83 var acceptCount = 0;
74 var resumed = false; 84 var resumed = false;
75 85
76 asyncStart(); 86 asyncStart();
77 87
78 RawSecureServerSocket.bind(HOST, 88 RawSecureServerSocket.bind(HOST,
79 0, 89 0,
80 CERTIFICATE, 90 serverContext,
81 backlog: 2 * socketCount).then((server) { 91 backlog: 2 * socketCount).then((server) {
82 Expect.isTrue(server.port > 0); 92 Expect.isTrue(server.port > 0);
83 var subscription; 93 var subscription;
84 subscription = server.listen((connection) { 94 subscription = server.listen((connection) {
85 Expect.isTrue(resumed); 95 Expect.isTrue(resumed);
86 connection.shutdown(SocketDirection.SEND); 96 connection.shutdown(SocketDirection.SEND);
87 if (++acceptCount == 2 * socketCount) { 97 if (++acceptCount == 2 * socketCount) {
88 server.close(); 98 server.close();
89 asyncEnd(); 99 asyncEnd();
90 } 100 }
91 }); 101 });
92 102
93 // Pause the server socket subscription and resume it after having 103 // Pause the server socket subscription and resume it after having
94 // connected a number client sockets. Then connect more client 104 // connected a number client sockets. Then connect more client
95 // sockets. 105 // sockets.
96 subscription.pause(); 106 subscription.pause();
97 var connectCount = 0; 107 var connectCount = 0;
98 for (int i = 0; i < socketCount; i++) { 108 for (int i = 0; i < socketCount; i++) {
99 RawSecureSocket.connect(HOST, server.port).then((connection) { 109 RawSecureSocket.connect(HOST, server.port, context: clientContext)
110 .then((connection) {
100 connection.shutdown(SocketDirection.SEND); 111 connection.shutdown(SocketDirection.SEND);
101 }); 112 });
102 } 113 }
103 new Timer(const Duration(milliseconds: 500), () { 114 new Timer(const Duration(milliseconds: 500), () {
104 subscription.resume(); 115 subscription.resume();
105 resumed = true; 116 resumed = true;
106 for (int i = 0; i < socketCount; i++) { 117 for (int i = 0; i < socketCount; i++) {
107 RawSecureSocket.connect(HOST, server.port).then((connection) { 118 RawSecureSocket.connect(HOST, server.port, context: clientContext)
119 .then((connection) {
108 connection.shutdown(SocketDirection.SEND); 120 connection.shutdown(SocketDirection.SEND);
109 }); 121 });
110 } 122 }
111 }); 123 });
112 }); 124 });
113 } 125 }
114 126
115 testCloseServer() { 127 testCloseServer() {
116 const int socketCount = 3; 128 const int socketCount = 3;
117 asyncStart(); 129 asyncStart();
118 List ends = []; 130 List ends = [];
119 131
120 RawSecureServerSocket.bind(HOST, 0, CERTIFICATE).then((server) { 132 RawSecureServerSocket.bind(HOST, 0, serverContext).then((server) {
121 Expect.isTrue(server.port > 0); 133 Expect.isTrue(server.port > 0);
122 void checkDone() { 134 void checkDone() {
123 if (ends.length < 2 * socketCount) return; 135 if (ends.length < 2 * socketCount) return;
124 for (var end in ends) { 136 for (var end in ends) {
125 end.close(); 137 end.close();
126 } 138 }
127 server.close(); 139 server.close();
128 asyncEnd(); 140 asyncEnd();
129 } 141 }
130 142
131 server.listen((connection) { 143 server.listen((connection) {
132 ends.add(connection); 144 ends.add(connection);
133 checkDone(); 145 checkDone();
134 }); 146 });
135 147
136 for (int i = 0; i < socketCount; i++) { 148 for (int i = 0; i < socketCount; i++) {
137 RawSecureSocket.connect(HOST, server.port).then((connection) { 149 RawSecureSocket.connect(HOST, server.port, context: clientContext)
150 .then((connection) {
138 ends.add(connection); 151 ends.add(connection);
139 checkDone(); 152 checkDone();
140 }); 153 });
141 } 154 }
142 }); 155 });
143 } 156 }
144 157
145 158
146 main() { 159 main() {
147 asyncStart(); 160 asyncStart();
148 var certificateDatabase = Platform.script.resolve('pkcert').toFilePath();
149 SecureSocket.initialize(database: certificateDatabase,
150 password: 'dartdart',
151 useBuiltinRoots: false);
152 InternetAddress.lookup("localhost").then((hosts) { 161 InternetAddress.lookup("localhost").then((hosts) {
153 HOST = hosts.first; 162 HOST = hosts.first;
154 runTests(); 163 runTests();
155 asyncEnd(); 164 asyncEnd();
156 }); 165 });
157 } 166 }
158 167
159 runTests() { 168 runTests() {
160 testCloseOneEnd("client"); 169 testCloseOneEnd("client");
161 testCloseOneEnd("server"); 170 testCloseOneEnd("server");
162 testCloseBothEnds(); 171 testCloseBothEnds();
163 testCloseServer(); 172 testCloseServer();
164 testPauseServerSocket(); 173 testPauseServerSocket();
165 // TODO(whesse): Add testPauseSocket from raw_socket_test.dart. 174 // TODO(whesse): Add testPauseSocket from raw_socket_test.dart.
166 // TODO(whesse): Add testCancelResubscribeSocket from raw_socket_test.dart. 175 // TODO(whesse): Add testCancelResubscribeSocket from raw_socket_test.dart.
167 } 176 }
OLDNEW
« no previous file with comments | « tests/standalone/io/pkcert/key4.db ('k') | tests/standalone/io/raw_secure_server_socket_argument_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698