diff options
Diffstat (limited to 'std/http/racing_server_test.ts')
-rw-r--r-- | std/http/racing_server_test.ts | 44 |
1 files changed, 29 insertions, 15 deletions
diff --git a/std/http/racing_server_test.ts b/std/http/racing_server_test.ts index 639935339..07df92bae 100644 --- a/std/http/racing_server_test.ts +++ b/std/http/racing_server_test.ts @@ -1,7 +1,7 @@ const { connect, run } = Deno; import { assert, assertEquals } from "../testing/asserts.ts"; -import { BufReader } from "../io/bufio.ts"; +import { BufReader, BufWriter } from "../io/bufio.ts"; import { TextProtoReader } from "../textproto/mod.ts"; let server: Deno.Process; @@ -21,20 +21,20 @@ function killServer(): void { server.stdout?.close(); } -const input = `GET / HTTP/1.1 - -GET / HTTP/1.1 - -GET / HTTP/1.1 - -GET / HTTP/1.1 - -`; +const input = [ + "GET / HTTP/1.1\r\n\r\n", + "GET / HTTP/1.1\r\n\r\n", + "GET / HTTP/1.1\r\n\r\n", + "POST / HTTP/1.1\r\ncontent-length: 4\r\n\r\ndeno", + "POST / HTTP/1.1\r\ntransfer-encoding: chunked\r\n\r\n4\r\ndeno\r\n0\r\n\r\n", + "POST / HTTP/1.1\r\ntransfer-encoding: chunked\r\ntrailer: deno\r\n\r\n4\r\ndeno\r\n0\r\n\r\ndeno: land\r\n\r\n", + "GET / HTTP/1.1\r\n\r\n" +].join(""); const HUGE_BODY_SIZE = 1024 * 1024; const output = `HTTP/1.1 200 OK -content-length: 8 +content-length: 6 -Hello 1 +Step1 HTTP/1.1 200 OK content-length: ${HUGE_BODY_SIZE} @@ -42,9 +42,21 @@ ${"a".repeat(HUGE_BODY_SIZE)}HTTP/1.1 200 OK content-length: ${HUGE_BODY_SIZE} ${"b".repeat(HUGE_BODY_SIZE)}HTTP/1.1 200 OK -content-length: 8 +content-length: 6 + +Step4 +HTTP/1.1 200 OK +content-length: 6 + +Step5 +HTTP/1.1 200 OK +content-length: 6 + +Step6 +HTTP/1.1 200 OK +content-length: 6 -World 4 +Step7 `; Deno.test(async function serverPipelineRace(): Promise<void> { @@ -52,7 +64,9 @@ Deno.test(async function serverPipelineRace(): Promise<void> { const conn = await connect({ port: 4501 }); const r = new TextProtoReader(new BufReader(conn)); - await conn.write(new TextEncoder().encode(input)); + const w = new BufWriter(conn); + await w.write(new TextEncoder().encode(input)); + await w.flush(); const outLines = output.split("\n"); // length - 1 to disregard last empty line for (let i = 0; i < outLines.length - 1; i++) { |