OLD | NEW |
1 // (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // (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"; | 10 import "package:expect/expect.dart"; |
11 import "dart:async"; | 11 import "dart:async"; |
12 import "dart:isolate"; | 12 import "dart:isolate"; |
13 import "dart:io"; | 13 import "dart:io"; |
14 | 14 |
15 // Client makes a HTTP 1.0 request without connection keep alive. The | 15 // Client makes a HTTP 1.0 request without connection keep alive. The |
16 // server sets a content length but still needs to close the | 16 // server sets a content length but still needs to close the |
17 // connection as there is no keep alive. | 17 // connection as there is no keep alive. |
18 void testHttp10NoKeepAlive() { | 18 void testHttp10NoKeepAlive() { |
19 HttpServer.bind().then((server) { | 19 HttpServer.bind("127.0.0.1", 0).then((server) { |
20 server.listen( | 20 server.listen( |
21 (HttpRequest request) { | 21 (HttpRequest request) { |
22 Expect.isNull(request.headers.value('content-length')); | 22 Expect.isNull(request.headers.value('content-length')); |
23 Expect.equals(-1, request.contentLength); | 23 Expect.equals(-1, request.contentLength); |
24 var response = request.response; | 24 var response = request.response; |
25 response.contentLength = 1; | 25 response.contentLength = 1; |
26 Expect.equals("1.0", request.protocolVersion); | 26 Expect.equals("1.0", request.protocolVersion); |
27 response.done | 27 response.done |
28 .then((_) => Expect.fail("Unexpected response completion")) | 28 .then((_) => Expect.fail("Unexpected response completion")) |
29 .catchError((error) => Expect.isTrue(error is HttpException)); | 29 .catchError((error) => Expect.isTrue(error is HttpException)); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 } | 64 } |
65 makeRequest(); | 65 makeRequest(); |
66 }); | 66 }); |
67 } | 67 } |
68 | 68 |
69 | 69 |
70 // Client makes a HTTP 1.0 request and the server does not set a | 70 // Client makes a HTTP 1.0 request and the server does not set a |
71 // content length so it has to close the connection to mark the end of | 71 // content length so it has to close the connection to mark the end of |
72 // the response. | 72 // the response. |
73 void testHttp10ServerClose() { | 73 void testHttp10ServerClose() { |
74 HttpServer.bind().then((server) { | 74 HttpServer.bind("127.0.0.1", 0).then((server) { |
75 server.listen( | 75 server.listen( |
76 (HttpRequest request) { | 76 (HttpRequest request) { |
77 Expect.isNull(request.headers.value('content-length')); | 77 Expect.isNull(request.headers.value('content-length')); |
78 Expect.equals(-1, request.contentLength); | 78 Expect.equals(-1, request.contentLength); |
79 request.listen((_) {}, onDone: () { | 79 request.listen((_) {}, onDone: () { |
80 var response = request.response; | 80 var response = request.response; |
81 Expect.equals("1.0", request.protocolVersion); | 81 Expect.equals("1.0", request.protocolVersion); |
82 response.write("Z"); | 82 response.write("Z"); |
83 response.close(); | 83 response.close(); |
84 }); | 84 }); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 } | 117 } |
118 makeRequest(); | 118 makeRequest(); |
119 }); | 119 }); |
120 } | 120 } |
121 | 121 |
122 | 122 |
123 // Client makes a HTTP 1.0 request with connection keep alive. The | 123 // Client makes a HTTP 1.0 request with connection keep alive. The |
124 // server sets a content length so the persistent connection can be | 124 // server sets a content length so the persistent connection can be |
125 // used. | 125 // used. |
126 void testHttp10KeepAlive() { | 126 void testHttp10KeepAlive() { |
127 HttpServer.bind().then((server) { | 127 HttpServer.bind("127.0.0.1", 0).then((server) { |
128 server.listen( | 128 server.listen( |
129 (HttpRequest request) { | 129 (HttpRequest request) { |
130 Expect.isNull(request.headers.value('content-length')); | 130 Expect.isNull(request.headers.value('content-length')); |
131 Expect.equals(-1, request.contentLength); | 131 Expect.equals(-1, request.contentLength); |
132 var response = request.response; | 132 var response = request.response; |
133 response.contentLength = 1; | 133 response.contentLength = 1; |
134 Expect.equals("1.0", request.protocolVersion); | 134 Expect.equals("1.0", request.protocolVersion); |
135 response.write("Z"); | 135 response.write("Z"); |
136 response.close(); | 136 response.close(); |
137 }, | 137 }, |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 sendRequest(); | 173 sendRequest(); |
174 }); | 174 }); |
175 }); | 175 }); |
176 } | 176 } |
177 | 177 |
178 | 178 |
179 // Client makes a HTTP 1.0 request with connection keep alive. The | 179 // Client makes a HTTP 1.0 request with connection keep alive. The |
180 // server does not set a content length so it cannot honor connection | 180 // server does not set a content length so it cannot honor connection |
181 // keep alive. | 181 // keep alive. |
182 void testHttp10KeepAliveServerCloses() { | 182 void testHttp10KeepAliveServerCloses() { |
183 HttpServer.bind().then((server) { | 183 HttpServer.bind("127.0.0.1", 0).then((server) { |
184 server.listen( | 184 server.listen( |
185 (HttpRequest request) { | 185 (HttpRequest request) { |
186 Expect.isNull(request.headers.value('content-length')); | 186 Expect.isNull(request.headers.value('content-length')); |
187 Expect.equals(-1, request.contentLength); | 187 Expect.equals(-1, request.contentLength); |
188 var response = request.response; | 188 var response = request.response; |
189 Expect.equals("1.0", request.protocolVersion); | 189 Expect.equals("1.0", request.protocolVersion); |
190 response.write("Z"); | 190 response.write("Z"); |
191 response.close(); | 191 response.close(); |
192 }, | 192 }, |
193 onError: (e) { | 193 onError: (e) { |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 }); | 225 }); |
226 } | 226 } |
227 | 227 |
228 | 228 |
229 void main() { | 229 void main() { |
230 testHttp10NoKeepAlive(); | 230 testHttp10NoKeepAlive(); |
231 testHttp10ServerClose(); | 231 testHttp10ServerClose(); |
232 testHttp10KeepAlive(); | 232 testHttp10KeepAlive(); |
233 testHttp10KeepAliveServerCloses(); | 233 testHttp10KeepAliveServerCloses(); |
234 } | 234 } |
OLD | NEW |