| 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:isolate"; | 11 import "dart:isolate"; |
| 12 import "dart:io"; | 12 import "dart:io"; |
| 13 | 13 |
| 14 // Client makes a HTTP 1.0 request without connection keep alive. The | 14 // Client makes a HTTP 1.0 request without connection keep alive. The |
| 15 // server sets a content length but still needs to close the | 15 // server sets a content length but still needs to close the |
| 16 // connection as there is no keep alive. | 16 // connection as there is no keep alive. |
| 17 void testHttp10NoKeepAlive() { | 17 void testHttp10NoKeepAlive() { |
| 18 HttpServer.bind().then((server) { | 18 HttpServer.bind().then((server) { |
| 19 server.listen( | 19 server.listen( |
| 20 (HttpRequest request) { | 20 (HttpRequest request) { |
| 21 Expect.isNull(request.headers.value('content-length')); | 21 Expect.isNull(request.headers.value('content-length')); |
| 22 Expect.equals(-1, request.contentLength); | 22 Expect.equals(-1, request.contentLength); |
| 23 var response = request.response; | 23 var response = request.response; |
| 24 response.contentLength = 1; | 24 response.contentLength = 1; |
| 25 Expect.equals("1.0", request.protocolVersion); | 25 Expect.equals("1.0", request.protocolVersion); |
| 26 response.done | 26 response.done |
| 27 .then((_) => Expect.fail("Unexpected response completion")) | 27 .then((_) => Expect.fail("Unexpected response completion")) |
| 28 .catchError((e) => Expect.isTrue(e.error is HttpException)); | 28 .catchError((error) => Expect.isTrue(error is HttpException)); |
| 29 response.write("Z"); | 29 response.write("Z"); |
| 30 response.write("Z"); | 30 response.write("Z"); |
| 31 response.close(); | 31 response.close(); |
| 32 Expect.throws(() => response.write("x"), | 32 Expect.throws(() => response.write("x"), |
| 33 (e) => e is StateError); | 33 (e) => e is StateError); |
| 34 }, | 34 }, |
| 35 onError: (e) => Expect.fail("Unexpected error $e")); | 35 onError: (e) { |
| 36 String msg = "Unexpected error $e"; |
| 37 var trace = getAttachedStackTrace(e); |
| 38 if (trace != null) msg += "\nStackTrace: $trace"; |
| 39 Expect.fail(msg); |
| 40 }); |
| 36 | 41 |
| 37 int count = 0; | 42 int count = 0; |
| 38 makeRequest() { | 43 makeRequest() { |
| 39 Socket.connect("127.0.0.1", server.port).then((socket) { | 44 Socket.connect("127.0.0.1", server.port).then((socket) { |
| 40 socket.write("GET / HTTP/1.0\r\n\r\n"); | 45 socket.write("GET / HTTP/1.0\r\n\r\n"); |
| 41 | 46 |
| 42 List<int> response = []; | 47 List<int> response = []; |
| 43 socket.listen( | 48 socket.listen( |
| 44 response.addAll, | 49 response.addAll, |
| 45 onDone: () { | 50 onDone: () { |
| (...skipping 24 matching lines...) Expand all Loading... |
| 70 (HttpRequest request) { | 75 (HttpRequest request) { |
| 71 Expect.isNull(request.headers.value('content-length')); | 76 Expect.isNull(request.headers.value('content-length')); |
| 72 Expect.equals(-1, request.contentLength); | 77 Expect.equals(-1, request.contentLength); |
| 73 request.listen((_) {}, onDone: () { | 78 request.listen((_) {}, onDone: () { |
| 74 var response = request.response; | 79 var response = request.response; |
| 75 Expect.equals("1.0", request.protocolVersion); | 80 Expect.equals("1.0", request.protocolVersion); |
| 76 response.write("Z"); | 81 response.write("Z"); |
| 77 response.close(); | 82 response.close(); |
| 78 }); | 83 }); |
| 79 }, | 84 }, |
| 80 onError: (e) => Expect.fail("Unexpected error $e")); | 85 onError: (e) { |
| 86 String msg = "Unexpected error $e"; |
| 87 var trace = getAttachedStackTrace(e); |
| 88 if (trace != null) msg += "\nStackTrace: $trace"; |
| 89 Expect.fail(msg); |
| 90 }); |
| 81 | 91 |
| 82 int count = 0; | 92 int count = 0; |
| 83 makeRequest() { | 93 makeRequest() { |
| 84 Socket.connect("127.0.0.1", server.port).then((socket) { | 94 Socket.connect("127.0.0.1", server.port).then((socket) { |
| 85 socket.write("GET / HTTP/1.0\r\n"); | 95 socket.write("GET / HTTP/1.0\r\n"); |
| 86 socket.write("Connection: Keep-Alive\r\n\r\n"); | 96 socket.write("Connection: Keep-Alive\r\n\r\n"); |
| 87 | 97 |
| 88 List<int> response = []; | 98 List<int> response = []; |
| 89 socket.listen( | 99 socket.listen( |
| 90 response.addAll, | 100 response.addAll, |
| (...skipping 26 matching lines...) Expand all Loading... |
| 117 server.listen( | 127 server.listen( |
| 118 (HttpRequest request) { | 128 (HttpRequest request) { |
| 119 Expect.isNull(request.headers.value('content-length')); | 129 Expect.isNull(request.headers.value('content-length')); |
| 120 Expect.equals(-1, request.contentLength); | 130 Expect.equals(-1, request.contentLength); |
| 121 var response = request.response; | 131 var response = request.response; |
| 122 response.contentLength = 1; | 132 response.contentLength = 1; |
| 123 Expect.equals("1.0", request.protocolVersion); | 133 Expect.equals("1.0", request.protocolVersion); |
| 124 response.write("Z"); | 134 response.write("Z"); |
| 125 response.close(); | 135 response.close(); |
| 126 }, | 136 }, |
| 127 onError: (e) => Expect.fail("Unexpected error $e")); | 137 onError: (e) { |
| 138 String msg = "Unexpected error $e"; |
| 139 var trace = getAttachedStackTrace(e); |
| 140 if (trace != null) msg += "\nStackTrace: $trace"; |
| 141 Expect.fail(msg); |
| 142 }); |
| 128 | 143 |
| 129 Socket.connect("127.0.0.1", server.port).then((socket) { | 144 Socket.connect("127.0.0.1", server.port).then((socket) { |
| 130 void sendRequest() { | 145 void sendRequest() { |
| 131 socket.write("GET / HTTP/1.0\r\n"); | 146 socket.write("GET / HTTP/1.0\r\n"); |
| 132 socket.write("Connection: Keep-Alive\r\n\r\n"); | 147 socket.write("Connection: Keep-Alive\r\n\r\n"); |
| 133 } | 148 } |
| 134 | 149 |
| 135 List<int> response = []; | 150 List<int> response = []; |
| 136 int count = 0; | 151 int count = 0; |
| 137 socket.listen( | 152 socket.listen( |
| (...skipping 29 matching lines...) Expand all Loading... |
| 167 HttpServer.bind().then((server) { | 182 HttpServer.bind().then((server) { |
| 168 server.listen( | 183 server.listen( |
| 169 (HttpRequest request) { | 184 (HttpRequest request) { |
| 170 Expect.isNull(request.headers.value('content-length')); | 185 Expect.isNull(request.headers.value('content-length')); |
| 171 Expect.equals(-1, request.contentLength); | 186 Expect.equals(-1, request.contentLength); |
| 172 var response = request.response; | 187 var response = request.response; |
| 173 Expect.equals("1.0", request.protocolVersion); | 188 Expect.equals("1.0", request.protocolVersion); |
| 174 response.write("Z"); | 189 response.write("Z"); |
| 175 response.close(); | 190 response.close(); |
| 176 }, | 191 }, |
| 177 onError: (e) => Expect.fail("Unexpected error $e")); | 192 onError: (e) { |
| 193 String msg = "Unexpected error $e"; |
| 194 var trace = getAttachedStackTrace(e); |
| 195 if (trace != null) msg += "\nStackTrace: $trace"; |
| 196 Expect.fail(msg); |
| 197 }); |
| 178 | 198 |
| 179 int count = 0; | 199 int count = 0; |
| 180 makeRequest() { | 200 makeRequest() { |
| 181 Socket.connect("127.0.0.1", server.port).then((socket) { | 201 Socket.connect("127.0.0.1", server.port).then((socket) { |
| 182 socket.write("GET / HTTP/1.0\r\n"); | 202 socket.write("GET / HTTP/1.0\r\n"); |
| 183 socket.write("Connection: Keep-Alive\r\n\r\n"); | 203 socket.write("Connection: Keep-Alive\r\n\r\n"); |
| 184 | 204 |
| 185 List<int> response = []; | 205 List<int> response = []; |
| 186 socket.listen( | 206 socket.listen( |
| 187 response.addAll, | 207 response.addAll, |
| (...skipping 16 matching lines...) Expand all Loading... |
| 204 }); | 224 }); |
| 205 } | 225 } |
| 206 | 226 |
| 207 | 227 |
| 208 void main() { | 228 void main() { |
| 209 testHttp10NoKeepAlive(); | 229 testHttp10NoKeepAlive(); |
| 210 testHttp10ServerClose(); | 230 testHttp10ServerClose(); |
| 211 testHttp10KeepAlive(); | 231 testHttp10KeepAlive(); |
| 212 testHttp10KeepAliveServerCloses(); | 232 testHttp10KeepAliveServerCloses(); |
| 213 } | 233 } |
| OLD | NEW |