diff options
Diffstat (limited to 'cli/js/tests/net_test.ts')
-rw-r--r-- | cli/js/tests/net_test.ts | 295 |
1 files changed, 163 insertions, 132 deletions
diff --git a/cli/js/tests/net_test.ts b/cli/js/tests/net_test.ts index 46543acdf..1a58c3531 100644 --- a/cli/js/tests/net_test.ts +++ b/cli/js/tests/net_test.ts @@ -1,5 +1,10 @@ // Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. -import { unitTest, assert, assertEquals } from "./test_util.ts"; +import { + unitTest, + assert, + assertEquals, + createResolvable +} from "./test_util.ts"; unitTest({ perms: { net: true } }, function netTcpListenClose(): void { const listener = Deno.listen({ hostname: "127.0.0.1", port: 4500 }); @@ -158,150 +163,176 @@ unitTest( } ); -/* TODO(ry) Re-enable this test. -unitTest({ perms: { net: true } }, async function netListenAsyncIterator(): Promise<void> { - const listener = Deno.listen(":4500"); - const runAsyncIterator = async (): Promise<void> => { - for await (let conn of listener) { - await conn.write(new Uint8Array([1, 2, 3])); - conn.close(); - } - }; - runAsyncIterator(); - const conn = await Deno.connect("127.0.0.1:4500"); - const buf = new Uint8Array(1024); - const readResult = await conn.read(buf); - assertEquals(3, readResult); - assertEquals(1, buf[0]); - assertEquals(2, buf[1]); - assertEquals(3, buf[2]); - assert(conn.rid > 0); +unitTest( + { + // FIXME(bartlomieju) + skip: true, + perms: { net: true } + }, + async function netListenAsyncIterator(): Promise<void> { + const addr = { hostname: "127.0.0.1", port: 4500 }; + const listener = Deno.listen(addr); + const runAsyncIterator = async (): Promise<void> => { + for await (const conn of listener) { + await conn.write(new Uint8Array([1, 2, 3])); + conn.close(); + } + }; + runAsyncIterator(); + const conn = await Deno.connect(addr); + const buf = new Uint8Array(1024); + const readResult = await conn.read(buf); + assertEquals(3, readResult); + assertEquals(1, buf[0]); + assertEquals(2, buf[1]); + assertEquals(3, buf[2]); + assert(conn.rid > 0); - assert(readResult !== Deno.EOF); + assert(readResult !== Deno.EOF); - const readResult2 = await conn.read(buf); - assertEquals(Deno.EOF, readResult2); + const readResult2 = await conn.read(buf); + assertEquals(Deno.EOF, readResult2); - listener.close(); - conn.close(); -}); - */ + listener.close(); + conn.close(); + } +); -/* TODO Fix broken test. -unitTest({ perms: { net: true } }, async function netCloseReadSuccess() { - const addr = "127.0.0.1:4500"; - const listener = Deno.listen(addr); - const closeDeferred = deferred(); - const closeReadDeferred = deferred(); - listener.accept().then(async conn => { - await closeReadDeferred.promise; - await conn.write(new Uint8Array([1, 2, 3])); +unitTest( + { + // FIXME(bartlomieju) + skip: true, + perms: { net: true } + }, + async function netCloseReadSuccess() { + const addr = { hostname: "127.0.0.1", port: 4500 }; + const listener = Deno.listen(addr); + const closeDeferred = createResolvable(); + const closeReadDeferred = createResolvable(); + listener.accept().then(async conn => { + await closeReadDeferred; + await conn.write(new Uint8Array([1, 2, 3])); + const buf = new Uint8Array(1024); + const readResult = await conn.read(buf); + assertEquals(3, readResult); + assertEquals(4, buf[0]); + assertEquals(5, buf[1]); + assertEquals(6, buf[2]); + conn.close(); + closeDeferred.resolve(); + }); + const conn = await Deno.connect(addr); + conn.closeRead(); // closing read + closeReadDeferred.resolve(); const buf = new Uint8Array(1024); const readResult = await conn.read(buf); - assertEquals(3, readResult); - assertEquals(4, buf[0]); - assertEquals(5, buf[1]); - assertEquals(6, buf[2]); + assertEquals(Deno.EOF, readResult); // with immediate EOF + // Ensure closeRead does not impact write + await conn.write(new Uint8Array([4, 5, 6])); + await closeDeferred; + listener.close(); conn.close(); - closeDeferred.resolve(); - }); - const conn = await Deno.connect(addr); - conn.closeRead(); // closing read - closeReadDeferred.resolve(); - const buf = new Uint8Array(1024); - const readResult = await conn.read(buf); - assertEquals(Deno.EOF, readResult); // with immediate EOF - // Ensure closeRead does not impact write - await conn.write(new Uint8Array([4, 5, 6])); - await closeDeferred.promise; - listener.close(); - conn.close(); -}); -*/ + } +); -/* TODO Fix broken test. -unitTest({ perms: { net: true } }, async function netDoubleCloseRead() { - const addr = "127.0.0.1:4500"; - const listener = Deno.listen(addr); - const closeDeferred = deferred(); - listener.accept().then(async conn => { - await conn.write(new Uint8Array([1, 2, 3])); - await closeDeferred.promise; +unitTest( + { + // FIXME(bartlomieju) + skip: true, + perms: { net: true } + }, + async function netDoubleCloseRead() { + const addr = { hostname: "127.0.0.1", port: 4500 }; + const listener = Deno.listen(addr); + const closeDeferred = createResolvable(); + listener.accept().then(async conn => { + await conn.write(new Uint8Array([1, 2, 3])); + await closeDeferred; + conn.close(); + }); + const conn = await Deno.connect(addr); + conn.closeRead(); // closing read + let err; + try { + // Duplicated close should throw error + conn.closeRead(); + } catch (e) { + err = e; + } + assert(!!err); + assert(err instanceof Deno.errors.NotConnected); + closeDeferred.resolve(); + listener.close(); conn.close(); - }); - const conn = await Deno.connect(addr); - conn.closeRead(); // closing read - let err; - try { - // Duplicated close should throw error - conn.closeRead(); - } catch (e) { - err = e; } - assert(!!err); - assert(err instanceof Deno.errors.NotConnected); - closeDeferred.resolve(); - listener.close(); - conn.close(); -}); -*/ +); -/* TODO Fix broken test. -unitTest({ perms: { net: true } }, async function netCloseWriteSuccess() { - const addr = "127.0.0.1:4500"; - const listener = Deno.listen(addr); - const closeDeferred = deferred(); - listener.accept().then(async conn => { - await conn.write(new Uint8Array([1, 2, 3])); - await closeDeferred.promise; +unitTest( + { + // FIXME(bartlomieju) + skip: true, + perms: { net: true } + }, + async function netCloseWriteSuccess() { + const addr = { hostname: "127.0.0.1", port: 4500 }; + const listener = Deno.listen(addr); + const closeDeferred = createResolvable(); + listener.accept().then(async conn => { + await conn.write(new Uint8Array([1, 2, 3])); + await closeDeferred; + conn.close(); + }); + const conn = await Deno.connect(addr); + conn.closeWrite(); // closing write + const buf = new Uint8Array(1024); + // Check read not impacted + const readResult = await conn.read(buf); + assertEquals(3, readResult); + assertEquals(1, buf[0]); + assertEquals(2, buf[1]); + assertEquals(3, buf[2]); + // Check write should be closed + let err; + try { + await conn.write(new Uint8Array([1, 2, 3])); + } catch (e) { + err = e; + } + assert(!!err); + assert(err instanceof Deno.errors.BrokenPipe); + closeDeferred.resolve(); + listener.close(); conn.close(); - }); - const conn = await Deno.connect(addr); - conn.closeWrite(); // closing write - const buf = new Uint8Array(1024); - // Check read not impacted - const readResult = await conn.read(buf); - assertEquals(3, readResult); - assertEquals(1, buf[0]); - assertEquals(2, buf[1]); - assertEquals(3, buf[2]); - // Check write should be closed - let err; - try { - await conn.write(new Uint8Array([1, 2, 3])); - } catch (e) { - err = e; } - assert(!!err); - assert(err instanceof Deno.errors.BrokenPipe); - closeDeferred.resolve(); - listener.close(); - conn.close(); -}); -*/ +); -/* TODO Fix broken test. -unitTest({ perms: { net: true } }, async function netDoubleCloseWrite() { - const addr = "127.0.0.1:4500"; - const listener = Deno.listen(addr); - const closeDeferred = deferred(); - listener.accept().then(async conn => { - await closeDeferred.promise; +unitTest( + { + // FIXME(bartlomieju) + skip: true, + perms: { net: true } + }, + async function netDoubleCloseWrite() { + const addr = { hostname: "127.0.0.1", port: 4500 }; + const listener = Deno.listen(addr); + const closeDeferred = createResolvable(); + listener.accept().then(async conn => { + await closeDeferred; + conn.close(); + }); + const conn = await Deno.connect(addr); + conn.closeWrite(); // closing write + let err; + try { + // Duplicated close should throw error + conn.closeWrite(); + } catch (e) { + err = e; + } + assert(!!err); + assert(err instanceof Deno.errors.NotConnected); + closeDeferred.resolve(); + listener.close(); conn.close(); - }); - const conn = await Deno.connect(addr); - conn.closeWrite(); // closing write - let err; - try { - // Duplicated close should throw error - conn.closeWrite(); - } catch (e) { - err = e; } - assert(!!err); - assert(err instanceof Deno.errors.NotConnected); - closeDeferred.resolve(); - listener.close(); - conn.close(); -}); -*/ +); |