diff options
author | 2022-09-22 03:06:48 -0700 | |
---|---|---|
committer | 2022-09-22 03:06:48 -0700 | |
commit | 0968fd339f252e056b83f1591951ee6655652f9b (patch) | |
tree | 24d0033ec1991f2b79a17592dc5602eae539045c | |
parent | 2ca1861a54e831c44dae0044097726fd32e80725 (diff) | |
download | bun-0968fd339f252e056b83f1591951ee6655652f9b.tar.gz bun-0968fd339f252e056b83f1591951ee6655652f9b.tar.zst bun-0968fd339f252e056b83f1591951ee6655652f9b.zip |
Add epoll to list of syscalls that can fail
-rw-r--r-- | src/bun.js/node/syscall.zig | 1 | ||||
-rw-r--r-- | test/bun.js/serve.test.ts | 85 |
2 files changed, 58 insertions, 28 deletions
diff --git a/src/bun.js/node/syscall.zig b/src/bun.js/node/syscall.zig index cc34fc463..edb6937f5 100644 --- a/src/bun.js/node/syscall.zig +++ b/src/bun.js/node/syscall.zig @@ -98,6 +98,7 @@ pub const Tag = enum(u8) { kevent, kqueue, + epoll_ctl, pub var strings = std.EnumMap(Tag, JSC.C.JSStringRef).initFull(null); }; const PathString = @import("../../global.zig").PathString; diff --git a/test/bun.js/serve.test.ts b/test/bun.js/serve.test.ts index 317d94100..0a38692c4 100644 --- a/test/bun.js/serve.test.ts +++ b/test/bun.js/serve.test.ts @@ -64,6 +64,8 @@ describe("streaming", () => { development: false, error(e) { pass = false; + server?.stop(); + server = null; return new Response("fail", { status: 500 }); }, @@ -453,10 +455,6 @@ it(`should work for a file ${count} times serial`, async () => { }, }); - // this gets stuck if run about 200 times awaiting all the promises - // when the promises are run altogether, instead of one at a time - // it's hard to say if this only happens here due to some weird stuff with the test runner - // or if it's "real" issue for (let i = 0; i < count; i++) { const response = await fetch(`http://${server.hostname}:${server.port}`); expect(await response.text()).toBe(textToExpect); @@ -465,21 +463,16 @@ it(`should work for a file ${count} times serial`, async () => { server.stop(); }); -var count = 50; -it(`should work for text ${count} times serial`, async () => { +it(`should work for ArrayBuffer ${count} times serial`, async () => { const textToExpect = "hello"; var ran = 0; const server = serve({ port: port++, fetch(req) { - return new Response(textToExpect); + return new Response(new TextEncoder().encode(textToExpect)); }, }); - // this gets stuck if run about 200 times awaiting all the promises - // when the promises are run altogether, instead of one at a time - // it's hard to say if this only happens here due to some weird stuff with the test runner - // or if it's "real" issue for (let i = 0; i < count; i++) { const response = await fetch(`http://${server.hostname}:${server.port}`); expect(await response.text()).toBe(textToExpect); @@ -487,24 +480,60 @@ it(`should work for text ${count} times serial`, async () => { server.stop(); }); -it(`should work for ArrayBuffer ${count} times serial`, async () => { - const textToExpect = "hello"; - var ran = 0; - const server = serve({ - port: port++, - fetch(req) { - return new Response(new TextEncoder().encode(textToExpect)); - }, + +describe("parallell", () => { + it(`should work for text ${count} times in batches of 5`, async () => { + const textToExpect = "hello"; + var ran = 0; + const server = serve({ + port: port++, + fetch(req) { + return new Response(textToExpect); + }, + }); + + for (let i = 0; i < count; ) { + let responses = await Promise.all([ + fetch(`http://${server.hostname}:${server.port}`), + fetch(`http://${server.hostname}:${server.port}`), + fetch(`http://${server.hostname}:${server.port}`), + fetch(`http://${server.hostname}:${server.port}`), + fetch(`http://${server.hostname}:${server.port}`), + ]); + + for (let response of responses) { + expect(await response.text()).toBe(textToExpect); + } + i += responses.length; + } + + server.stop(); }); + it(`should work for Uint8Array ${count} times in batches of 5`, async () => { + const textToExpect = "hello"; + var ran = 0; + const server = serve({ + port: port++, + fetch(req) { + return new Response(new TextEncoder().encode(textToExpect)); + }, + }); - // this gets stuck if run about 200 times awaiting all the promises - // when the promises are run altogether, instead of one at a time - // it's hard to say if this only happens here due to some weird stuff with the test runner - // or if it's "real" issue - for (let i = 0; i < count; i++) { - const response = await fetch(`http://${server.hostname}:${server.port}`); - expect(await response.text()).toBe(textToExpect); - } + for (let i = 0; i < count; ) { + let responses = await Promise.all([ + fetch(`http://${server.hostname}:${server.port}`), + fetch(`http://${server.hostname}:${server.port}`), + fetch(`http://${server.hostname}:${server.port}`), + fetch(`http://${server.hostname}:${server.port}`), + fetch(`http://${server.hostname}:${server.port}`), + ]); + + for (let response of responses) { + expect(await response.text()).toBe(textToExpect); + } + i += responses.length; + } - server.stop(); + server.stop(); + }); }); |