Skip to content

Commit a685876

Browse files
committed
Harden the benchmark test fixture
Make fixture server startup and shutdown reject on errors instead of hanging or resolving unconditionally. Use the Node Buffer path when bridging fetch responses back to the HTTP server. #795 (comment) #795 (comment) #795 (comment) Assisted-by: Codex:gpt-5.5
1 parent bfd3d6c commit a685876

1 file changed

Lines changed: 13 additions & 3 deletions

File tree

test/bench/fixture.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
MemoryKvStore,
55
} from "@fedify/fedify";
66
import { Create, Endpoints, Person } from "@fedify/vocab";
7+
import { Buffer } from "node:buffer";
78
import {
89
createServer,
910
type IncomingMessage,
@@ -80,13 +81,22 @@ export async function spawnBenchmarkTarget(): Promise<BenchmarkTargetFixture> {
8081
await writeFetchResponse(response, outgoing);
8182
},
8283
);
83-
await new Promise<void>((resolve) => server.listen(0, "127.0.0.1", resolve));
84+
await new Promise<void>((resolve, reject) => {
85+
server.once("error", reject);
86+
server.listen(0, "127.0.0.1", () => {
87+
server.off("error", reject);
88+
resolve();
89+
});
90+
});
8491
const address = server.address() as AddressInfo;
8592
return {
8693
url: new URL(`http://${address.address}:${address.port}/`),
8794
inboxUserAgent: () => inboxUserAgent,
8895
requests: () => requests.slice(),
89-
close: () => new Promise<void>((resolve) => server.close(() => resolve())),
96+
close: () =>
97+
new Promise<void>((resolve, reject) => {
98+
server.close((error) => error == null ? resolve() : reject(error));
99+
}),
90100
};
91101
}
92102

@@ -135,5 +145,5 @@ async function writeFetchResponse(
135145
response.headers.forEach((value, name) => {
136146
outgoing.setHeader(name, value);
137147
});
138-
outgoing.end(new Uint8Array(await response.arrayBuffer()));
148+
outgoing.end(Buffer.from(await response.arrayBuffer()));
139149
}

0 commit comments

Comments
 (0)