102 lines
3.8 KiB
TypeScript
102 lines
3.8 KiB
TypeScript
import { AutoQueryContext } from '../types';
|
|
|
|
import { createHistogramMetricQueryDefs } from './histogram';
|
|
|
|
describe('createHistogramMetricQueryDefs utf8=false', () => {
|
|
const ctx: AutoQueryContext = {
|
|
metricParts: ['test', 'latency', 'seconds', 'bucket'],
|
|
isUtf8Metric: false,
|
|
suffix: 'bucket',
|
|
unitSuffix: 'seconds',
|
|
unit: 's',
|
|
};
|
|
|
|
it('should create the correct title and unit for metricParts', () => {
|
|
const result = createHistogramMetricQueryDefs(ctx);
|
|
expect(result.preview.title).toBe('${metric}');
|
|
expect(result.preview.unit).toBe('s');
|
|
});
|
|
|
|
it('should generate correct p50 AutoQueryDef', () => {
|
|
const result = createHistogramMetricQueryDefs(ctx);
|
|
const p50Query = result.breakdown.queries[0];
|
|
|
|
expect(p50Query.expr).toBe(
|
|
'histogram_quantile(0.5, sum by(le, ${groupby}) (rate(${metric}{${filters}}[$__rate_interval]) ${otel_join_query}))'
|
|
);
|
|
expect(p50Query.legendFormat).toBe('{{${groupby}}}');
|
|
});
|
|
|
|
it('should generate correct percentiles AutoQueryDef', () => {
|
|
const result = createHistogramMetricQueryDefs(ctx);
|
|
const percentileQueries = result.variants[0].queries;
|
|
|
|
expect(percentileQueries[0].expr).toBe(
|
|
'histogram_quantile(0.99, sum by(le) (rate(${metric}{${filters}}[$__rate_interval]) ${otel_join_query}))'
|
|
);
|
|
expect(percentileQueries[1].expr).toBe(
|
|
'histogram_quantile(0.9, sum by(le) (rate(${metric}{${filters}}[$__rate_interval]) ${otel_join_query}))'
|
|
);
|
|
expect(percentileQueries[2].expr).toBe(
|
|
'histogram_quantile(0.5, sum by(le) (rate(${metric}{${filters}}[$__rate_interval]) ${otel_join_query}))'
|
|
);
|
|
});
|
|
|
|
it('should generate correct heatmap AutoQueryDef', () => {
|
|
const result = createHistogramMetricQueryDefs(ctx);
|
|
const heatmapQuery = result.preview.queries[0];
|
|
|
|
expect(heatmapQuery.expr).toBe('sum by(le) (rate(${metric}{${filters}}[$__rate_interval]) ${otel_join_query})');
|
|
expect(result.preview.variant).toBe('heatmap');
|
|
});
|
|
});
|
|
|
|
describe('createHistogramMetricQueryDefs utf8=true', () => {
|
|
const ctx: AutoQueryContext = {
|
|
metricParts: ['test', 'latency', 'seconds', 'bucket'],
|
|
isUtf8Metric: true,
|
|
suffix: 'bucket',
|
|
unitSuffix: 'seconds',
|
|
unit: 's',
|
|
};
|
|
|
|
it('should create the correct title and unit for metricParts', () => {
|
|
const result = createHistogramMetricQueryDefs(ctx);
|
|
expect(result.preview.title).toBe('${metric}');
|
|
expect(result.preview.unit).toBe('s');
|
|
});
|
|
|
|
it('should generate correct p50 AutoQueryDef', () => {
|
|
const result = createHistogramMetricQueryDefs(ctx);
|
|
const p50Query = result.breakdown.queries[0];
|
|
|
|
expect(p50Query.expr).toBe(
|
|
'histogram_quantile(0.5, sum by(le, ${groupby}) (rate({"${metric}", ${filters}}[$__rate_interval]) ${otel_join_query}))'
|
|
);
|
|
expect(p50Query.legendFormat).toBe('{{${groupby}}}');
|
|
});
|
|
|
|
it('should generate correct percentiles AutoQueryDef', () => {
|
|
const result = createHistogramMetricQueryDefs(ctx);
|
|
const percentileQueries = result.variants[0].queries;
|
|
|
|
expect(percentileQueries[0].expr).toBe(
|
|
'histogram_quantile(0.99, sum by(le) (rate({"${metric}", ${filters}}[$__rate_interval]) ${otel_join_query}))'
|
|
);
|
|
expect(percentileQueries[1].expr).toBe(
|
|
'histogram_quantile(0.9, sum by(le) (rate({"${metric}", ${filters}}[$__rate_interval]) ${otel_join_query}))'
|
|
);
|
|
expect(percentileQueries[2].expr).toBe(
|
|
'histogram_quantile(0.5, sum by(le) (rate({"${metric}", ${filters}}[$__rate_interval]) ${otel_join_query}))'
|
|
);
|
|
});
|
|
|
|
it('should generate correct heatmap AutoQueryDef', () => {
|
|
const result = createHistogramMetricQueryDefs(ctx);
|
|
const heatmapQuery = result.preview.queries[0];
|
|
|
|
expect(heatmapQuery.expr).toBe('sum by(le) (rate({"${metric}", ${filters}}[$__rate_interval]) ${otel_join_query})');
|
|
expect(result.preview.variant).toBe('heatmap');
|
|
});
|
|
});
|