Imported as a linear vendor commit so forge rebases do not replay the upstream root tree. git-subtree-dir: third_party/pi git-subtree-split: d981de1229ef899957bbe968bc8dcda02a21f477
30 lines
1.1 KiB
TypeScript
30 lines
1.1 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
BACKGROUND_CONTEXT,
|
|
getTelemetryContext,
|
|
TODO_CONTEXT,
|
|
withTelemetryContext,
|
|
} from "../../src/harness/context.ts";
|
|
import { InMemoryTelemetryContext, NOOP_TELEMETRY_CONTEXT } from "../../src/index.ts";
|
|
|
|
describe("harness Context telemetry", () => {
|
|
it("uses no-op telemetry when none is attached", () => {
|
|
expect(getTelemetryContext(BACKGROUND_CONTEXT)).toBe(NOOP_TELEMETRY_CONTEXT);
|
|
expect(getTelemetryContext(TODO_CONTEXT)).toBe(NOOP_TELEMETRY_CONTEXT);
|
|
});
|
|
|
|
it("carries telemetry as an ordinary context value", async () => {
|
|
const telemetry = new InMemoryTelemetryContext();
|
|
const context = withTelemetryContext(telemetry, BACKGROUND_CONTEXT);
|
|
|
|
await getTelemetryContext(context).startSpan({ name: "parent" }, async (span) => {
|
|
const childContext = withTelemetryContext(span, context);
|
|
await getTelemetryContext(childContext).startSpan({ name: "child" }, () => undefined);
|
|
});
|
|
|
|
const spans = telemetry.getSpans();
|
|
expect(spans.map((span) => span.name)).toEqual(["parent", "child"]);
|
|
expect(spans[1]?.parentId).toBe(spans[0]?.id);
|
|
});
|
|
});
|