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

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

Issue 12316036: Merge IO v2 branch to bleeding edge (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Rebased to r18818 Created 7 years, 10 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) 2012, 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 5
6 import "dart:async"; 6 import "dart:async";
7 import "dart:io"; 7 import "dart:io";
8 8
9 void test1(int totalConnections) { 9 void test1(int totalConnections) {
10 // Server which just closes immediately. 10 // Server which just closes immediately.
11 HttpServer server = new HttpServer(); 11 HttpServer.bind().then((server) {
12 server.listen("127.0.0.1", 0, backlog: totalConnections); 12 server.listen((HttpRequest request) {
13 server.defaultRequestHandler = (HttpRequest request, HttpResponse response) { 13 request.response.close();
14 response.outputStream.close(); 14 });
15 };
16 15
17 int count = 0; 16 int count = 0;
18 HttpClient client = new HttpClient(); 17 HttpClient client = new HttpClient();
19 for (int i = 0; i < totalConnections; i++) { 18 for (int i = 0; i < totalConnections; i++) {
20 HttpClientConnection conn = client.get("127.0.0.1", server.port, "/"); 19 client.get("127.0.0.1", server.port, "/")
21 conn.onRequest = (HttpClientRequest request) { 20 .then((HttpClientRequest request) => request.close())
22 request.outputStream.close(); 21 .then((HttpClientResponse response) {
23 }; 22 response.listen((_) {}, onDone: () {
24 conn.onResponse = (HttpClientResponse response) { 23 count++;
25 response.inputStream.onClosed = () { 24 if (count == totalConnections) {
26 count++; 25 client.close();
27 if (count == totalConnections) { 26 server.close();
28 client.shutdown(); 27 }
29 server.close(); 28 });
30 } 29 });
31 }; 30 }
32 }; 31 });
33 }
34 } 32 }
35 33
36 34
37 void test2(int totalConnections, int outputStreamWrites) { 35 void test2(int totalConnections, int outputStreamWrites) {
38 // Server which responds without waiting for request body. 36 // Server which responds without waiting for request body.
39 HttpServer server = new HttpServer(); 37 HttpServer.bind().then((server) {
40 server.listen("127.0.0.1", 0, backlog: totalConnections); 38 server.listen((HttpRequest request) {
41 server.defaultRequestHandler = (HttpRequest request, HttpResponse response) { 39 request.response.addString("!dlrow ,olleH");
42 response.outputStream.writeString("!dlrow ,olleH"); 40 request.response.close();
43 response.outputStream.close(); 41 });
44 };
45 42
46 int count = 0; 43 int count = 0;
47 HttpClient client = new HttpClient(); 44 HttpClient client = new HttpClient();
48 for (int i = 0; i < totalConnections; i++) { 45 for (int i = 0; i < totalConnections; i++) {
49 HttpClientConnection conn = client.get("127.0.0.1", server.port, "/"); 46 client.get("127.0.0.1", server.port, "/")
50 conn.onRequest = (HttpClientRequest request) { 47 .then((HttpClientRequest request) {
51 request.contentLength = -1; 48 request.contentLength = -1;
52 for (int i = 0; i < outputStreamWrites; i++) 49 for (int i = 0; i < outputStreamWrites; i++) {
53 request.outputStream.writeString("Hello, world!"); 50 request.addString("Hello, world!");
54 request.outputStream.close(); 51 }
55 }; 52 return request.close();
56 conn.onResponse = (HttpClientResponse response) { 53 })
57 response.inputStream.onData = response.inputStream.read; 54 .then((HttpClientResponse response) {
58 response.inputStream.onClosed = () { 55 response.listen(
59 count++; 56 (_) {},
60 if (count == totalConnections) { 57 onDone: () {
61 client.shutdown(); 58 count++;
62 server.close(); 59 if (count == totalConnections) {
63 } 60 client.close(force: true);
64 }; 61 server.close();
65 }; 62 }
66 conn.onError = (e) { 63 },
67 count++; 64 onError: (e) {} /* ignore */);
68 if (count == totalConnections) { 65 })
69 client.shutdown(); 66 .catchError((error) {
70 server.close(); 67 count++;
71 } 68 if (count == totalConnections) {
72 }; 69 client.close();
73 } 70 server.close();
71 }
72 });
73 }
74 });
74 } 75 }
75 76
76 77
77 void test3(int totalConnections) { 78 void test3(int totalConnections) {
78 // Server which responds when request body has been received. 79 // Server which responds when request body has been received.
79 HttpServer server = new HttpServer(); 80 HttpServer.bind().then((server) {
80 server.listen("127.0.0.1", 0, backlog: totalConnections); 81
81 server.defaultRequestHandler = (HttpRequest request, HttpResponse response) { 82 server.listen((HttpRequest request) {
82 request.inputStream.onData = () { 83 request.listen((_) {}, onDone: () {
83 request.inputStream.read(); 84 request.response.addString("!dlrow ,olleH");
84 }; 85 request.response.close();
85 request.inputStream.onClosed = () { 86 });
86 response.outputStream.writeString("!dlrow ,olleH"); 87 });
87 response.outputStream.close();
88 };
89 };
90 88
91 int count = 0; 89 int count = 0;
92 HttpClient client = new HttpClient(); 90 HttpClient client = new HttpClient();
93 for (int i = 0; i < totalConnections; i++) { 91 for (int i = 0; i < totalConnections; i++) {
94 HttpClientConnection conn = client.get("127.0.0.1", server.port, "/"); 92 client.get("127.0.0.1", server.port, "/")
95 conn.onRequest = (HttpClientRequest request) { 93 .then((HttpClientRequest request) {
96 request.contentLength = -1; 94 request.contentLength = -1;
97 request.outputStream.writeString("Hello, world!"); 95 request.addString("Hello, world!");
98 request.outputStream.close(); 96 return request.close();
99 }; 97 })
100 conn.onResponse = (HttpClientResponse response) { 98 .then((HttpClientResponse response) {
101 response.inputStream.onData = response.inputStream.read; 99 response.listen((_) {}, onDone: () {
102 response.inputStream.onClosed = () { 100 count++;
103 count++; 101 if (count == totalConnections) {
104 if (count == totalConnections) { 102 client.close();
105 client.shutdown(); 103 server.close();
106 server.close(); 104 }
107 } 105 });
108 }; 106 });
109 };
110 } 107 }
108
109 });
111 } 110 }
112 111
113 112
114 void test4() { 113 void test4() {
115 var server = new HttpServer(); 114 HttpServer.bind().then((server) {
116 server.listen("127.0.0.1", 0); 115
117 server.defaultRequestHandler = (var request, var response) { 116 server.listen((var request) {
118 request.inputStream.onClosed = () { 117 request.listen((_) {}, onDone: () {
119 new Timer.repeating(new Duration(milliseconds: 100), (timer) { 118 new Timer.repeating(new Duration(milliseconds: 100), (timer) {
120 if (server.connectionsInfo().total == 0) { 119 if (server.connectionsInfo().total == 0) {
121 server.close(); 120 server.close();
122 timer.cancel(); 121 timer.cancel();
123 } 122 }
124 }); 123 });
125 response.outputStream.close(); 124 request.response.close();
126 }; 125 });
127 }; 126 });
128 127
129 var client= new HttpClient(); 128 var client= new HttpClient();
130 var conn = client.get("127.0.0.1", server.port, "/"); 129 client.get("127.0.0.1", server.port, "/")
131 conn.onResponse = (var response) { 130 .then((request) => request.close())
132 response.inputStream.onData = response.inputStream.read; 131 .then((response) {
133 response.inputStream.onClosed = () { 132 response.listen((_) {}, onDone: () {
134 client.shutdown(); 133 client.close();
135 }; 134 });
136 }; 135 });
136
137 });
137 } 138 }
138 139
139 140
140 void test5(int totalConnections) { 141 void test5(int totalConnections) {
141 var server = new HttpServer(); 142 HttpServer.bind().then((server) {
142 server.listen("127.0.0.1", 0, backlog: totalConnections); 143 server.listen(
143 server.defaultRequestHandler = (var request, var response) { 144 (request) {
144 request.inputStream.onClosed = () { 145 request.listen(
145 response.outputStream.close(); 146 (_) { },
146 }; 147 onDone: () {
147 }; 148 request.response.close();
148 server.onError = (e) => { }; 149 },
150 onError: (error) { });
151 },
152 onError: (error) { });
149 153
150 // Create a number of client requests and keep then active. Then 154 // Create a number of client requests and keep then active. Then
151 // close the client and wait for the server to lose all active 155 // close the client and wait for the server to lose all active
152 // connections. 156 // connections.
153 var client= new HttpClient(); 157 var client= new HttpClient();
154 for (int i = 0; i < totalConnections; i++) { 158 for (int i = 0; i < totalConnections; i++) {
155 var conn = client.post("127.0.0.1", server.port, "/"); 159 client.post("127.0.0.1", server.port, "/")
156 conn.onRequest = (req) { req.outputStream.write([0]); }; 160 .then((request) {
157 conn.onError = (e) => Expect.isTrue(e is HttpException); 161 request.add([0]);
158 } 162 // TODO(sgjesse): Make this test work with
159 bool clientClosed = false; 163 //request.response instead of request.close() return
160 new Timer.repeating(new Duration(milliseconds: 100), (timer) { 164 //return request.response;
161 if (!clientClosed) { 165 return request.close();
162 if (server.connectionsInfo().total == totalConnections) { 166 })
163 clientClosed = true; 167 .then((response) { })
164 client.shutdown(force: true); 168 .catchError((e) { }, test: (e) => e is HttpParserException);
169 }
170 bool clientClosed = false;
171 new Timer.repeating(new Duration(milliseconds: 100), (timer) {
172 if (!clientClosed) {
173 if (server.connectionsInfo().total == totalConnections) {
174 clientClosed = true;
175 client.close(force: true);
176 }
177 } else {
178 if (server.connectionsInfo().total == 0) {
179 server.close();
180 timer.cancel();
181 }
165 } 182 }
166 } else { 183 });
167 if (server.connectionsInfo().total == 0) {
168 server.close();
169 timer.cancel();
170 }
171 }
172 }); 184 });
173 } 185 }
174 186
175 187
176 void main() { 188 void main() {
177 test1(1); 189 test1(1);
178 test1(10); 190 test1(10);
179 test2(1, 10); 191 test2(1, 10);
180 test2(10, 10); 192 test2(10, 10);
181 test2(10, 1000); 193 test2(10, 1000);
182 test3(1); 194 test3(1);
183 test3(10); 195 test3(10);
184 test4(); 196 test4();
185 test5(1); 197 test5(1);
186 test5(10); 198 test5(10);
187 } 199 }
OLDNEW
« no previous file with comments | « tests/standalone/io/http_session_test.dart ('k') | tests/standalone/io/http_stream_close_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698