Prometheus: don't override displayName property (#29441)

* Prometheus: don't override displayName property

* Rename displayName to displayNameFromDS for consistency
This commit is contained in:
Zoltán Bedi 2020-12-01 10:36:38 +01:00 committed by GitHub
parent dc93749287
commit 207831fa39
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 29 additions and 39 deletions

View File

@ -1,6 +1,22 @@
import { DataFrame } from '@grafana/data';
import { transform } from './result_transformer';
const matrixResponse = {
status: 'success',
data: {
resultType: 'matrix',
result: [
{
metric: { __name__: 'test', job: 'testjob' },
values: [
[1, '10'],
[2, '0'],
],
},
],
},
};
describe('Prometheus Result Transformer', () => {
const options: any = { target: {}, query: {} };
describe('When nothing is returned', () => {
@ -306,46 +322,14 @@ describe('Prometheus Result Transformer', () => {
});
it('should fill null values', () => {
const response = {
status: 'success',
data: {
resultType: 'matrix',
result: [
{
metric: { __name__: 'test', job: 'testjob' },
values: [
[1, '10'],
[2, '0'],
],
},
],
},
};
const result = transform({ data: response } as any, { ...options, query: { step: 1, start: 0, end: 2 } });
const result = transform({ data: matrixResponse } as any, { ...options, query: { step: 1, start: 0, end: 2 } });
expect(result[0].fields[0].values.toArray()).toEqual([0, 1000, 2000]);
expect(result[0].fields[1].values.toArray()).toEqual([null, 10, 0]);
});
it('should use __name__ label as series name', () => {
const response = {
status: 'success',
data: {
resultType: 'matrix',
result: [
{
metric: { __name__: 'test', job: 'testjob' },
values: [
[1, '10'],
[2, '0'],
],
},
],
},
};
const result = transform({ data: response } as any, {
const result = transform({ data: matrixResponse } as any, {
...options,
query: {
step: 1,
@ -384,6 +368,12 @@ describe('Prometheus Result Transformer', () => {
expect(result[0].name).toBe('{job="testjob"}');
});
it('should not set displayName for ValueFields', () => {
const result = transform({ data: matrixResponse } as any, options);
expect(result[0].fields[1].config.displayName).toBeUndefined();
expect(result[0].fields[1].config.displayNameFromDS).toBe('test{job="testjob"}');
});
it('should align null values with step', () => {
const response = {
status: 'success',

View File

@ -139,10 +139,10 @@ function transformToDataFrame(data: MatrixOrVectorResult, options: TransformOpti
dps.push([t, null]);
}
fields.push(getTimeField(dps, true));
fields.push(getValueField({ data: dps, parseValue: false, labels, displayName: name }));
fields.push(getValueField({ data: dps, parseValue: false, labels, displayNameFromDS: name }));
} else {
fields.push(getTimeField([data.value]));
fields.push(getValueField({ data: [data.value], labels, displayName: name }));
fields.push(getValueField({ data: [data.value], labels, displayNameFromDS: name }));
}
return {
@ -224,7 +224,7 @@ type ValueFieldOptions = {
valueName?: string;
parseValue?: boolean;
labels?: Labels;
displayName?: string;
displayNameFromDS?: string;
};
function getValueField({
@ -232,13 +232,13 @@ function getValueField({
valueName = TIME_SERIES_VALUE_FIELD_NAME,
parseValue = true,
labels,
displayName,
displayNameFromDS,
}: ValueFieldOptions): MutableField {
return {
name: valueName,
type: FieldType.number,
config: {
displayName,
displayNameFromDS,
},
labels,
values: new ArrayVector<number | null>(data.map(val => (parseValue ? parseSampleValue(val[1]) : val[1]))),