diff options
Diffstat (limited to 'cli')
-rw-r--r-- | cli/tests/unit/net_test.ts | 60 |
1 files changed, 55 insertions, 5 deletions
diff --git a/cli/tests/unit/net_test.ts b/cli/tests/unit/net_test.ts index abbb23b33..62b00e43c 100644 --- a/cli/tests/unit/net_test.ts +++ b/cli/tests/unit/net_test.ts @@ -21,8 +21,6 @@ unitTest({ perms: { net: true } }, function netTcpListenClose(): void { unitTest( { perms: { net: true }, - // TODO: - ignore: Deno.build.os === "windows", }, function netUdpListenClose(): void { const socket = Deno.listenDatagram({ @@ -257,7 +255,7 @@ unitTest( ); unitTest( - { ignore: Deno.build.os === "windows", perms: { net: true } }, + { perms: { net: true } }, async function netUdpSendReceive(): Promise<void> { const alice = Deno.listenDatagram({ port: 3500, transport: "udp" }); assert(alice.addr.transport === "udp"); @@ -287,7 +285,31 @@ unitTest( ); unitTest( - { ignore: Deno.build.os === "windows", perms: { net: true } }, + { perms: { net: true } }, + async function netUdpConcurrentSendReceive(): Promise<void> { + const socket = Deno.listenDatagram({ port: 3500, transport: "udp" }); + assert(socket.addr.transport === "udp"); + assertEquals(socket.addr.port, 3500); + assertEquals(socket.addr.hostname, "127.0.0.1"); + + const recvPromise = socket.receive(); + + const sendBuf = new Uint8Array([1, 2, 3]); + const sendLen = await socket.send(sendBuf, socket.addr); + assertEquals(sendLen, 3); + + const [recvBuf, recvAddr] = await recvPromise; + assertEquals(recvBuf.length, 3); + assertEquals(1, recvBuf[0]); + assertEquals(2, recvBuf[1]); + assertEquals(3, recvBuf[2]); + + socket.close(); + }, +); + +unitTest( + { perms: { net: true } }, async function netUdpBorrowMutError(): Promise<void> { const socket = Deno.listenDatagram({ port: 4501, @@ -335,6 +357,34 @@ unitTest( }, ); +// TODO(piscisaureus): Enable after Tokio v0.3/v1.0 upgrade. +unitTest( + { ignore: true, perms: { read: true, write: true } }, + async function netUnixPacketConcurrentSendReceive(): Promise<void> { + const filePath = await Deno.makeTempFile(); + const socket = Deno.listenDatagram({ + path: filePath, + transport: "unixpacket", + }); + assert(socket.addr.transport === "unixpacket"); + assertEquals(socket.addr.path, filePath); + + const recvPromise = socket.receive(); + + const sendBuf = new Uint8Array([1, 2, 3]); + const sendLen = await socket.send(sendBuf, socket.addr); + assertEquals(sendLen, 3); + + const [recvBuf, recvAddr] = await recvPromise; + assertEquals(recvBuf.length, 3); + assertEquals(1, recvBuf[0]); + assertEquals(2, recvBuf[1]); + assertEquals(3, recvBuf[2]); + + socket.close(); + }, +); + unitTest( { perms: { net: true } }, async function netTcpListenIteratorBreakClosesResource(): Promise<void> { @@ -385,7 +435,7 @@ unitTest( ); unitTest( - { ignore: Deno.build.os === "windows", perms: { net: true } }, + { perms: { net: true } }, async function netUdpListenCloseWhileIterating(): Promise<void> { const socket = Deno.listenDatagram({ port: 8000, transport: "udp" }); const nextWhileClosing = socket[Symbol.asyncIterator]().next(); |