From f3e33b004990898b56bbf7af2e2f0ba558e9f322 Mon Sep 17 00:00:00 2001 From: cirospaciari Date: Thu, 16 May 2024 00:08:14 -0300 Subject: [PATCH] add shutdown test --- test/js/web/websocket/websocket.test.js | 35 +++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/test/js/web/websocket/websocket.test.js b/test/js/web/websocket/websocket.test.js index 9d8a2e431a..8e4c023ed5 100644 --- a/test/js/web/websocket/websocket.test.js +++ b/test/js/web/websocket/websocket.test.js @@ -57,7 +57,38 @@ describe("WebSocket", () => { await closed; Bun.gc(true); }); - + it("should handle shutdown properly", async () => { + const server = Bun.serve({ + port: 0, + tls: COMMON_CERT, + fetch(req, server) { + if (server.upgrade(req)) { + return; + } + return new Response("Upgrade failed :(", { status: 500 }); + }, + websocket: { + message(ws, message) { + // echo + ws.send(message); + }, + open(ws) {}, + }, + }); + try { + for (let i = 0; i < 1000; i++) { + const ws = new WebSocket(server.url.href, { tls: { rejectUnauthorized: false } }); + await new Promise((resolve, reject) => { + ws.onopen = resolve; + ws.onerror = reject; + }); + ws.send("message"); + } + Bun.gc(true); + } finally { + server.stop(true); + } + }); it("should connect many times over https", async () => { const server = Bun.serve({ port: 0, @@ -172,7 +203,7 @@ describe("WebSocket", () => { websocket: { message(ws, message) { ws.send(message); - ws.close(); + setTimeout(() => ws.close(), 100); }, // a message is received open(ws) { // a socket is opened