Initial Commit
This commit is contained in:
94
packages/geospatial/logistics/ports/src/otel/otel.test.ts
Normal file
94
packages/geospatial/logistics/ports/src/otel/otel.test.ts
Normal file
@@ -0,0 +1,94 @@
|
||||
import { metrics } from "@opentelemetry/api";
|
||||
import { describe, expect, it } from "@suaveplan/testing/runner";
|
||||
import {
|
||||
recordEta,
|
||||
recordEtaDuration,
|
||||
recordFindNearestDuration,
|
||||
recordLaneDistanceDuration,
|
||||
recordLaneLookup,
|
||||
recordPortLookup,
|
||||
refreshPortsMeters,
|
||||
} from "./otel.js";
|
||||
|
||||
describe("OTel instrumentation surface", () => {
|
||||
it("counter and histogram recorders run without throwing", {
|
||||
timeout: 5000,
|
||||
}, () => {
|
||||
recordPortLookup("findPort");
|
||||
recordPortLookup("byCountry");
|
||||
recordPortLookup("byType");
|
||||
recordPortLookup("search");
|
||||
recordPortLookup("findNearest");
|
||||
recordPortLookup("inRadius");
|
||||
recordLaneLookup("sea");
|
||||
recordLaneLookup("rail");
|
||||
recordLaneLookup("air");
|
||||
recordLaneLookup("all");
|
||||
recordEta("high");
|
||||
recordEta("medium");
|
||||
recordEta("low");
|
||||
recordFindNearestDuration(1.5);
|
||||
recordLaneDistanceDuration(0.5);
|
||||
recordEtaDuration(2.5);
|
||||
expect(true).toBe(true);
|
||||
});
|
||||
|
||||
it("refreshPortsMeters rebinds after provider change", {
|
||||
timeout: 5000,
|
||||
}, () => {
|
||||
let createCalls = 0;
|
||||
const stubMeter = {
|
||||
createCounter() {
|
||||
createCalls++;
|
||||
return { add(): void {} };
|
||||
},
|
||||
createHistogram() {
|
||||
createCalls++;
|
||||
return { record(): void {} };
|
||||
},
|
||||
createUpDownCounter() {
|
||||
return { add(): void {} };
|
||||
},
|
||||
createObservableCounter() {
|
||||
return {};
|
||||
},
|
||||
createObservableGauge() {
|
||||
return {};
|
||||
},
|
||||
createObservableUpDownCounter() {
|
||||
return {};
|
||||
},
|
||||
addBatchObservableCallback(): void {},
|
||||
removeBatchObservableCallback(): void {},
|
||||
createGauge() {
|
||||
return { record(): void {} };
|
||||
},
|
||||
};
|
||||
const stubProvider = {
|
||||
getMeter() {
|
||||
return stubMeter;
|
||||
},
|
||||
};
|
||||
// biome safety: cast through unknown — we are not extending the real type.
|
||||
const original = metrics.getMeterProvider();
|
||||
metrics.setGlobalMeterProvider(
|
||||
stubProvider as unknown as ReturnType<
|
||||
typeof metrics.getMeterProvider
|
||||
>
|
||||
);
|
||||
try {
|
||||
refreshPortsMeters();
|
||||
// 3 counters + 3 histograms = 6 instrument creations.
|
||||
expect(createCalls).toBeGreaterThanOrEqual(6);
|
||||
recordPortLookup("findPort");
|
||||
recordLaneLookup("all");
|
||||
recordEta("high");
|
||||
recordFindNearestDuration(1);
|
||||
recordLaneDistanceDuration(1);
|
||||
recordEtaDuration(1);
|
||||
} finally {
|
||||
metrics.setGlobalMeterProvider(original);
|
||||
refreshPortsMeters();
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user