diff --git a/apps/server/src/cli/trace.test.ts b/apps/server/src/cli/trace.test.ts index 6c00b240f0a71..521f06a70e48a 100644 --- a/apps/server/src/cli/trace.test.ts +++ b/apps/server/src/cli/trace.test.ts @@ -1,6 +1,6 @@ import { assert, it } from "@effect/vitest"; -import { makeTraceSpanSummary } from "./trace.ts"; +import { formatTraceSummary, makeTraceSpanSummary } from "./trace.ts"; const MINUTE_MS = 60_000; @@ -62,3 +62,13 @@ it("reads failures and interrupts of browser spans from their OTLP status", () = const [render] = summarizer.finish().spans; assert.deepStrictEqual([render?.count, render?.interrupted, render?.failures], [4, 2, 1]); }); + +it("prints durations that round up to a second in seconds", () => { + const summarizer = makeTraceSpanSummary(); + [span("rpc", 999.4, MINUTE_MS), span("rpc", 999.6, 2 * MINUTE_MS)].forEach(summarizer.addLine); + + const row = formatTraceSummary(summarizer.finish(), 25) + .split("\n") + .find((line) => line.startsWith("rpc")); + assert.deepStrictEqual(row?.trim().split(/\s+/).slice(3, 6), ["999ms", "1s", "1s"]); +}); diff --git a/apps/server/src/cli/trace.ts b/apps/server/src/cli/trace.ts index 3e94d0d9957f7..b2463dab0d98d 100644 --- a/apps/server/src/cli/trace.ts +++ b/apps/server/src/cli/trace.ts @@ -100,9 +100,9 @@ export function makeTraceSpanSummary(sinceMs = -Infinity) { } const formatMs = (ms: number) => - ms < 1_000 ? `${Math.round(ms)}ms` : `${Math.round(ms / 100) / 10}s`; + Math.round(ms) < 1_000 ? `${Math.round(ms)}ms` : `${Math.round(ms / 100) / 10}s`; -function formatTraceSummary( +export function formatTraceSummary( summary: ReturnType["finish"]>, limit: number, ) {