Initial Commit
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import type { Counter, Histogram } from "@opentelemetry/api";
|
||||
import { metrics } from "@opentelemetry/api";
|
||||
|
||||
const METRIC_CONVERT_TOTAL = "emblem_solver.convert.total";
|
||||
const METRIC_CONVERT_DURATION = "emblem_solver.convert.duration_ms";
|
||||
|
||||
let convertCounter: Counter | undefined;
|
||||
let convertDuration: Histogram | undefined;
|
||||
|
||||
/** Lazy access to the `convert.total` counter. */
|
||||
export function getConvertCounter(): Counter {
|
||||
if (!convertCounter) {
|
||||
const meter = metrics.getMeter("@suaveplan/emblem-solver");
|
||||
convertCounter = meter.createCounter(METRIC_CONVERT_TOTAL, {
|
||||
description: "Total number of convert() invocations",
|
||||
});
|
||||
}
|
||||
return convertCounter;
|
||||
}
|
||||
|
||||
/** Lazy access to the `convert.duration_ms` histogram. */
|
||||
export function getConvertDuration(): Histogram {
|
||||
if (!convertDuration) {
|
||||
const meter = metrics.getMeter("@suaveplan/emblem-solver");
|
||||
convertDuration = meter.createHistogram(METRIC_CONVERT_DURATION, {
|
||||
description: "Duration of convert() in milliseconds",
|
||||
unit: "ms",
|
||||
});
|
||||
}
|
||||
return convertDuration;
|
||||
}
|
||||
|
||||
/** Internal test helper: reset the cached instruments. */
|
||||
export function __resetTelemetryForTests(): void {
|
||||
convertCounter = undefined;
|
||||
convertDuration = undefined;
|
||||
}
|
||||
|
||||
/** Internal test helper: query the cached instruments. */
|
||||
export function __peekTelemetryForTests(): {
|
||||
counter: Counter | undefined;
|
||||
histogram: Histogram | undefined;
|
||||
} {
|
||||
return { counter: convertCounter, histogram: convertDuration };
|
||||
}
|
||||
Reference in New Issue
Block a user