| Index: tests/standalone/io/http_detach_socket_test.dart
|
| diff --git a/tests/standalone/io/http_detach_socket_test.dart b/tests/standalone/io/http_detach_socket_test.dart
|
| index e5669d659b0bafb0b1e4956d517a81a2764c2eed..033a474b2a18b883edc64e48ee28318537d444e6 100644
|
| --- a/tests/standalone/io/http_detach_socket_test.dart
|
| +++ b/tests/standalone/io/http_detach_socket_test.dart
|
| @@ -8,6 +8,7 @@
|
| // VMOptions=--short_socket_read --short_socket_write
|
|
|
| import "package:expect/expect.dart";
|
| +import "package:async_helper/async_helper.dart";
|
| import "dart:io";
|
| import "dart:isolate";
|
|
|
| @@ -145,9 +146,60 @@ void testClientDetachSocket() {
|
| });
|
| }
|
|
|
| +void testUpgradedConnection() {
|
| + asyncStart();
|
| + HttpServer.bind("127.0.0.1", 0).then((server) {
|
| + server.listen((request) {
|
| + request.response.headers.set('connection', 'upgrade');
|
| + if (request.headers.value('upgrade') == 'mine') {
|
| + asyncStart();
|
| + request.response.detachSocket().then((socket) {
|
| + socket.pipe(socket).then((_) {
|
| + asyncEnd();
|
| + });
|
| + });
|
| + } else {
|
| + request.response.close();
|
| + }
|
| + });
|
| +
|
| + var client = new HttpClient();
|
| + client.userAgent = null;
|
| + client.get("127.0.0.1", server.port, "/")
|
| + .then((request) {
|
| + request.headers.set('upgrade', 'mine');
|
| + return request.close();
|
| + })
|
| + .then((response) {
|
| + client.get("127.0.0.1", server.port, "/")
|
| + .then((request) {
|
| + response.detachSocket().then((socket) {
|
| + // We are testing that we can detach the socket, even though
|
| + // we made a new connection (testing it was not reused).
|
| + request.close().then((response) {
|
| + asyncStart();
|
| + response.listen(null, onDone: () {
|
| + server.close();
|
| + asyncEnd();
|
| + });
|
| + socket.add([0]);
|
| + socket.close();
|
| + socket.fold([], (l, d) => l..addAll(d))
|
| + .then((data) {
|
| + asyncEnd();
|
| + Expect.listEquals([0], data);
|
| + });
|
| + });
|
| + });
|
| + });
|
| + });
|
| + });
|
| +}
|
| +
|
| void main() {
|
| testServerDetachSocket();
|
| testServerDetachSocketNoWriteHeaders();
|
| testBadServerDetachSocket();
|
| testClientDetachSocket();
|
| + testUpgradedConnection();
|
| }
|
|
|