summaryrefslogtreecommitdiff
path: root/cli/js/tests/net_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/js/tests/net_test.ts')
-rw-r--r--cli/js/tests/net_test.ts295
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();
-});
-*/
+);