Chromium Code Reviews| Index: tests/standalone/io/http_shutdown_test.dart |
| diff --git a/tests/standalone/io/http_shutdown_test.dart b/tests/standalone/io/http_shutdown_test.dart |
| index 0a65ea80f46fed9050d5f09df37433c3406d1124..76b2715a67f44c39fe7666d9cddc731a809d5990 100644 |
| --- a/tests/standalone/io/http_shutdown_test.dart |
| +++ b/tests/standalone/io/http_shutdown_test.dart |
| @@ -95,6 +95,66 @@ void test3(int totalConnections) { |
| } |
| +void test4() { |
| + var server = new HttpServer(); |
| + server.listen("127.0.0.1", 0); |
| + server.defaultRequestHandler = (var request, var response) { |
| + request.inputStream.onClosed = () { |
| + new Timer.repeating(100, (timer) { |
| + if (server.connectionsInfo().total == 0) { |
| + server.close(); |
| + timer.cancel(); |
| + } |
| + }); |
| + response.outputStream.close(); |
| + }; |
| + }; |
| + |
| + var client= new HttpClient(); |
| + var conn = client.get("127.0.0.1", server.port, "/"); |
| + conn.onResponse = (var response) { |
| + response.inputStream.onClosed = () { |
| + client.shutdown(); |
| + }; |
| + }; |
| +} |
| + |
| + |
| +void test5(int totalConnections) { |
| + var server = new HttpServer(); |
| + server.listen("127.0.0.1", 0, backlog: totalConnections); |
| + server.defaultRequestHandler = (var request, var response) { |
| + request.inputStream.onClosed = () { |
| + response.outputStream.close(); |
| + }; |
| + }; |
| + server.onError = (e) => { }; |
| + |
| + // Create a number of client requests and keep then active. Then |
| + // close the client and wait for the server to loose all active |
|
Mads Ager (google)
2012/11/19 10:56:57
loose -> lose
|
| + // connections. |
| + var client= new HttpClient(); |
| + for (int i = 0; i < totalConnections; i++) { |
| + var conn = client.post("127.0.0.1", server.port, "/"); |
| + conn.onRequest = (req) { req.outputStream.write([0]); }; |
| + } |
| + bool clientClosed = false; |
| + new Timer.repeating(100, (timer) { |
| + if (!clientClosed) { |
| + if (server.connectionsInfo().total == totalConnections) { |
| + clientClosed = true; |
| + client.shutdown(); |
| + } |
| + } else { |
| + if (server.connectionsInfo().total == 0) { |
| + server.close(); |
| + timer.cancel(); |
| + } |
| + } |
| + }); |
| +} |
| + |
| + |
| void main() { |
| test1(1); |
| test1(10); |
| @@ -102,4 +162,7 @@ void main() { |
| test2(10); |
| test3(1); |
| test3(10); |
| + test4(); |
| + test5(1); |
| + test5(10); |
| } |