1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-10-27 11:02:16 +01:00

feat: fake impact metrics with histograms

This commit is contained in:
kwasniew 2025-10-27 10:37:01 +01:00
parent a902c7d866
commit b830ddb3bb
No known key found for this signature in database
GPG Key ID: 43A7CBC24C119560

View File

@ -1,34 +1,68 @@
export const fakeImpactMetricsResolver = () => ({
counters: new Map<string, { value: number; help: string }>(),
gauges: new Map<string, { value: number; help: string }>(),
import type { IImpactMetricsResolver } from '../../lib/types/index.js';
defineCounter(name: string, help: string) {
this.counters.set(name, { value: 0, help });
},
export const fakeImpactMetricsResolver = () => {
const counters = new Map<string, { value: number; help: string }>();
const gauges = new Map<string, { value: number; help: string }>();
const histograms = new Map<
string,
{ count: number; sum: number; help: string; buckets: number[] }
>();
defineGauge(name: string, help: string) {
this.gauges.set(name, { value: 0, help });
},
const resolver: IImpactMetricsResolver = {
defineCounter(name: string, help: string) {
counters.set(name, { value: 0, help });
},
incrementCounter(name: string, value: number = 1) {
const counter = this.counters.get(name);
defineGauge(name: string, help: string) {
gauges.set(name, { value: 0, help });
},
if (!counter) {
return;
}
defineHistogram(name: string, help: string, buckets?: number[]) {
const defaultBuckets = buckets || [
0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10,
];
histograms.set(name, {
count: 0,
sum: 0,
help,
buckets: defaultBuckets,
});
},
counter.value += value;
this.counters.set(name, counter);
},
incrementCounter(name: string, value: number = 1) {
const counter = counters.get(name);
updateGauge(name: string, value: number) {
const gauge = this.gauges.get(name);
if (!counter) {
return;
}
if (!gauge) {
return;
}
counter.value += value;
counters.set(name, counter);
},
gauge.value = value;
this.gauges.set(name, gauge);
},
});
updateGauge(name: string, value: number) {
const gauge = gauges.get(name);
if (!gauge) {
return;
}
gauge.value = value;
gauges.set(name, gauge);
},
observeHistogram(name: string, value: number) {
const histogram = histograms.get(name);
if (!histogram) {
return;
}
histogram.count++;
histogram.sum += value;
histograms.set(name, histogram);
},
};
return { ...resolver, counters, gauges, histograms };
};