From e60f34336e15b6a7ddb8d5e02b8a8f571f9f3ed9 Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Tue, 30 Mar 2021 19:05:22 +0100 Subject: [PATCH] Prometheus: align exemplars check to latest api change (#32513) (#32515) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit d8a83fec9ddcc13722cd799a78cfc0308fbac876) Co-authored-by: Zoltán Bedi --- .../prometheus/result_transformer.test.ts | 14 ++++++++++++++ public/app/plugins/datasource/prometheus/types.ts | 4 ++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/public/app/plugins/datasource/prometheus/result_transformer.test.ts b/public/app/plugins/datasource/prometheus/result_transformer.test.ts index 44add64095f..1e47b246fc0 100644 --- a/public/app/plugins/datasource/prometheus/result_transformer.test.ts +++ b/public/app/plugins/datasource/prometheus/result_transformer.test.ts @@ -510,6 +510,20 @@ describe('Prometheus Result Transformer', () => { expect(result[0].length).toBe(1); }); + it('should return with an empty array when data is empty', () => { + const result = transform( + { + data: { + status: 'success', + data: [], + }, + } as any, + options + ); + + expect(result).toHaveLength(0); + }); + it('should remove exemplars that are too close to each other', () => { const response = { status: 'success', diff --git a/public/app/plugins/datasource/prometheus/types.ts b/public/app/plugins/datasource/prometheus/types.ts index f5b1c95005c..cdf857d0b8d 100644 --- a/public/app/plugins/datasource/prometheus/types.ts +++ b/public/app/plugins/datasource/prometheus/types.ts @@ -63,7 +63,7 @@ export interface PromDataErrorResponse { data: T; } -export type PromData = PromMatrixData | PromVectorData | PromScalarData | PromExemplarData[] | null; +export type PromData = PromMatrixData | PromVectorData | PromScalarData | PromExemplarData[]; export interface Labels { [index: string]: any; @@ -120,7 +120,7 @@ export function isExemplarData(result: PromData): result is PromExemplarData[] { if (result == null || !Array.isArray(result)) { return false; } - return 'exemplars' in result[0]; + return result.length ? 'exemplars' in result[0] : false; } export type MatrixOrVectorResult = PromMatrixData['result'][0] | PromVectorData['result'][0];