| 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 // 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:io'; | 12 import 'dart:io'; |
| 13 import 'dart:isolate'; | 13 import 'dart:isolate'; |
| 14 | 14 |
| 15 void testGetEmptyRequest() { | 15 void testGetEmptyRequest() { |
| 16 HttpServer.bind().then((server) { | 16 HttpServer.bind("127.0.0.1", 0).then((server) { |
| 17 server.listen((request) { | 17 server.listen((request) { |
| 18 request.pipe(request.response); | 18 request.pipe(request.response); |
| 19 }); | 19 }); |
| 20 | 20 |
| 21 var client = new HttpClient(); | 21 var client = new HttpClient(); |
| 22 client.get("127.0.0.1", server.port, "/") | 22 client.get("127.0.0.1", server.port, "/") |
| 23 .then((request) => request.close()) | 23 .then((request) => request.close()) |
| 24 .then((response) { | 24 .then((response) { |
| 25 response.listen( | 25 response.listen( |
| 26 (data) {}, | 26 (data) {}, |
| 27 onDone: server.close); | 27 onDone: server.close); |
| 28 }); | 28 }); |
| 29 }); | 29 }); |
| 30 } | 30 } |
| 31 | 31 |
| 32 void testGetDataRequest() { | 32 void testGetDataRequest() { |
| 33 HttpServer.bind().then((server) { | 33 HttpServer.bind("127.0.0.1", 0).then((server) { |
| 34 var data = "lalala".codeUnits; | 34 var data = "lalala".codeUnits; |
| 35 server.listen((request) { | 35 server.listen((request) { |
| 36 request.response.add(data); | 36 request.response.add(data); |
| 37 request.pipe(request.response); | 37 request.pipe(request.response); |
| 38 }); | 38 }); |
| 39 | 39 |
| 40 var client = new HttpClient(); | 40 var client = new HttpClient(); |
| 41 client.get("127.0.0.1", server.port, "/") | 41 client.get("127.0.0.1", server.port, "/") |
| 42 .then((request) => request.close()) | 42 .then((request) => request.close()) |
| 43 .then((response) { | 43 .then((response) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 56 var port = new ReceivePort(); | 56 var port = new ReceivePort(); |
| 57 var client = new HttpClient(); | 57 var client = new HttpClient(); |
| 58 client.get("__SOMETHING_INVALID__", 8888, "/") | 58 client.get("__SOMETHING_INVALID__", 8888, "/") |
| 59 .catchError((error) { | 59 .catchError((error) { |
| 60 port.close(); | 60 port.close(); |
| 61 client.close(); | 61 client.close(); |
| 62 }); | 62 }); |
| 63 } | 63 } |
| 64 | 64 |
| 65 void testGetServerClose() { | 65 void testGetServerClose() { |
| 66 HttpServer.bind().then((server) { | 66 HttpServer.bind("127.0.0.1", 0).then((server) { |
| 67 server.listen((request) { | 67 server.listen((request) { |
| 68 server.close(); | 68 server.close(); |
| 69 }); | 69 }); |
| 70 | 70 |
| 71 var port = new ReceivePort(); | 71 var port = new ReceivePort(); |
| 72 var client = new HttpClient(); | 72 var client = new HttpClient(); |
| 73 client.get("127.0.0.1", server.port, "/") | 73 client.get("127.0.0.1", server.port, "/") |
| 74 .then((request) => request.close()) | 74 .then((request) => request.close()) |
| 75 .then((response) { | 75 .then((response) { |
| 76 Expect.fail("Request not expected"); | 76 Expect.fail("Request not expected"); |
| 77 }) | 77 }) |
| 78 .catchError((error) => port.close(), | 78 .catchError((error) => port.close(), |
| 79 test: (error) => error is HttpParserException); | 79 test: (error) => error is HttpParserException); |
| 80 }); | 80 }); |
| 81 } | 81 } |
| 82 | 82 |
| 83 void testGetDataServerClose() { | 83 void testGetDataServerClose() { |
| 84 var completer = new Completer(); | 84 var completer = new Completer(); |
| 85 HttpServer.bind().then((server) { | 85 HttpServer.bind("127.0.0.1", 0).then((server) { |
| 86 server.listen((request) { | 86 server.listen((request) { |
| 87 request.response.contentLength = 100; | 87 request.response.contentLength = 100; |
| 88 request.response.write("data"); | 88 request.response.write("data"); |
| 89 request.response.write("more data"); | 89 request.response.write("more data"); |
| 90 completer.future.then((_) => server.close()); | 90 completer.future.then((_) => server.close()); |
| 91 }); | 91 }); |
| 92 | 92 |
| 93 var port = new ReceivePort(); | 93 var port = new ReceivePort(); |
| 94 var client = new HttpClient(); | 94 var client = new HttpClient(); |
| 95 client.get("127.0.0.1", server.port, "/") | 95 client.get("127.0.0.1", server.port, "/") |
| 96 .then((request) => request.close()) | 96 .then((request) => request.close()) |
| 97 .then((response) { | 97 .then((response) { |
| 98 // Close the (incomplete) response, now we have seen the response object
. | 98 // Close the (incomplete) response, now we have seen the response object
. |
| 99 completer.complete(null); | 99 completer.complete(null); |
| 100 int errors = 0; | 100 int errors = 0; |
| 101 response.listen( | 101 response.listen( |
| 102 (data) {}, | 102 (data) {}, |
| 103 onError: (error) => errors++, | 103 onError: (error) => errors++, |
| 104 onDone: () { | 104 onDone: () { |
| 105 port.close(); | 105 port.close(); |
| 106 Expect.equals(1, errors); | 106 Expect.equals(1, errors); |
| 107 }); | 107 }); |
| 108 }); | 108 }); |
| 109 }); | 109 }); |
| 110 } | 110 } |
| 111 | 111 |
| 112 void testPostEmptyRequest() { | 112 void testPostEmptyRequest() { |
| 113 HttpServer.bind().then((server) { | 113 HttpServer.bind("127.0.0.1", 0).then((server) { |
| 114 server.listen((request) { | 114 server.listen((request) { |
| 115 request.pipe(request.response); | 115 request.pipe(request.response); |
| 116 }); | 116 }); |
| 117 | 117 |
| 118 var client = new HttpClient(); | 118 var client = new HttpClient(); |
| 119 client.post("127.0.0.1", server.port, "/") | 119 client.post("127.0.0.1", server.port, "/") |
| 120 .then((request) => request.close()) | 120 .then((request) => request.close()) |
| 121 .then((response) { | 121 .then((response) { |
| 122 response.listen((data) {}, onDone: server.close); | 122 response.listen((data) {}, onDone: server.close); |
| 123 }); | 123 }); |
| 124 }); | 124 }); |
| 125 } | 125 } |
| 126 | 126 |
| 127 | 127 |
| 128 void main() { | 128 void main() { |
| 129 testGetEmptyRequest(); | 129 testGetEmptyRequest(); |
| 130 testGetDataRequest(); | 130 testGetDataRequest(); |
| 131 testGetInvalidHost(); | 131 testGetInvalidHost(); |
| 132 testGetServerClose(); | 132 testGetServerClose(); |
| 133 testGetDataServerClose(); | 133 testGetDataServerClose(); |
| 134 testPostEmptyRequest(); | 134 testPostEmptyRequest(); |
| 135 } | 135 } |
| OLD | NEW |