From 297ccfc52cf3cd5402ee3731b412a9de5bb1a804 Mon Sep 17 00:00:00 2001 From: Vijay Karthik Date: Tue, 5 Nov 2024 08:25:28 +0100 Subject: [PATCH] Prometheus: Show notice when there is no data (#93936) Show notice when there is no data --- pkg/promlib/converter/prom.go | 4 ++ pkg/promlib/converter/prom_test.go | 14 +++++ .../prom-warnings-no-data-frame.jsonc | 55 +++++++++++++++++++ .../testdata/prom-warnings-no-data.json | 8 +++ 4 files changed, 81 insertions(+) create mode 100644 pkg/promlib/converter/testdata/prom-warnings-no-data-frame.jsonc create mode 100644 pkg/promlib/converter/testdata/prom-warnings-no-data.json diff --git a/pkg/promlib/converter/prom.go b/pkg/promlib/converter/prom.go index 7b5cd6b95f6..55b04ee4a19 100644 --- a/pkg/promlib/converter/prom.go +++ b/pkg/promlib/converter/prom.go @@ -91,6 +91,10 @@ l1Fields: } if len(warnings) > 0 { + if len(rsp.Frames) == 0 { + rsp.Frames = append(rsp.Frames, data.NewFrame("Warnings")) + } + for _, frame := range rsp.Frames { if frame.Meta == nil { frame.Meta = &data.FrameMeta{} diff --git a/pkg/promlib/converter/prom_test.go b/pkg/promlib/converter/prom_test.go index 76dd73a2be3..775465cbaff 100644 --- a/pkg/promlib/converter/prom_test.go +++ b/pkg/promlib/converter/prom_test.go @@ -28,6 +28,7 @@ var files = []string{ "prom-scalar", "prom-series", "prom-warnings", + "prom-warnings-no-data", "prom-error", "prom-exemplars-a", "prom-exemplars-b", @@ -57,6 +58,19 @@ func runScenario(name string, opts Options) func(t *testing.T) { require.Error(t, rsp.Error) return } + + if strings.Contains(name, "warnings") { + hasWarning := false + for _, frame := range rsp.Frames { + if len(frame.Meta.Notices) > 0 { + hasWarning = true + break + } + } + + require.True(t, hasWarning) + } + require.NoError(t, rsp.Error) fname := name + "-frame" diff --git a/pkg/promlib/converter/testdata/prom-warnings-no-data-frame.jsonc b/pkg/promlib/converter/testdata/prom-warnings-no-data-frame.jsonc new file mode 100644 index 00000000000..c18b6e1ada1 --- /dev/null +++ b/pkg/promlib/converter/testdata/prom-warnings-no-data-frame.jsonc @@ -0,0 +1,55 @@ +// 🌟 This was machine generated. Do not edit. 🌟 +// +// Frame[0] { +// "typeVersion": [ +// 0, +// 0 +// ], +// "notices": [ +// { +// "severity": "warning", +// "text": "warning 1" +// }, +// { +// "severity": "warning", +// "text": "warning 2" +// } +// ] +// } +// Name: Warnings +// Dimensions: 0 Fields by 0 Rows +// + +// + +// +// +// 🌟 This was machine generated. Do not edit. 🌟 +{ + "status": 200, + "frames": [ + { + "schema": { + "name": "Warnings", + "meta": { + "typeVersion": [ + 0, + 0 + ], + "notices": [ + { + "severity": "warning", + "text": "warning 1" + }, + { + "severity": "warning", + "text": "warning 2" + } + ] + }, + "fields": [] + }, + "data": { + "values": [] + } + } + ] +} \ No newline at end of file diff --git a/pkg/promlib/converter/testdata/prom-warnings-no-data.json b/pkg/promlib/converter/testdata/prom-warnings-no-data.json new file mode 100644 index 00000000000..92989dc6dd7 --- /dev/null +++ b/pkg/promlib/converter/testdata/prom-warnings-no-data.json @@ -0,0 +1,8 @@ +{ + "status" : "success", + "data" : { + "resultType" : "vector", + "result" : [] + }, + "warnings" : ["warning 1", "warning 2"] + }