Skip to content

Commit 99f7b28

Browse files
committed
add ws timings
1 parent 9c17265 commit 99f7b28

1 file changed

Lines changed: 24 additions & 9 deletions

File tree

server/routes/tests/websocket.ts

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,17 @@ export default defineTestHandler(
1212
const query = "foo=bar&hello=world";
1313
const url = `${protocol}${location.host}${base}/_ws?${query}`;
1414

15+
// Measure how long a step takes and log it with a `123.4 ms` suffix.
16+
const timings: Record<string, number> = {};
17+
const time = async <T>(name: string, fn: () => Promise<T>): Promise<T> => {
18+
const start = performance.now();
19+
const result = await fn();
20+
const ms = performance.now() - start;
21+
timings[name] = ms;
22+
log(`${name}: ${ms.toFixed(1)} ms`);
23+
return result;
24+
};
25+
1526
log("Connecting to " + url);
1627
const ws = new WebSocket(url);
1728

@@ -43,24 +54,28 @@ export default defineTestHandler(
4354
return reply;
4455
};
4556

46-
await new Promise<void>((resolve, reject) => {
47-
ws.addEventListener("open", () => resolve());
48-
ws.addEventListener("error", () => reject(new Error("WebSocket error")));
49-
});
50-
log("Connected");
57+
await time(
58+
"connect",
59+
() =>
60+
new Promise<void>((resolve, reject) => {
61+
ws.addEventListener("open", () => resolve());
62+
ws.addEventListener("error", () => reject(new Error("WebSocket error")));
63+
}),
64+
);
5165

5266
// 1. ping/pong
53-
const pong = await send("ping");
54-
log("ping -> " + pong);
67+
const pong = await time("ping", () => send("ping"));
5568
assert(pong === "pong", `Unexpected ping response: ${pong}`);
5669

5770
// 2. query params round-trip
58-
const paramsRaw = await send("params");
59-
log("params -> " + paramsRaw);
71+
const paramsRaw = await time("params", () => send("params"));
6072
const params = JSON.parse(paramsRaw);
6173
assert(params.foo === "bar", `Unexpected foo param: ${params.foo}`);
6274
assert(params.hello === "world", `Unexpected hello param: ${params.hello}`);
6375

76+
const total = Object.values(timings).reduce((a, b) => a + b, 0);
77+
log(`total: ${total.toFixed(1)} ms`);
78+
6479
ws.close();
6580
},
6681
);

0 commit comments

Comments
 (0)