| OLD | NEW |
| 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"; | |
| 11 import 'dart:async'; | 10 import 'dart:async'; |
| 12 import 'dart:io'; | 11 import 'dart:io'; |
| 13 import 'dart:isolate'; | 12 |
| 13 import "package:async_helper/async_helper.dart"; |
| 14 import "package:expect/expect.dart"; |
| 14 | 15 |
| 15 void testGetEmptyRequest() { | 16 void testGetEmptyRequest() { |
| 16 HttpServer.bind("127.0.0.1", 0).then((server) { | 17 HttpServer.bind("127.0.0.1", 0).then((server) { |
| 17 server.listen((request) { | 18 server.listen((request) { |
| 18 request.pipe(request.response); | 19 request.pipe(request.response); |
| 19 }); | 20 }); |
| 20 | 21 |
| 21 var client = new HttpClient(); | 22 var client = new HttpClient(); |
| 22 client.get("127.0.0.1", server.port, "/") | 23 client.get("127.0.0.1", server.port, "/") |
| 23 .then((request) => request.close()) | 24 .then((request) => request.close()) |
| (...skipping 22 matching lines...) Expand all Loading... |
| 46 (data) => count += data.length, | 47 (data) => count += data.length, |
| 47 onDone: () { | 48 onDone: () { |
| 48 server.close(); | 49 server.close(); |
| 49 Expect.equals(data.length, count); | 50 Expect.equals(data.length, count); |
| 50 }); | 51 }); |
| 51 }); | 52 }); |
| 52 }); | 53 }); |
| 53 } | 54 } |
| 54 | 55 |
| 55 void testGetInvalidHost() { | 56 void testGetInvalidHost() { |
| 56 var port = new ReceivePort(); | 57 asyncStart(); |
| 57 var client = new HttpClient(); | 58 var client = new HttpClient(); |
| 58 client.get("__SOMETHING_INVALID__", 8888, "/") | 59 client.get("__SOMETHING_INVALID__", 8888, "/") |
| 59 .catchError((error) { | 60 .catchError((error) { |
| 60 port.close(); | |
| 61 client.close(); | 61 client.close(); |
| 62 asyncEnd(); |
| 62 }); | 63 }); |
| 63 } | 64 } |
| 64 | 65 |
| 65 void testGetServerClose() { | 66 void testGetServerClose() { |
| 67 asyncStart(); |
| 66 HttpServer.bind("127.0.0.1", 0).then((server) { | 68 HttpServer.bind("127.0.0.1", 0).then((server) { |
| 67 server.listen((request) { | 69 server.listen((request) { |
| 68 server.close(); | 70 server.close(); |
| 69 }); | 71 }); |
| 70 | 72 |
| 71 var port = new ReceivePort(); | |
| 72 var client = new HttpClient(); | 73 var client = new HttpClient(); |
| 73 client.get("127.0.0.1", server.port, "/") | 74 client.get("127.0.0.1", server.port, "/") |
| 74 .then((request) => request.close()) | 75 .then((request) => request.close()) |
| 75 .then((response) { | 76 .then((response) { |
| 76 Expect.fail("Request not expected"); | 77 Expect.fail("Request not expected"); |
| 77 }) | 78 }) |
| 78 .catchError((error) => port.close(), | 79 .catchError((error) => asyncEnd(), |
| 79 test: (error) => error is HttpException); | 80 test: (error) => error is HttpException); |
| 80 }); | 81 }); |
| 81 } | 82 } |
| 82 | 83 |
| 83 void testGetDataServerClose() { | 84 void testGetDataServerClose() { |
| 85 asyncStart(); |
| 84 var completer = new Completer(); | 86 var completer = new Completer(); |
| 85 HttpServer.bind("127.0.0.1", 0).then((server) { | 87 HttpServer.bind("127.0.0.1", 0).then((server) { |
| 86 server.listen((request) { | 88 server.listen((request) { |
| 87 request.response.contentLength = 100; | 89 request.response.contentLength = 100; |
| 88 request.response.write("data"); | 90 request.response.write("data"); |
| 89 request.response.write("more data"); | 91 request.response.write("more data"); |
| 90 completer.future.then((_) => server.close()); | 92 completer.future.then((_) => server.close()); |
| 91 }); | 93 }); |
| 92 | 94 |
| 93 var port = new ReceivePort(); | |
| 94 var client = new HttpClient(); | 95 var client = new HttpClient(); |
| 95 client.get("127.0.0.1", server.port, "/") | 96 client.get("127.0.0.1", server.port, "/") |
| 96 .then((request) => request.close()) | 97 .then((request) => request.close()) |
| 97 .then((response) { | 98 .then((response) { |
| 98 // Close the (incomplete) response, now we have seen the response object
. | 99 // Close the (incomplete) response, now we have seen the response object
. |
| 99 completer.complete(null); | 100 completer.complete(null); |
| 100 int errors = 0; | 101 int errors = 0; |
| 101 response.listen( | 102 response.listen( |
| 102 (data) {}, | 103 (data) {}, |
| 103 onError: (error) => errors++, | 104 onError: (error) => errors++, |
| 104 onDone: () { | 105 onDone: () { |
| 105 port.close(); | |
| 106 Expect.equals(1, errors); | 106 Expect.equals(1, errors); |
| 107 asyncEnd(); |
| 107 }); | 108 }); |
| 108 }); | 109 }); |
| 109 }); | 110 }); |
| 110 } | 111 } |
| 111 | 112 |
| 112 void testPostEmptyRequest() { | 113 void testPostEmptyRequest() { |
| 113 HttpServer.bind("127.0.0.1", 0).then((server) { | 114 HttpServer.bind("127.0.0.1", 0).then((server) { |
| 114 server.listen((request) { | 115 server.listen((request) { |
| 115 request.pipe(request.response); | 116 request.pipe(request.response); |
| 116 }); | 117 }); |
| 117 | 118 |
| 118 var client = new HttpClient(); | 119 var client = new HttpClient(); |
| 119 client.post("127.0.0.1", server.port, "/") | 120 client.post("127.0.0.1", server.port, "/") |
| 120 .then((request) => request.close()) | 121 .then((request) => request.close()) |
| 121 .then((response) { | 122 .then((response) { |
| 122 response.listen((data) {}, onDone: server.close); | 123 response.listen((data) {}, onDone: server.close); |
| 123 }); | 124 }); |
| 124 }); | 125 }); |
| 125 } | 126 } |
| 126 | 127 |
| 127 | 128 |
| 128 void main() { | 129 void main() { |
| 129 testGetEmptyRequest(); | 130 testGetEmptyRequest(); |
| 130 testGetDataRequest(); | 131 testGetDataRequest(); |
| 131 testGetInvalidHost(); | 132 testGetInvalidHost(); |
| 132 testGetServerClose(); | 133 testGetServerClose(); |
| 133 testGetDataServerClose(); | 134 testGetDataServerClose(); |
| 134 testPostEmptyRequest(); | 135 testPostEmptyRequest(); |
| 135 } | 136 } |
| OLD | NEW |