mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Prometheus: Add golden JSON tests (#48941)
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
@@ -22,6 +23,8 @@ import (
|
||||
apiv1 "github.com/prometheus/client_golang/api/prometheus/v1"
|
||||
)
|
||||
|
||||
var update = false
|
||||
|
||||
func TestMatrixResponses(t *testing.T) {
|
||||
tt := []struct {
|
||||
name string
|
||||
@@ -37,7 +40,7 @@ func TestMatrixResponses(t *testing.T) {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
queryFileName := filepath.Join("../testdata", test.filepath+".query.json")
|
||||
responseFileName := filepath.Join("../testdata", test.filepath+".result.json")
|
||||
goldenFileName := filepath.Join("../testdata", test.filepath+".result.golden.txt")
|
||||
goldenFileName := filepath.Join("../testdata", test.filepath+".result.golden")
|
||||
|
||||
query, err := loadStoredPrometheusQuery(queryFileName)
|
||||
require.NoError(t, err)
|
||||
@@ -52,7 +55,20 @@ func TestMatrixResponses(t *testing.T) {
|
||||
dr, found := result.Responses["A"]
|
||||
require.True(t, found)
|
||||
|
||||
require.NoError(t, experimental.CheckGoldenDataResponse(goldenFileName, &dr, true))
|
||||
actual, err := json.MarshalIndent(&dr, "", " ")
|
||||
require.NoError(t, err)
|
||||
|
||||
// nolint:gosec
|
||||
// We can ignore the gosec G304 because this is a test with static defined paths
|
||||
expected, err := ioutil.ReadFile(goldenFileName + ".json")
|
||||
if err != nil || update {
|
||||
err = os.WriteFile(goldenFileName+".json", actual, 0600)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
require.JSONEq(t, string(expected), string(actual))
|
||||
|
||||
require.NoError(t, experimental.CheckGoldenDataResponse(goldenFileName+".txt", &dr, update))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
63
pkg/tsdb/prometheus/testdata/range_infinity.result.golden.json
vendored
Normal file
63
pkg/tsdb/prometheus/testdata/range_infinity.result.golden.json
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"frames": [
|
||||
{
|
||||
"schema": {
|
||||
"name": "1 / 0",
|
||||
"meta": {
|
||||
"custom": {
|
||||
"resultType": "matrix"
|
||||
},
|
||||
"executedQueryString": "Expr: 1 / 0\nStep: 1s"
|
||||
},
|
||||
"fields": [
|
||||
{
|
||||
"name": "Time",
|
||||
"type": "time",
|
||||
"typeInfo": {
|
||||
"frame": "time.Time"
|
||||
},
|
||||
"config": {
|
||||
"interval": 1000
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Value",
|
||||
"type": "number",
|
||||
"typeInfo": {
|
||||
"frame": "float64",
|
||||
"nullable": true
|
||||
},
|
||||
"labels": {},
|
||||
"config": {
|
||||
"displayNameFromDS": "1 / 0"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"data": {
|
||||
"values": [
|
||||
[
|
||||
1641889530000,
|
||||
1641889531000,
|
||||
1641889532000
|
||||
],
|
||||
[
|
||||
null,
|
||||
null,
|
||||
null
|
||||
]
|
||||
],
|
||||
"entities": [
|
||||
null,
|
||||
{
|
||||
"Inf": [
|
||||
0,
|
||||
1,
|
||||
2
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
56
pkg/tsdb/prometheus/testdata/range_missing.result.golden.json
vendored
Normal file
56
pkg/tsdb/prometheus/testdata/range_missing.result.golden.json
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"frames": [
|
||||
{
|
||||
"schema": {
|
||||
"name": "go_goroutines{job=\"prometheus\"}",
|
||||
"meta": {
|
||||
"custom": {
|
||||
"resultType": "matrix"
|
||||
},
|
||||
"executedQueryString": "Expr: test1\nStep: 1s"
|
||||
},
|
||||
"fields": [
|
||||
{
|
||||
"name": "Time",
|
||||
"type": "time",
|
||||
"typeInfo": {
|
||||
"frame": "time.Time"
|
||||
},
|
||||
"config": {
|
||||
"interval": 1000
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Value",
|
||||
"type": "number",
|
||||
"typeInfo": {
|
||||
"frame": "float64",
|
||||
"nullable": true
|
||||
},
|
||||
"labels": {
|
||||
"__name__": "go_goroutines",
|
||||
"job": "prometheus"
|
||||
},
|
||||
"config": {
|
||||
"displayNameFromDS": "go_goroutines{job=\"prometheus\"}"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"data": {
|
||||
"values": [
|
||||
[
|
||||
1641889533000,
|
||||
1641889534000,
|
||||
1641889537000
|
||||
],
|
||||
[
|
||||
21,
|
||||
32,
|
||||
43
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
56
pkg/tsdb/prometheus/testdata/range_nan.result.golden.json
vendored
Normal file
56
pkg/tsdb/prometheus/testdata/range_nan.result.golden.json
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"frames": [
|
||||
{
|
||||
"schema": {
|
||||
"name": "{handler=\"/api/v1/query_range\", job=\"prometheus\"}",
|
||||
"meta": {
|
||||
"custom": {
|
||||
"resultType": "matrix"
|
||||
},
|
||||
"executedQueryString": "Expr: \nStep: 1s"
|
||||
},
|
||||
"fields": [
|
||||
{
|
||||
"name": "Time",
|
||||
"type": "time",
|
||||
"typeInfo": {
|
||||
"frame": "time.Time"
|
||||
},
|
||||
"config": {
|
||||
"interval": 1000
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Value",
|
||||
"type": "number",
|
||||
"typeInfo": {
|
||||
"frame": "float64",
|
||||
"nullable": true
|
||||
},
|
||||
"labels": {
|
||||
"handler": "/api/v1/query_range",
|
||||
"job": "prometheus"
|
||||
},
|
||||
"config": {
|
||||
"displayNameFromDS": "{handler=\"/api/v1/query_range\", job=\"prometheus\"}"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"data": {
|
||||
"values": [
|
||||
[
|
||||
1641889530000,
|
||||
1641889531000,
|
||||
1641889532000
|
||||
],
|
||||
[
|
||||
null,
|
||||
null,
|
||||
null
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
112
pkg/tsdb/prometheus/testdata/range_simple.result.golden.json
vendored
Normal file
112
pkg/tsdb/prometheus/testdata/range_simple.result.golden.json
vendored
Normal file
@@ -0,0 +1,112 @@
|
||||
{
|
||||
"frames": [
|
||||
{
|
||||
"schema": {
|
||||
"name": "prometheus_http_requests_total{code=\"200\", handler=\"/api/v1/query_range\", job=\"prometheus\"}",
|
||||
"meta": {
|
||||
"custom": {
|
||||
"resultType": "matrix"
|
||||
},
|
||||
"executedQueryString": "Expr: \nStep: 1s"
|
||||
},
|
||||
"fields": [
|
||||
{
|
||||
"name": "Time",
|
||||
"type": "time",
|
||||
"typeInfo": {
|
||||
"frame": "time.Time"
|
||||
},
|
||||
"config": {
|
||||
"interval": 1000
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Value",
|
||||
"type": "number",
|
||||
"typeInfo": {
|
||||
"frame": "float64",
|
||||
"nullable": true
|
||||
},
|
||||
"labels": {
|
||||
"__name__": "prometheus_http_requests_total",
|
||||
"code": "200",
|
||||
"handler": "/api/v1/query_range",
|
||||
"job": "prometheus"
|
||||
},
|
||||
"config": {
|
||||
"displayNameFromDS": "prometheus_http_requests_total{code=\"200\", handler=\"/api/v1/query_range\", job=\"prometheus\"}"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"data": {
|
||||
"values": [
|
||||
[
|
||||
1641889530123,
|
||||
1641889531123,
|
||||
1641889532123
|
||||
],
|
||||
[
|
||||
21,
|
||||
32,
|
||||
43
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"schema": {
|
||||
"name": "prometheus_http_requests_total{code=\"400\", handler=\"/api/v1/query_range\", job=\"prometheus\"}",
|
||||
"meta": {
|
||||
"custom": {
|
||||
"resultType": "matrix"
|
||||
},
|
||||
"executedQueryString": "Expr: \nStep: 1s"
|
||||
},
|
||||
"fields": [
|
||||
{
|
||||
"name": "Time",
|
||||
"type": "time",
|
||||
"typeInfo": {
|
||||
"frame": "time.Time"
|
||||
},
|
||||
"config": {
|
||||
"interval": 1000
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Value",
|
||||
"type": "number",
|
||||
"typeInfo": {
|
||||
"frame": "float64",
|
||||
"nullable": true
|
||||
},
|
||||
"labels": {
|
||||
"__name__": "prometheus_http_requests_total",
|
||||
"code": "400",
|
||||
"handler": "/api/v1/query_range",
|
||||
"job": "prometheus"
|
||||
},
|
||||
"config": {
|
||||
"displayNameFromDS": "prometheus_http_requests_total{code=\"400\", handler=\"/api/v1/query_range\", job=\"prometheus\"}"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"data": {
|
||||
"values": [
|
||||
[
|
||||
1641889530123,
|
||||
1641889531123,
|
||||
1641889532123
|
||||
],
|
||||
[
|
||||
54,
|
||||
65,
|
||||
76
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user