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

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

Issue 11411121: Generate an error for active connections when the HTTP client is shutdown (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fixed long line Created 8 years 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) 2012, 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:isolate"); 10 #import("dart:isolate");
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 request.headers.set("Host", "www.dartlang.org:"); 280 request.headers.set("Host", "www.dartlang.org:");
281 Expect.equals("www.dartlang.org", request.headers.host); 281 Expect.equals("www.dartlang.org", request.headers.host);
282 Expect.equals(HttpClient.DEFAULT_HTTP_PORT, request.headers.port); 282 Expect.equals(HttpClient.DEFAULT_HTTP_PORT, request.headers.port);
283 request.headers.set("Host", "www.dartlang.org:1234"); 283 request.headers.set("Host", "www.dartlang.org:1234");
284 Expect.equals("www.dartlang.org", request.headers.host); 284 Expect.equals("www.dartlang.org", request.headers.host);
285 Expect.equals(1234, request.headers.port); 285 Expect.equals(1234, request.headers.port);
286 request.outputStream.close(); 286 request.outputStream.close();
287 }; 287 };
288 conn.onResponse = (HttpClientResponse response) { 288 conn.onResponse = (HttpClientResponse response) {
289 Expect.equals(HttpStatus.OK, response.statusCode); 289 Expect.equals(HttpStatus.OK, response.statusCode);
290 httpClient.shutdown(); 290 response.inputStream.onData = response.inputStream.read;
291 testServerMain.shutdown(); 291 response.inputStream.onClosed = () {
292 completer.complete(true); 292 httpClient.shutdown();
293 testServerMain.shutdown();
294 completer.complete(true);
295 };
293 }; 296 };
294 }); 297 });
295 testServerMain.start(); 298 testServerMain.start();
296 return completer.future; 299 return completer.future;
297 } 300 }
298 301
299 Future testExpires() { 302 Future testExpires() {
300 Completer completer = new Completer(); 303 Completer completer = new Completer();
301 TestServerMain testServerMain = new TestServerMain(); 304 TestServerMain testServerMain = new TestServerMain();
302 testServerMain.setServerStartedHandler((int port) { 305 testServerMain.setServerStartedHandler((int port) {
303 int responses = 0; 306 int responses = 0;
304 HttpClient httpClient = new HttpClient(); 307 HttpClient httpClient = new HttpClient();
305 308
306 void processResponse(HttpClientResponse response) { 309 void processResponse(HttpClientResponse response) {
307 Expect.equals(HttpStatus.OK, response.statusCode); 310 Expect.equals(HttpStatus.OK, response.statusCode);
308 Expect.equals("Fri, 11 Jun 1999 18:46:53 GMT", 311 Expect.equals("Fri, 11 Jun 1999 18:46:53 GMT",
309 response.headers["expires"][0]); 312 response.headers["expires"][0]);
310 Expect.equals(new Date.utc(1999, Date.JUN, 11, 18, 46, 53, 0), 313 Expect.equals(new Date.utc(1999, Date.JUN, 11, 18, 46, 53, 0),
311 response.headers.expires); 314 response.headers.expires);
312 responses++; 315 response.inputStream.onData = response.inputStream.read;
313 if (responses == 2) { 316 response.inputStream.onClosed = () {
314 httpClient.shutdown(); 317 responses++;
315 testServerMain.shutdown(); 318 if (responses == 2) {
316 completer.complete(true); 319 httpClient.shutdown();
317 } 320 testServerMain.shutdown();
321 completer.complete(true);
322 }
323 };
318 } 324 }
319 325
320 HttpClientConnection conn1 = httpClient.get("127.0.0.1", port, "/expires1"); 326 HttpClientConnection conn1 = httpClient.get("127.0.0.1", port, "/expires1");
321 conn1.onResponse = (HttpClientResponse response) { 327 conn1.onResponse = (HttpClientResponse response) {
322 processResponse(response); 328 processResponse(response);
323 }; 329 };
324 HttpClientConnection conn2 = httpClient.get("127.0.0.1", port, "/expires2"); 330 HttpClientConnection conn2 = httpClient.get("127.0.0.1", port, "/expires2");
325 conn2.onResponse = (HttpClientResponse response) { 331 conn2.onResponse = (HttpClientResponse response) {
326 processResponse(response); 332 processResponse(response);
327 }; 333 };
(...skipping 11 matching lines...) Expand all
339 345
340 void processResponse(HttpClientResponse response) { 346 void processResponse(HttpClientResponse response) {
341 Expect.equals(HttpStatus.OK, response.statusCode); 347 Expect.equals(HttpStatus.OK, response.statusCode);
342 Expect.equals("text/html; charset=utf-8", 348 Expect.equals("text/html; charset=utf-8",
343 response.headers.contentType.toString()); 349 response.headers.contentType.toString());
344 Expect.equals("text/html", response.headers.contentType.value); 350 Expect.equals("text/html", response.headers.contentType.value);
345 Expect.equals("text", response.headers.contentType.primaryType); 351 Expect.equals("text", response.headers.contentType.primaryType);
346 Expect.equals("html", response.headers.contentType.subType); 352 Expect.equals("html", response.headers.contentType.subType);
347 Expect.equals("utf-8", 353 Expect.equals("utf-8",
348 response.headers.contentType.parameters["charset"]); 354 response.headers.contentType.parameters["charset"]);
349 responses++; 355 response.inputStream.onData = response.inputStream.read;
350 if (responses == 2) { 356 response.inputStream.onClosed = () {
351 httpClient.shutdown(); 357 responses++;
352 testServerMain.shutdown(); 358 if (responses == 2) {
353 completer.complete(true); 359 httpClient.shutdown();
354 } 360 testServerMain.shutdown();
361 completer.complete(true);
362 }
363 };
355 } 364 }
356 365
357 HttpClientConnection conn1 = 366 HttpClientConnection conn1 =
358 httpClient.get("127.0.0.1", port, "/contenttype1"); 367 httpClient.get("127.0.0.1", port, "/contenttype1");
359 conn1.onRequest = (HttpClientRequest request) { 368 conn1.onRequest = (HttpClientRequest request) {
360 ContentType contentType = new ContentType(); 369 ContentType contentType = new ContentType();
361 contentType.value = "text/html"; 370 contentType.value = "text/html";
362 contentType.parameters["charset"] = "utf-8"; 371 contentType.parameters["charset"] = "utf-8";
363 request.headers.contentType = contentType; 372 request.headers.contentType = contentType;
364 request.outputStream.close(); 373 request.outputStream.close();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 Expect.fail("Unexpected cookie"); 417 Expect.fail("Unexpected cookie");
409 } 418 }
410 }); 419 });
411 HttpClientConnection conn2 = 420 HttpClientConnection conn2 =
412 httpClient.get("127.0.0.1", port, "/cookie2"); 421 httpClient.get("127.0.0.1", port, "/cookie2");
413 conn2.onRequest = (HttpClientRequest request) { 422 conn2.onRequest = (HttpClientRequest request) {
414 request.cookies.add(response.cookies[0]); 423 request.cookies.add(response.cookies[0]);
415 request.cookies.add(response.cookies[1]); 424 request.cookies.add(response.cookies[1]);
416 request.outputStream.close(); 425 request.outputStream.close();
417 }; 426 };
418 conn2.onResponse = (HttpClientResponse ignored) { 427 conn2.onResponse = (HttpClientResponse response) {
419 httpClient.shutdown(); 428 response.inputStream.onData = response.inputStream.read;
420 testServerMain.shutdown(); 429 response.inputStream.onClosed = () {
421 completer.complete(true); 430 httpClient.shutdown();
431 testServerMain.shutdown();
432 completer.complete(true);
433 };
422 }; 434 };
423 }; 435 };
424 }); 436 });
425 testServerMain.start(); 437 testServerMain.start();
426 return completer.future; 438 return completer.future;
427 } 439 }
428 440
429 Future testFlush() { 441 Future testFlush() {
430 Completer completer = new Completer(); 442 Completer completer = new Completer();
431 TestServerMain testServerMain = new TestServerMain(); 443 TestServerMain testServerMain = new TestServerMain();
432 testServerMain.setServerStartedHandler((int port) { 444 testServerMain.setServerStartedHandler((int port) {
433 HttpClient httpClient = new HttpClient(); 445 HttpClient httpClient = new HttpClient();
434 446
435 HttpClientConnection conn = httpClient.get("127.0.0.1", port, "/flush"); 447 HttpClientConnection conn = httpClient.get("127.0.0.1", port, "/flush");
436 conn.onRequest = (HttpClientRequest request) { 448 conn.onRequest = (HttpClientRequest request) {
437 request.outputStream.flush(); 449 request.outputStream.flush();
438 request.outputStream.close(); 450 request.outputStream.close();
439 }; 451 };
440 conn.onResponse = (HttpClientResponse response) { 452 conn.onResponse = (HttpClientResponse response) {
441 Expect.equals(HttpStatus.OK, response.statusCode); 453 Expect.equals(HttpStatus.OK, response.statusCode);
442 httpClient.shutdown(); 454 response.inputStream.onData = response.inputStream.read;
443 testServerMain.shutdown(); 455 response.inputStream.onClosed = () {
444 completer.complete(true); 456 httpClient.shutdown();
457 testServerMain.shutdown();
458 completer.complete(true);
459 };
445 }; 460 };
446 }); 461 });
447 testServerMain.start(); 462 testServerMain.start();
448 return completer.future; 463 return completer.future;
449 } 464 }
450 465
451 void main() { 466 void main() {
452 print('testHost()'); 467 print('testHost()');
453 testHost().chain((_) { 468 testHost().chain((_) {
454 print('testExpires()'); 469 print('testExpires()');
455 return testExpires().chain((_) { 470 return testExpires().chain((_) {
456 print('testContentType()'); 471 print('testContentType()');
457 return testContentType().chain((_) { 472 return testContentType().chain((_) {
458 print('testCookies()'); 473 print('testCookies()');
459 return testCookies().chain((_) { 474 return testCookies().chain((_) {
460 print('testFlush()'); 475 print('testFlush()');
461 return testFlush(); 476 return testFlush();
462 }); 477 });
463 }); 478 });
464 }); 479 });
465 }).then((_) { 480 }).then((_) {
466 print('done'); 481 print('done');
467 }); 482 });
468 } 483 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698