Squashed 'third_party/pi/' content from commit d981de122
git-subtree-dir: third_party/pi git-subtree-split: d981de1229ef899957bbe968bc8dcda02a21f477
This commit is contained in:
46
packages/telemetry/test/conformance.test.ts
Normal file
46
packages/telemetry/test/conformance.test.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { InMemoryTelemetryContext, type SpanAttributes } from "../src/index.ts";
|
||||
import { createTelemetryAdapterConformance, type TelemetryAdapterFixture } from "../src/testing/index.ts";
|
||||
|
||||
const conformance = createTelemetryAdapterConformance(() => {
|
||||
const context = new InMemoryTelemetryContext();
|
||||
return Promise.resolve<TelemetryAdapterFixture>({
|
||||
context,
|
||||
getSpans: () => Promise.resolve(context.getSpans()),
|
||||
[Symbol.asyncDispose]: () => Promise.resolve(),
|
||||
});
|
||||
});
|
||||
|
||||
describe("InMemoryTelemetryContext conformance", () => {
|
||||
for (const group of new Set(conformance.map((testCase) => testCase.group))) {
|
||||
describe(group, () => {
|
||||
for (const testCase of conformance.filter((candidate) => candidate.group === group)) {
|
||||
it(testCase.name, () => testCase.run());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
it("returns detached snapshots without exposing mutable recording state", async () => {
|
||||
const context = new InMemoryTelemetryContext();
|
||||
let openSettled: boolean | undefined;
|
||||
let openEndSequence: number | undefined;
|
||||
await context.startSpan({ name: "snapshot", attributes: { tags: ["initial"] } }, (span) => {
|
||||
span.addEvent("event", { value: 1 });
|
||||
const [open] = context.getSpans();
|
||||
openSettled = open?.settled;
|
||||
openEndSequence = open?.endSequence;
|
||||
});
|
||||
|
||||
expect(openSettled).toBe(false);
|
||||
expect(openEndSequence).toBeUndefined();
|
||||
const [first] = context.getSpans();
|
||||
expect(first?.settled).toBe(true);
|
||||
expect(first?.endSequence).toBe(1);
|
||||
(first?.attributes as SpanAttributes).tags = ["mutated"];
|
||||
(first?.events[0]?.attributes as SpanAttributes).value = 2;
|
||||
|
||||
const [second] = context.getSpans();
|
||||
expect(second?.attributes).toEqual({ tags: ["initial"] });
|
||||
expect(second?.events).toEqual([{ name: "event", attributes: { value: 1 } }]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user