| Index: tests/standalone/io/http_close_test.dart
|
| diff --git a/tests/standalone/io/http_close_test.dart b/tests/standalone/io/http_close_test.dart
|
| index f882856df18134fc6016b0d811ef585c0a6ecc5b..de467d5ae46eb727b91b383c00bf84b14cb1d50a 100644
|
| --- a/tests/standalone/io/http_close_test.dart
|
| +++ b/tests/standalone/io/http_close_test.dart
|
| @@ -109,9 +109,52 @@ void testClientCloseDelayed(int connections) {
|
| }
|
|
|
|
|
| +void testClientCloseSendingResponse(int connections) {
|
| + HttpServer.bind().then((server) {
|
| + int closed = 0;
|
| + void check() {
|
| + closed++;
|
| + // Wait for both server and client to see the connections as closed.
|
| + if (closed == connections * 2) {
|
| + Expect.equals(0, server.connectionsInfo().active);
|
| + Expect.equals(server.connectionsInfo().total,
|
| + server.connectionsInfo().idle);
|
| + server.close();
|
| + }
|
| + }
|
| + server.listen((request) {
|
| + var timer = new Timer.repeating(const Duration(milliseconds: 20), (_) {
|
| + request.response.add(new Uint8List(16 * 1024));
|
| + });
|
| + request.response.done
|
| + .catchError((_) {})
|
| + .whenComplete(() {
|
| + check();
|
| + timer.cancel();
|
| + });
|
| + });
|
| + var client = new HttpClient();
|
| + for (int i = 0; i < connections; i++) {
|
| + client.get("localhost", server.port, "/")
|
| + .then((request) => request.close())
|
| + .then((response) {
|
| + // Ensure we don't accept the response until we have send the entire
|
| + // request.
|
| + var subscription = response.listen((_) {});
|
| + new Timer(const Duration(milliseconds: 200), () {
|
| + subscription.cancel();
|
| + check();
|
| + });
|
| + });
|
| + }
|
| + });
|
| +}
|
| +
|
| +
|
| void main() {
|
| testClientAndServerCloseNoListen(10);
|
| testClientCloseServerListen(10);
|
| testClientCloseDelayed(10);
|
| + testClientCloseSendingResponse(10);
|
| }
|
|
|
|
|