diff options
author | Yusuke Sakurai <kerokerokerop@gmail.com> | 2019-04-28 03:33:24 +0900 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2019-04-27 11:33:24 -0700 |
commit | 972ac03858cc11e8b6bb759ee69640d17235580d (patch) | |
tree | 6631a1520c9385c357984096d930ad369a7ae531 /js/net_test.ts | |
parent | 02596c08bdedebb7ffb53ead9cae2bd6bf98c238 (diff) |
recover: #1517 Kill all pending accepts when TCP listener is closed (#2224)
Diffstat (limited to 'js/net_test.ts')
-rw-r--r-- | js/net_test.ts | 92 |
1 files changed, 54 insertions, 38 deletions
diff --git a/js/net_test.ts b/js/net_test.ts index f02fa9611..cfbdac0cb 100644 --- a/js/net_test.ts +++ b/js/net_test.ts @@ -1,6 +1,22 @@ // Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. import { testPerm, assert, assertEquals } from "./test_util.ts"; +function deferred(): { + resolve: () => void; + reject: () => void; + promise: Promise<void>; +} { + let resolve: () => void; + let reject: () => void; + const promise = new Promise<void>( + (a, b): void => { + resolve = a; + reject = b; + } + ); + return { resolve, reject, promise }; +} + testPerm({ net: true }, function netListenClose(): void { const listener = Deno.listen("tcp", "127.0.0.1:4500"); listener.close(); @@ -72,24 +88,25 @@ testPerm({ net: true }, async function netDialListen(): Promise<void> { conn.close(); }); -/* TODO Fix broken test. -testPerm({ net: true }, async function netCloseReadSuccess() { +testPerm({ net: true }, async function netCloseReadSuccess(): Promise<void> { const addr = "127.0.0.1:4500"; const listener = Deno.listen("tcp", addr); const closeDeferred = deferred(); const closeReadDeferred = deferred(); - listener.accept().then(async conn => { - await closeReadDeferred.promise; - await conn.write(new Uint8Array([1, 2, 3])); - const buf = new Uint8Array(1024); - const readResult = await conn.read(buf); - assertEquals(3, readResult.nread); - assertEquals(4, buf[0]); - assertEquals(5, buf[1]); - assertEquals(6, buf[2]); - conn.close(); - closeDeferred.resolve(); - }); + listener.accept().then( + async (conn): Promise<void> => { + await closeReadDeferred.promise; + await conn.write(new Uint8Array([1, 2, 3])); + const buf = new Uint8Array(1024); + const readResult = await conn.read(buf); + assertEquals(3, readResult.nread); + assertEquals(4, buf[0]); + assertEquals(5, buf[1]); + assertEquals(6, buf[2]); + conn.close(); + closeDeferred.resolve(); + } + ); const conn = await Deno.dial("tcp", addr); conn.closeRead(); // closing read closeReadDeferred.resolve(); @@ -103,18 +120,18 @@ testPerm({ net: true }, async function netCloseReadSuccess() { listener.close(); conn.close(); }); -*/ -/* TODO Fix broken test. -testPerm({ net: true }, async function netDoubleCloseRead() { +testPerm({ net: true }, async function netDoubleCloseRead(): Promise<void> { const addr = "127.0.0.1:4500"; const listener = Deno.listen("tcp", addr); const closeDeferred = deferred(); - listener.accept().then(async conn => { - await conn.write(new Uint8Array([1, 2, 3])); - await closeDeferred.promise; - conn.close(); - }); + listener.accept().then( + async (conn): Promise<void> => { + await conn.write(new Uint8Array([1, 2, 3])); + await closeDeferred.promise; + conn.close(); + } + ); const conn = await Deno.dial("tcp", addr); conn.closeRead(); // closing read let err; @@ -131,18 +148,18 @@ testPerm({ net: true }, async function netDoubleCloseRead() { listener.close(); conn.close(); }); -*/ -/* TODO Fix broken test. -testPerm({ net: true }, async function netCloseWriteSuccess() { +testPerm({ net: true }, async function netCloseWriteSuccess(): Promise<void> { const addr = "127.0.0.1:4500"; const listener = Deno.listen("tcp", addr); const closeDeferred = deferred(); - listener.accept().then(async conn => { - await conn.write(new Uint8Array([1, 2, 3])); - await closeDeferred.promise; - conn.close(); - }); + listener.accept().then( + async (conn): Promise<void> => { + await conn.write(new Uint8Array([1, 2, 3])); + await closeDeferred.promise; + conn.close(); + } + ); const conn = await Deno.dial("tcp", addr); conn.closeWrite(); // closing write const buf = new Uint8Array(1024); @@ -166,17 +183,17 @@ testPerm({ net: true }, async function netCloseWriteSuccess() { listener.close(); conn.close(); }); -*/ -/* TODO Fix broken test. -testPerm({ net: true }, async function netDoubleCloseWrite() { +testPerm({ net: true }, async function netDoubleCloseWrite(): Promise<void> { const addr = "127.0.0.1:4500"; const listener = Deno.listen("tcp", addr); const closeDeferred = deferred(); - listener.accept().then(async conn => { - await closeDeferred.promise; - conn.close(); - }); + listener.accept().then( + async (conn): Promise<void> => { + await closeDeferred.promise; + conn.close(); + } + ); const conn = await Deno.dial("tcp", addr); conn.closeWrite(); // closing write let err; @@ -193,4 +210,3 @@ testPerm({ net: true }, async function netDoubleCloseWrite() { listener.close(); conn.close(); }); -*/ |