























@@ -216,6 +216,16 @@ function lastHistogramRecord(name: string) {
216216| undefined;
217217}
218218219+function histogramCreateOptions(name: string) {
220+const calls = telemetryState.meter.createHistogram.mock.calls as unknown as Array<
221+[string, unknown?]
222+>;
223+const call = calls.find(([histogramName]) => histogramName === name);
224+return call?.[1] as
225+| { unit?: unknown; advice?: { explicitBucketBoundaries?: unknown[] } }
226+| undefined;
227+}
228+219229async function emitAndCaptureLog(
220230event: Omit<Extract<Parameters<typeof emitDiagnosticEvent>[0], { type: "log.record" }>, "type">,
221231options: { trusted?: boolean } = {},
@@ -993,15 +1003,12 @@ describe("diagnostics-otel service", () => {
9931003});
9941004await flushDiagnosticEvents();
9951005996-expect(telemetryState.meter.createHistogram).toHaveBeenCalledWith(
997-"gen_ai.client.token.usage",
998-expect.objectContaining({
999-unit: "{token}",
1000-advice: {
1001-explicitBucketBoundaries: expect.arrayContaining([1, 4, 16, 1024, 67108864]),
1002-},
1003-}),
1004-);
1006+const tokenUsageOptions = histogramCreateOptions("gen_ai.client.token.usage");
1007+expect(tokenUsageOptions?.unit).toBe("{token}");
1008+const tokenUsageBoundaries = tokenUsageOptions?.advice?.explicitBucketBoundaries;
1009+for (const boundary of [1, 4, 16, 1024, 67108864]) {
1010+expect(tokenUsageBoundaries).toContain(boundary);
1011+}
10051012const genAiTokenUsage = telemetryState.histograms.get("gen_ai.client.token.usage");
10061013const tokens = telemetryState.counters.get("openclaw.tokens");
10071014expect(tokens?.add).toHaveBeenCalledWith(12, {
@@ -1158,15 +1165,12 @@ describe("diagnostics-otel service", () => {
11581165});
11591166await flushDiagnosticEvents();
116011671161-expect(telemetryState.meter.createHistogram).toHaveBeenCalledWith(
1162-"gen_ai.client.operation.duration",
1163-expect.objectContaining({
1164-unit: "s",
1165-advice: {
1166-explicitBucketBoundaries: expect.arrayContaining([0.01, 0.32, 2.56, 81.92]),
1167-},
1168-}),
1169-);
1168+const operationDurationOptions = histogramCreateOptions("gen_ai.client.operation.duration");
1169+expect(operationDurationOptions?.unit).toBe("s");
1170+const operationDurationBoundaries = operationDurationOptions?.advice?.explicitBucketBoundaries;
1171+for (const boundary of [0.01, 0.32, 2.56, 81.92]) {
1172+expect(operationDurationBoundaries).toContain(boundary);
1173+}
11701174const genAiOperationDuration = telemetryState.histograms.get(
11711175"gen_ai.client.operation.duration",
11721176);
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。