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/http_server_response_test.dart

Issue 15814004: Don't report unuseful SocketIOExceptions on HttpServer. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 7 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
« no previous file with comments | « tests/standalone/io/http_server_early_client_close_test.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "package:expect/expect.dart"; 10 import "package:expect/expect.dart";
11 import "dart:async"; 11 import "dart:async";
12 import "dart:io"; 12 import "dart:io";
13 import "dart:typed_data"; 13 import "dart:typed_data";
14 14
15 void testServerRequest(void handler(server, request), {int bytes}) { 15 void testServerRequest(void handler(server, request),
16 {int bytes,
17 bool closeClient}) {
16 HttpServer.bind("127.0.0.1", 0).then((server) { 18 HttpServer.bind("127.0.0.1", 0).then((server) {
17 server.listen((request) { 19 server.listen((request) {
18 handler(server, request); 20 handler(server, request);
19 }); 21 });
20 22
21 var client = new HttpClient(); 23 var client = new HttpClient();
22 // We only close the client on either 24 // We only close the client on either
23 // - Bad response headers 25 // - Bad response headers
24 // - Response done (with optional errors in between). 26 // - Response done (with optional errors in between).
25 client.get("127.0.0.1", server.port, "/") 27 client.get("127.0.0.1", server.port, "/")
26 .then((request) => request.close()) 28 .then((request) => request.close())
27 .then((response) { 29 .then((response) {
28 int received = 0; 30 int received = 0;
29 response.listen( 31 var subscription;
30 (data) => received += data.length, 32 subscription = response.listen(
33 (data) {
34 if (closeClient == true) {
35 subscription.cancel();
36 client.close();
37 } else {
38 received += data.length;
39 }
40 },
31 onDone: () { 41 onDone: () {
32 if (bytes != null) Expect.equals(received, bytes); 42 if (bytes != null) Expect.equals(received, bytes);
33 client.close(); 43 client.close();
34 }, 44 },
35 onError: (error) { 45 onError: (error) {
36 Expect.isTrue(error is HttpParserException); 46 Expect.isTrue(error is HttpParserException);
37 }); 47 });
38 }) 48 })
39 .catchError((error) { 49 .catchError((error) {
40 client.close(); 50 client.close();
41 }, test: (e) => e is HttpParserException); 51 }, test: (e) => e is HttpParserException);
42 }); 52 });
43 } 53 }
44 54
55
45 void testResponseDone() { 56 void testResponseDone() {
46 testServerRequest((server, request) { 57 testServerRequest((server, request) {
47 request.response.close(); 58 request.response.close();
48 request.response.done.then((response) { 59 request.response.done.then((response) {
49 Expect.equals(request.response, response); 60 Expect.equals(request.response, response);
50 server.close(); 61 server.close();
51 }); 62 });
52 }); 63 });
53 64
54 testServerRequest((server, request) { 65 testServerRequest((server, request) {
55 new File("__not_exitsing_file_").openRead().pipe(request.response) 66 new File("__not_exitsing_file_").openRead().pipe(request.response)
56 .catchError((e) { 67 .catchError((e) {
57 server.close(); 68 server.close();
58 }); 69 });
59 }); 70 });
60 71
61 testServerRequest((server, request) { 72 testServerRequest((server, request) {
62 request.response.done.then((_) { 73 request.response.done.then((_) {
63 server.close(); 74 server.close();
64 }); 75 });
65 request.response.contentLength = 0; 76 request.response.contentLength = 0;
66 request.response.close(); 77 request.response.close();
67 }); 78 });
68 } 79 }
69 80
81
70 void testResponseAddStream() { 82 void testResponseAddStream() {
71 int bytes = new File(new Options().script).lengthSync(); 83 int bytes = new File(new Options().script).lengthSync();
72 84
73 testServerRequest((server, request) { 85 testServerRequest((server, request) {
74 request.response.addStream(new File(new Options().script).openRead()) 86 request.response.addStream(new File(new Options().script).openRead())
75 .then((response) { 87 .then((response) {
76 response.close(); 88 response.close();
77 response.done.then((_) => server.close()); 89 response.done.then((_) => server.close());
78 }); 90 });
79 }, bytes: bytes); 91 }, bytes: bytes);
(...skipping 27 matching lines...) Expand all
107 }); 119 });
108 120
109 testServerRequest((server, request) { 121 testServerRequest((server, request) {
110 new File("__not_exitsing_file_").openRead().pipe(request.response) 122 new File("__not_exitsing_file_").openRead().pipe(request.response)
111 .catchError((e) { 123 .catchError((e) {
112 server.close(); 124 server.close();
113 }); 125 });
114 }); 126 });
115 } 127 }
116 128
129
130 void testResponseAddStreamClosed() {
131 testServerRequest((server, request) {
132 request.response.addStream(new File(new Options().script).openRead())
133 .then((response) {
134 response.close();
135 response.done.then((_) => server.close());
136 });
137 }, closeClient: true);
138
139 testServerRequest((server, request) {
140 int count = 0;
141 write() {
Søren Gjesse 2013/05/23 13:48:15 Maybe interleave the addStream calls with some Str
Anders Johnsen 2013/05/23 13:54:50 Done.
142 request.response.addStream(new File(new Options().script).openRead())
143 .then((response) {
144 count++;
145 if (count < 1000) {
146 write();
147 } else {
148 response.close();
149 response.done.then((_) => server.close());
150 }
151 });
152 }
153 write();
154 }, closeClient: true);
155 }
156
157
158 void testResponseAddClosed() {
159 testServerRequest((server, request) {
160 request.response.add(new File(new Options().script).readAsBytesSync());
161 request.response.close();
162 request.response.done.then((_) => server.close());
163 }, closeClient: true);
164
165 testServerRequest((server, request) {
166 for (int i = 0; i < 1000; i++) {
167 request.response.add(new File(new Options().script).readAsBytesSync());
168 }
169 request.response.close();
170 request.response.done.then((_) => server.close());
171 }, closeClient: true);
172
173 testServerRequest((server, request) {
174 int count = 0;
175 write() {
176 request.response.add(new File(new Options().script).readAsBytesSync());
177 Timer.run(() {
178 count++;
179 if (count < 1000) {
180 write();
181 } else {
182 request.response.close();
183 request. response.done.then((_) => server.close());
184 }
185 });
186 }
187 write();
188 }, closeClient: true);
189 }
190
191
117 void testBadResponseAdd() { 192 void testBadResponseAdd() {
118 testServerRequest((server, request) { 193 testServerRequest((server, request) {
119 request.response.contentLength = 0; 194 request.response.contentLength = 0;
120 request.response.add([0]); 195 request.response.add([0]);
121 request.response.close(); 196 request.response.close();
122 request.response.done.catchError((error) { 197 request.response.done.catchError((error) {
123 server.close(); 198 server.close();
124 }, test: (e) => e is HttpException); 199 }, test: (e) => e is HttpException);
125 }); 200 });
126 201
(...skipping 12 matching lines...) Expand all
139 request.response.add(new Uint8List(64 * 1024)); 214 request.response.add(new Uint8List(64 * 1024));
140 request.response.add(new Uint8List(64 * 1024)); 215 request.response.add(new Uint8List(64 * 1024));
141 request.response.add(new Uint8List(64 * 1024)); 216 request.response.add(new Uint8List(64 * 1024));
142 request.response.close(); 217 request.response.close();
143 request.response.done.catchError((error) { 218 request.response.done.catchError((error) {
144 server.close(); 219 server.close();
145 }, test: (e) => e is HttpException); 220 }, test: (e) => e is HttpException);
146 }); 221 });
147 } 222 }
148 223
224
149 void testBadResponseClose() { 225 void testBadResponseClose() {
150 testServerRequest((server, request) { 226 testServerRequest((server, request) {
151 request.response.contentLength = 5; 227 request.response.contentLength = 5;
152 request.response.close(); 228 request.response.close();
153 request.response.done.catchError((error) { 229 request.response.done.catchError((error) {
154 server.close(); 230 server.close();
155 }, test: (e) => e is HttpException); 231 }, test: (e) => e is HttpException);
156 }); 232 });
157 233
158 testServerRequest((server, request) { 234 testServerRequest((server, request) {
159 request.response.contentLength = 5; 235 request.response.contentLength = 5;
160 request.response.add([0]); 236 request.response.add([0]);
161 request.response.close(); 237 request.response.close();
162 request.response.done.catchError((error) { 238 request.response.done.catchError((error) {
163 server.close(); 239 server.close();
164 }, test: (e) => e is HttpException); 240 }, test: (e) => e is HttpException);
165 }); 241 });
166 } 242 }
167 243
244
168 void main() { 245 void main() {
169 testResponseDone(); 246 testResponseDone();
170 testResponseAddStream(); 247 testResponseAddStream();
248 testResponseAddStreamClosed();
249 testResponseAddClosed();
171 testBadResponseAdd(); 250 testBadResponseAdd();
172 testBadResponseClose(); 251 testBadResponseClose();
173 } 252 }
OLDNEW
« no previous file with comments | « tests/standalone/io/http_server_early_client_close_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698