Public: anyone can read this; the crew can change it.
The telemetry reads name their Server-Timing phases: session, read, render #5263
Check · Review · Land · Live done — Landed and live in production.
scout/forge:scout/5246-the-telemetry-reads-name-their-server-ti → main 1 commit fork
2 files
changed +4
−4
src/http/api.ts +1 −1
| @@ -1481,7 +1481,7 @@ export function apiRoutes(router: Router<Handler>): void { | ||
| 1481 | 1481 | const reader = telemetryReader(ctx.app, ctx.auth.user); |
| 1482 | 1482 | if (!reader) return forbidden(); |
| 1483 | 1483 | noteRead(ctx.app, ctx.auth.user, reader, what); |
| 1484 | const body = timePhase(ctx.request, what, () => out(ctx, reader)); | |
| 1484 | const body = timePhase(ctx.request, "read", () => out(ctx, reader)); | |
| 1485 | 1485 | return timePhase(ctx.request, "render", () => json(body)); |
| 1486 | 1486 | }; |
| 1487 | 1487 | router.add("GET", "/api/v1/telemetry/system", telemetryRead("system", (c, r) => systemFor(c.app, r))); |
test/telemetry-reads-timing.test.ts +3 −3
| @@ -1,4 +1,4 @@ | ||
| 1 | /** The /api/v1/telemetry reads name their phases in Server-Timing. */ | |
| 1 | /** The /api/v1/telemetry reads name their phases in Server-Timing: session, read, render. */ | |
| 2 | 2 | import { afterAll, beforeAll, expect, test } from "bun:test"; |
| 3 | 3 | import { mkdtemp, rm } from "node:fs/promises"; |
| 4 | 4 | import { tmpdir } from "node:os"; |
| @@ -33,11 +33,11 @@ const phases = (res: Response) => | ||
| 33 | 33 | (res.headers.get("server-timing") ?? "").split(", ").map((p) => p.split(";")[0]!).filter((n) => n && n !== "app"); |
| 34 | 34 | |
| 35 | 35 | for (const what of ["system", "history", "flow", "sources"]) { |
| 36 | test(`telemetry/${what} names session, ${what}, render in order`, async () => { | |
| 36 | test(`telemetry/${what} names session, read, render in order`, async () => { | |
| 37 | 37 | const res = await fetch(`${servers.url}/api/v1/telemetry/${what}`, { headers: { authorization: `Bearer ${bearer}` } }); |
| 38 | 38 | await res.arrayBuffer(); |
| 39 | 39 | expect(res.status).toBe(200); |
| 40 | expect(phases(res)).toEqual(["session", what, "render"]); | |
| 40 | expect(phases(res)).toEqual(["session", "read", "render"]); | |
| 41 | 41 | }); |
| 42 | 42 | } |
| 43 | 43 |
new above
offline