| 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 import "dart:io"; | 5 import "dart:io"; |
| 6 | 6 |
| 7 void testHEAD(int totalConnections) { | 7 void testHEAD(int totalConnections) { |
| 8 HttpServer.bind().then((server) { | 8 HttpServer.bind().then((server) { |
| 9 server.listen((request) { | 9 server.listen((request) { |
| 10 var response = request.response; | 10 var response = request.response; |
| 11 if (request.uri.path == "/test100") { | 11 if (request.uri.path == "/test100") { |
| 12 response.contentLength = 100; | 12 response.contentLength = 100; |
| 13 response.close(); | 13 response.close(); |
| 14 } else if (request.uri.path == "/test200") { | 14 } else if (request.uri.path == "/test200") { |
| 15 response.contentLength = 200; | 15 response.contentLength = 200; |
| 16 List<int> data = new List<int>.filled(200, 0); | 16 List<int> data = new List<int>.filled(200, 0); |
| 17 response.add(data); | 17 response.add(data); |
| 18 response.close(); | 18 response.close(); |
| 19 } else if (request.uri.path == "/testChunked100") { |
| 20 List<int> data = new List<int>.filled(100, 0); |
| 21 response.add(data); |
| 22 response.close(); |
| 23 } else if (request.uri.path == "/testChunked200") { |
| 24 List<int> data = new List<int>.filled(200, 0); |
| 25 response.add(data); |
| 26 response.close(); |
| 19 } else { | 27 } else { |
| 20 assert(false); | 28 assert(false); |
| 21 } | 29 } |
| 22 }); | 30 }); |
| 23 | 31 |
| 24 HttpClient client = new HttpClient(); | 32 HttpClient client = new HttpClient(); |
| 25 | 33 |
| 26 int count = 0; | 34 int count = 0; |
| 35 |
| 36 requestDone() { |
| 37 count++; |
| 38 if (count == totalConnections * 2) { |
| 39 client.close(); |
| 40 server.close(); |
| 41 } |
| 42 } |
| 43 |
| 27 for (int i = 0; i < totalConnections; i++) { | 44 for (int i = 0; i < totalConnections; i++) { |
| 28 int len = (i % 2 == 0) ? 100 : 200; | 45 int len = (i % 2 == 0) ? 100 : 200; |
| 29 client.open("HEAD", "127.0.0.1", server.port, "/test$len") | 46 client.open("HEAD", "127.0.0.1", server.port, "/test$len") |
| 30 .then((request) => request.close()) | 47 .then((request) => request.close()) |
| 31 .then((HttpClientResponse response) { | 48 .then((HttpClientResponse response) { |
| 32 Expect.equals(len, response.contentLength); | 49 Expect.equals(len, response.contentLength); |
| 33 response.listen( | 50 response.listen( |
| 34 (_) => Expect.fail("Data from HEAD request"), | 51 (_) => Expect.fail("Data from HEAD request"), |
| 35 onDone: () { | 52 onDone: requestDone); |
| 36 count++; | 53 }); |
| 37 if (count == totalConnections) { | 54 |
| 38 client.close(); | 55 client.open("HEAD", "127.0.0.1", server.port, "/testChunked$len") |
| 39 server.close(); | 56 .then((request) => request.close()) |
| 40 } | 57 .then((HttpClientResponse response) { |
| 41 }); | 58 print(response.headers); |
| 59 Expect.equals(-1, response.contentLength); |
| 60 response.listen( |
| 61 (_) => Expect.fail("Data from HEAD request"), |
| 62 onDone: requestDone); |
| 42 }); | 63 }); |
| 43 } | 64 } |
| 44 }); | 65 }); |
| 45 } | 66 } |
| 46 | 67 |
| 47 void main() { | 68 void main() { |
| 48 testHEAD(4); | 69 testHEAD(4); |
| 49 } | 70 } |
| OLD | NEW |