diff options
Diffstat (limited to 'cli/js')
-rw-r--r-- | cli/js/tests/net_test.ts | 65 | ||||
-rw-r--r-- | cli/js/tests/test_util.ts | 18 | ||||
-rw-r--r-- | cli/js/tests/tls_test.ts | 12 |
3 files changed, 65 insertions, 30 deletions
diff --git a/cli/js/tests/net_test.ts b/cli/js/tests/net_test.ts index f27dcdc19..f62c5c329 100644 --- a/cli/js/tests/net_test.ts +++ b/cli/js/tests/net_test.ts @@ -3,14 +3,16 @@ import { unitTest, assert, assertEquals, - createResolvable + createResolvable, + randomPort } from "./test_util.ts"; unitTest({ perms: { net: true } }, function netTcpListenClose(): void { - const listener = Deno.listen({ hostname: "127.0.0.1", port: 4500 }); + const port = randomPort(); + const listener = Deno.listen({ hostname: "127.0.0.1", port }); assertEquals(listener.addr.transport, "tcp"); assertEquals(listener.addr.hostname, "127.0.0.1"); - assertEquals(listener.addr.port, 4500); + assertEquals(listener.addr.port, port); listener.close(); }); @@ -21,14 +23,15 @@ unitTest( ignore: Deno.build.os === "win" }, function netUdpListenClose(): void { + const port = randomPort(); const socket = Deno.listen({ hostname: "127.0.0.1", - port: 4500, + port, transport: "udp" }); assertEquals(socket.addr.transport, "udp"); assertEquals(socket.addr.hostname, "127.0.0.1"); - assertEquals(socket.addr.port, 4500); + assertEquals(socket.addr.port, port); socket.close(); } ); @@ -38,7 +41,8 @@ unitTest( perms: { net: true } }, async function netTcpCloseWhileAccept(): Promise<void> { - const listener = Deno.listen({ port: 4501 }); + const port = randomPort(); + const listener = Deno.listen({ port }); const p = listener.accept(); listener.close(); let err; @@ -56,7 +60,8 @@ unitTest( unitTest( { perms: { net: true } }, async function netTcpConcurrentAccept(): Promise<void> { - const listener = Deno.listen({ port: 4502 }); + const port = randomPort(); + const listener = Deno.listen({ port }); let acceptErrCount = 0; const checkErr = (e: Error): void => { if (e.message === "Listener has been closed") { @@ -79,19 +84,20 @@ unitTest( unitTest({ perms: { net: true } }, async function netTcpDialListen(): Promise< void > { - const listener = Deno.listen({ port: 4500 }); + const port = randomPort(); + const listener = Deno.listen({ port }); listener.accept().then( async (conn): Promise<void> => { assert(conn.remoteAddr != null); assertEquals(conn.localAddr.hostname, "127.0.0.1"); - assertEquals(conn.localAddr.port, 4500); + assertEquals(conn.localAddr.port, port); await conn.write(new Uint8Array([1, 2, 3])); conn.close(); } ); - const conn = await Deno.connect({ hostname: "127.0.0.1", port: 4500 }); + const conn = await Deno.connect({ hostname: "127.0.0.1", port }); assertEquals(conn.remoteAddr.hostname, "127.0.0.1"); - assertEquals(conn.remoteAddr.port, 4500); + assertEquals(conn.remoteAddr.port, port); assert(conn.localAddr != null); const buf = new Uint8Array(1024); const readResult = await conn.read(buf); @@ -113,13 +119,15 @@ unitTest({ perms: { net: true } }, async function netTcpDialListen(): Promise< unitTest( { ignore: Deno.build.os === "win", perms: { net: true } }, async function netUdpSendReceive(): Promise<void> { - const alice = Deno.listen({ port: 4500, transport: "udp" }); - assertEquals(alice.addr.port, 4500); + const alicePort = randomPort(); + const alice = Deno.listen({ port: alicePort, transport: "udp" }); + assertEquals(alice.addr.port, alicePort); assertEquals(alice.addr.hostname, "0.0.0.0"); assertEquals(alice.addr.transport, "udp"); - const bob = Deno.listen({ port: 4501, transport: "udp" }); - assertEquals(bob.addr.port, 4501); + const bobPort = randomPort(); + const bob = Deno.listen({ port: bobPort, transport: "udp" }); + assertEquals(bob.addr.port, bobPort); assertEquals(bob.addr.hostname, "0.0.0.0"); assertEquals(bob.addr.transport, "udp"); @@ -127,7 +135,7 @@ unitTest( await alice.send(sent, bob.addr); const [recvd, remote] = await bob.receive(); - assertEquals(remote.port, 4500); + assertEquals(remote.port, alicePort); assertEquals(recvd.length, 3); assertEquals(1, recvd[0]); assertEquals(2, recvd[1]); @@ -140,7 +148,8 @@ unitTest( unitTest( { perms: { net: true } }, async function netTcpListenCloseWhileIterating(): Promise<void> { - const listener = Deno.listen({ port: 8000 }); + const port = randomPort(); + const listener = Deno.listen({ port }); const nextWhileClosing = listener[Symbol.asyncIterator]().next(); listener.close(); assertEquals(await nextWhileClosing, { value: undefined, done: true }); @@ -153,7 +162,8 @@ unitTest( unitTest( { ignore: Deno.build.os === "win", perms: { net: true } }, async function netUdpListenCloseWhileIterating(): Promise<void> { - const socket = Deno.listen({ port: 8000, transport: "udp" }); + const port = randomPort(); + const socket = Deno.listen({ port, transport: "udp" }); const nextWhileClosing = socket[Symbol.asyncIterator]().next(); socket.close(); assertEquals(await nextWhileClosing, { value: undefined, done: true }); @@ -170,7 +180,8 @@ unitTest( perms: { net: true } }, async function netListenAsyncIterator(): Promise<void> { - const addr = { hostname: "127.0.0.1", port: 4500 }; + const port = randomPort(); + const addr = { hostname: "127.0.0.1", port }; const listener = Deno.listen(addr); const runAsyncIterator = async (): Promise<void> => { for await (const conn of listener) { @@ -205,7 +216,8 @@ unitTest( perms: { net: true } }, async function netCloseReadSuccess() { - const addr = { hostname: "127.0.0.1", port: 4500 }; + const port = randomPort(); + const addr = { hostname: "127.0.0.1", port }; const listener = Deno.listen(addr); const closeDeferred = createResolvable(); const closeReadDeferred = createResolvable(); @@ -242,7 +254,8 @@ unitTest( perms: { net: true } }, async function netDoubleCloseRead() { - const addr = { hostname: "127.0.0.1", port: 4500 }; + const port = randomPort(); + const addr = { hostname: "127.0.0.1", port }; const listener = Deno.listen(addr); const closeDeferred = createResolvable(); listener.accept().then(async conn => { @@ -274,7 +287,8 @@ unitTest( perms: { net: true } }, async function netCloseWriteSuccess() { - const addr = { hostname: "127.0.0.1", port: 4500 }; + const port = randomPort(); + const addr = { hostname: "127.0.0.1", port }; const listener = Deno.listen(addr); const closeDeferred = createResolvable(); listener.accept().then(async conn => { @@ -313,7 +327,8 @@ unitTest( perms: { net: true } }, async function netDoubleCloseWrite() { - const addr = { hostname: "127.0.0.1", port: 4500 }; + const port = randomPort(); + const addr = { hostname: "127.0.0.1", port }; const listener = Deno.listen(addr); const closeDeferred = createResolvable(); listener.accept().then(async conn => { @@ -365,8 +380,8 @@ unitTest( resolvable.resolve(); } - - const addr = { hostname: "127.0.0.1", port: 4500 }; + const port = randomPort(); + const addr = { hostname: "127.0.0.1", port }; const listener = Deno.listen(addr); iteratorReq(listener); const conn = await Deno.connect(addr); diff --git a/cli/js/tests/test_util.ts b/cli/js/tests/test_util.ts index 980d32bac..347a2204e 100644 --- a/cli/js/tests/test_util.ts +++ b/cli/js/tests/test_util.ts @@ -359,3 +359,21 @@ unitTest( }); } ); +function* portIterator(): IterableIterator<number> { + // use 49152 ~ 55000 for js/cli (rest are for std) + let i = 49152; + while (true) { + yield i; + i++; + if (i > 55000) { + i = 55000; + } + } +} +const it = portIterator(); +/** Obtain (maybe) safe port number for net tests */ +export function randomPort(): number { + const { value } = it.next(); + assert(value != null); + return value; +} diff --git a/cli/js/tests/tls_test.ts b/cli/js/tests/tls_test.ts index 20dd62f9b..2e6e5afc9 100644 --- a/cli/js/tests/tls_test.ts +++ b/cli/js/tests/tls_test.ts @@ -2,6 +2,7 @@ import { assert, assertEquals, + randomPort, createResolvable, unitTest } from "./test_util.ts"; @@ -43,7 +44,7 @@ unitTest( let err; const options = { hostname: "localhost", - port: 4500, + port: randomPort(), certFile: "cli/tests/tls/localhost.crt", keyFile: "cli/tests/tls/localhost.key" }; @@ -72,10 +73,11 @@ unitTest( unitTest({ perms: { net: true } }, function listenTLSNoReadPerm(): void { let err; + const port = randomPort(); try { Deno.listenTLS({ hostname: "localhost", - port: 4500, + port, certFile: "cli/tests/tls/localhost.crt", keyFile: "cli/tests/tls/localhost.key" }); @@ -94,7 +96,7 @@ unitTest( let err; const options = { hostname: "localhost", - port: 4500, + port: randomPort(), certFile: "cli/tests/tls/localhost.crt", keyFile: "cli/tests/tls/localhost.key" }; @@ -123,7 +125,7 @@ unitTest( let err; const options = { hostname: "localhost", - port: 4500, + port: randomPort(), certFile: "cli/tests/tls/localhost.crt", keyFile: "cli/tests/tls/localhost.key" }; @@ -151,7 +153,7 @@ unitTest( async function dialAndListenTLS(): Promise<void> { const resolvable = createResolvable(); const hostname = "localhost"; - const port = 4500; + const port = randomPort(); const listener = Deno.listenTLS({ hostname, |