Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 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 | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 // | |
| 5 | |
| 6 #import("dart:isolate"); | |
| 7 #import("dart:io"); | |
| 8 | |
| 9 void setConnectionHeaders(HttpHeaders headers) { | |
| 10 headers.add(HttpHeaders.CONNECTION, "my-connection-header1"); | |
| 11 headers.add("My-Connection-Header1", "some-value1"); | |
| 12 headers.add(HttpHeaders.CONNECTION, "my-connection-header2"); | |
| 13 headers.add("My-Connection-Header2", "some-value2"); | |
| 14 } | |
| 15 | |
| 16 void checkExpectedConnectionHeaders(HttpHeaders headers, | |
| 17 bool persistentConnection) { | |
| 18 Expect.equals("some-value1", headers.value("My-Connection-Header1")); | |
| 19 Expect.equals("some-value2", headers.value("My-Connection-Header2")); | |
| 20 headers[HttpHeaders.CONNECTION].some( | |
|
Anders Johnsen
2012/05/02 13:31:48
I'm not sure what's going on here. headers' operat
Søren Gjesse
2012/05/03 10:30:13
The Expect.isTrue was missing - thanks for spottin
| |
| 21 (value) => value.toLowerCase() == "my-connection-header1"); | |
| 22 headers[HttpHeaders.CONNECTION].some( | |
| 23 (value) => value.toLowerCase() == "my-connection-header2"); | |
| 24 if (persistentConnection) { | |
| 25 Expect.equals(2, headers[HttpHeaders.CONNECTION].length); | |
| 26 } else { | |
| 27 Expect.equals(3, headers[HttpHeaders.CONNECTION].length); | |
| 28 headers[HttpHeaders.CONNECTION].some( | |
| 29 (value) => value.toLowerCase() == "close"); | |
| 30 } | |
| 31 } | |
| 32 | |
| 33 void test(int totalConnections, bool clientPersistentConnection) { | |
| 34 HttpServer server = new HttpServer(); | |
| 35 server.onError = (e) => Expect.fail("Unexpected error $e"); | |
| 36 server.listen("127.0.0.1", 0, totalConnections); | |
| 37 server.defaultRequestHandler = (HttpRequest request, HttpResponse response) { | |
| 38 // Check expected request. | |
| 39 Expect.equals(clientPersistentConnection, request.persistentConnection); | |
| 40 Expect.equals(clientPersistentConnection, response.persistentConnection); | |
| 41 checkExpectedConnectionHeaders(request.headers, | |
| 42 request.persistentConnection); | |
| 43 | |
| 44 // Generate response. If the client signaled non-persistent | |
| 45 // connection the server should not need to set it. | |
| 46 if (request.persistentConnection) { | |
| 47 response.persistentConnection = false; | |
| 48 } | |
| 49 setConnectionHeaders(response.headers); | |
| 50 response.outputStream.close(); | |
| 51 }; | |
| 52 | |
| 53 int count = 0; | |
| 54 HttpClient client = new HttpClient(); | |
| 55 for (int i = 0; i < totalConnections; i++) { | |
| 56 HttpClientConnection conn = client.get("127.0.0.1", server.port, "/"); | |
| 57 conn.onError = (e) => Expect.fail("Unexpected error $e"); | |
| 58 conn.onRequest = (HttpClientRequest request) { | |
| 59 setConnectionHeaders(request.headers); | |
| 60 request.persistentConnection = clientPersistentConnection; | |
| 61 request.outputStream.close(); | |
| 62 }; | |
| 63 conn.onResponse = (HttpClientResponse response) { | |
| 64 Expect.isFalse(response.persistentConnection); | |
| 65 checkExpectedConnectionHeaders(response.headers, | |
| 66 response.persistentConnection); | |
| 67 count++; | |
| 68 if (count == totalConnections) { | |
| 69 client.shutdown(); | |
| 70 server.close(); | |
| 71 } | |
| 72 }; | |
| 73 } | |
| 74 } | |
| 75 | |
| 76 | |
| 77 void main() { | |
| 78 test(2, false); | |
| 79 test(2, true); | |
| 80 } | |
| OLD | NEW |