Prometheus: Update heatmap unit tests (#72404)

introduce tests for new potential heatmap response type, revert prior changes to tests
This commit is contained in:
Galen Kistler
2023-07-26 14:47:13 -05:00
committed by GitHub
parent 831e8acf15
commit fbd2412f37
@@ -360,7 +360,8 @@ describe('Prometheus Result Transformer', () => {
expect(series.data[1].meta?.preferredVisualisationType).toEqual('rawPrometheus' as PreferredVisualisationType);
});
it('results with deprecated heatmap format should be correctly transformed', () => {
// Heatmap frames can either have a name of the metric, or if there is no metric, a name of "Value"
it('results with heatmap format (no metric name) should be correctly transformed', () => {
const options = {
targets: [
{
@@ -420,7 +421,7 @@ describe('Prometheus Result Transformer', () => {
expect(series.data[0].fields[2].name).toEqual('2');
expect(series.data[0].fields[3].name).toEqual('+Inf');
});
it('results with heatmap format should be correctly transformed', () => {
it('results with heatmap format (with metric name) should be correctly transformed', () => {
const options = {
targets: [
{
@@ -437,9 +438,10 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'metric_name',
type: FieldType.number,
values: [10, 10, 0],
labels: { le: '1' },
labels: { le: '1', __name__: 'metric_name' },
},
],
}),
@@ -448,9 +450,10 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'metric_name',
type: FieldType.number,
values: [30, 10, 40],
labels: { le: '+Inf' },
labels: { le: '+Inf', __name__: 'metric_name' },
},
],
}),
@@ -459,9 +462,10 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'metric_name',
type: FieldType.number,
values: [20, 10, 30],
labels: { le: '2' },
labels: { le: '2', __name__: 'metric_name' },
},
],
}),
@@ -478,7 +482,7 @@ describe('Prometheus Result Transformer', () => {
expect(series.data[0].fields[3].name).toEqual('+Inf');
});
it('results with heatmap format from multiple queries should be correctly transformed', () => {
it('results with heatmap format (no metric name) from multiple queries should be correctly transformed', () => {
const options = {
targets: [
{
@@ -499,6 +503,7 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'Value',
type: FieldType.number,
values: [10, 10, 0],
labels: { le: '1' },
@@ -510,6 +515,7 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'Value',
type: FieldType.number,
values: [20, 10, 30],
labels: { le: '2' },
@@ -521,6 +527,7 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'Value',
type: FieldType.number,
values: [30, 10, 40],
labels: { le: '+Inf' },
@@ -532,6 +539,7 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'Value',
type: FieldType.number,
values: [10, 10, 0],
labels: { le: '1' },
@@ -543,6 +551,7 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'Value',
type: FieldType.number,
values: [20, 10, 30],
labels: { le: '2' },
@@ -554,6 +563,7 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'Value',
type: FieldType.number,
values: [30, 10, 40],
labels: { le: '+Inf' },
@@ -569,6 +579,103 @@ describe('Prometheus Result Transformer', () => {
expect(series.data[0].fields[2].values).toEqual([10, 0, 30]);
expect(series.data[0].fields[3].values).toEqual([10, 0, 10]);
});
it('results with heatmap format (with metric name) from multiple queries should be correctly transformed', () => {
const options = {
targets: [
{
format: 'heatmap',
refId: 'A',
},
{
format: 'heatmap',
refId: 'B',
},
],
} as unknown as DataQueryRequest<PromQuery>;
const response = {
state: 'Done',
data: [
createDataFrame({
refId: 'A',
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'metric_name',
type: FieldType.number,
values: [10, 10, 0],
labels: { le: '1', __name__: 'metric_name' },
},
],
}),
createDataFrame({
refId: 'A',
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'metric_name',
type: FieldType.number,
values: [20, 10, 30],
labels: { le: '2', __name__: 'metric_name' },
},
],
}),
createDataFrame({
refId: 'A',
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'metric_name',
type: FieldType.number,
values: [30, 10, 40],
labels: { le: '+Inf', __name__: 'metric_name' },
},
],
}),
createDataFrame({
refId: 'B',
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'metric_name',
type: FieldType.number,
values: [10, 10, 0],
labels: { le: '1', __name__: 'metric_name' },
},
],
}),
createDataFrame({
refId: 'B',
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'metric_name',
type: FieldType.number,
values: [20, 10, 30],
labels: { le: '2', __name__: 'metric_name' },
},
],
}),
createDataFrame({
refId: 'B',
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'metric_name',
type: FieldType.number,
values: [30, 10, 40],
labels: { le: '+Inf', __name__: 'metric_name' },
},
],
}),
],
} as unknown as DataQueryResponse;
const series = transformV2(response, options, {});
expect(series.data[0].fields.length).toEqual(4);
expect(series.data[0].fields[1].values).toEqual([10, 10, 0]);
expect(series.data[0].fields[2].values).toEqual([10, 0, 30]);
expect(series.data[0].fields[3].values).toEqual([10, 0, 10]);
});
it('results with heatmap format and multiple histograms should be grouped and de-accumulated by non-le labels', () => {
const options = {
@@ -588,6 +695,7 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'Value',
type: FieldType.number,
values: [10, 10, 0],
labels: { le: '1', additionalProperty: '10' },
@@ -599,6 +707,7 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'Value',
type: FieldType.number,
values: [20, 10, 30],
labels: { le: '2', additionalProperty: '10' },
@@ -610,6 +719,7 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'Value',
type: FieldType.number,
values: [30, 10, 40],
labels: { le: '+Inf', additionalProperty: '10' },
@@ -622,6 +732,7 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'Value',
type: FieldType.number,
values: [0, 10, 10],
labels: { le: '1', additionalProperty: '20' },
@@ -633,6 +744,7 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'Value',
type: FieldType.number,
values: [20, 10, 40],
labels: { le: '2', additionalProperty: '20' },
@@ -644,6 +756,7 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'Value',
type: FieldType.number,
values: [30, 10, 60],
labels: { le: '+Inf', additionalProperty: '20' },
@@ -656,6 +769,7 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'Value',
type: FieldType.number,
values: [30, 30, 60],
labels: { le: '1', additionalProperty: '30' },
@@ -667,6 +781,7 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'Value',
type: FieldType.number,
values: [30, 40, 60],
labels: { le: '2', additionalProperty: '30' },
@@ -678,6 +793,7 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'Value',
type: FieldType.number,
values: [40, 40, 60],
labels: { le: '+Inf', additionalProperty: '30' },
@@ -719,6 +835,7 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'Value',
type: FieldType.number,
values: [10, 10, 0],
labels: { le: '1' },
@@ -736,6 +853,7 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4, 3, 2, 1] },
{
name: 'Value',
type: FieldType.number,
values: [30, 10, 40, 90, 14, 21],
labels: { le: '6' },
@@ -767,6 +885,7 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4] },
{
name: 'Value',
type: FieldType.number,
values: [10, 10, 0],
labels: { le: '1' },
@@ -784,6 +903,7 @@ describe('Prometheus Result Transformer', () => {
fields: [
{ name: 'Time', type: FieldType.time, values: [6, 5, 4, 3, 2, 1] },
{
name: 'Value',
type: FieldType.number,
values: [30, 10, 40, 90, 14, 21],
labels: { le: '6' },