|
|
|
@ -556,7 +556,7 @@ func TestPrometheus_parseTimeSeriesResponse(t *testing.T) { |
|
|
|
|
query := &PrometheusQuery{ |
|
|
|
|
LegendFormat: "legend {{app}}", |
|
|
|
|
} |
|
|
|
|
res, err := parseTimeSeriesResponse(value, query) |
|
|
|
|
res, err := parseTimeSeriesResponse(value, query, true) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
|
|
|
|
|
// Test fields
|
|
|
|
@ -594,7 +594,7 @@ func TestPrometheus_parseTimeSeriesResponse(t *testing.T) { |
|
|
|
|
End: time.Unix(5, 0).UTC(), |
|
|
|
|
UtcOffsetSec: 0, |
|
|
|
|
} |
|
|
|
|
res, err := parseTimeSeriesResponse(value, query) |
|
|
|
|
res, err := parseTimeSeriesResponse(value, query, true) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
|
|
|
|
|
require.Len(t, res, 1) |
|
|
|
@ -631,7 +631,7 @@ func TestPrometheus_parseTimeSeriesResponse(t *testing.T) { |
|
|
|
|
End: time.Unix(4, 0).UTC(), |
|
|
|
|
UtcOffsetSec: 0, |
|
|
|
|
} |
|
|
|
|
res, err := parseTimeSeriesResponse(value, query) |
|
|
|
|
res, err := parseTimeSeriesResponse(value, query, true) |
|
|
|
|
|
|
|
|
|
require.NoError(t, err) |
|
|
|
|
require.Len(t, res, 1) |
|
|
|
@ -643,6 +643,39 @@ func TestPrometheus_parseTimeSeriesResponse(t *testing.T) { |
|
|
|
|
require.Nil(t, res[0].Fields[1].At(2)) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("matrix response with from alerting missed data points should be parsed correctly", func(t *testing.T) { |
|
|
|
|
values := []p.SamplePair{ |
|
|
|
|
{Value: 1, Timestamp: 1000}, |
|
|
|
|
{Value: 4, Timestamp: 4000}, |
|
|
|
|
} |
|
|
|
|
value := make(map[TimeSeriesQueryType]interface{}) |
|
|
|
|
value[RangeQueryType] = p.Matrix{ |
|
|
|
|
&p.SampleStream{ |
|
|
|
|
Metric: p.Metric{"app": "Application", "tag2": "tag2"}, |
|
|
|
|
Values: values, |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
query := &PrometheusQuery{ |
|
|
|
|
LegendFormat: "", |
|
|
|
|
Step: 1 * time.Second, |
|
|
|
|
Start: time.Unix(1, 0).UTC(), |
|
|
|
|
End: time.Unix(4, 0).UTC(), |
|
|
|
|
UtcOffsetSec: 0, |
|
|
|
|
} |
|
|
|
|
res, err := parseTimeSeriesResponse(value, query, false) |
|
|
|
|
|
|
|
|
|
require.NoError(t, err) |
|
|
|
|
require.Len(t, res, 1) |
|
|
|
|
require.Equal(t, res[0].Name, "{app=\"Application\", tag2=\"tag2\"}") |
|
|
|
|
require.Len(t, res[0].Fields, 2) |
|
|
|
|
require.Len(t, res[0].Fields[0].Labels, 0) |
|
|
|
|
require.Equal(t, res[0].Fields[0].Name, "Time") |
|
|
|
|
require.Len(t, res[0].Fields[1].Labels, 2) |
|
|
|
|
require.Equal(t, res[0].Fields[1].Labels.String(), "app=Application, tag2=tag2") |
|
|
|
|
require.Equal(t, res[0].Fields[1].Name, "Value") |
|
|
|
|
require.Equal(t, res[0].Fields[1].Config.DisplayNameFromDS, "{app=\"Application\", tag2=\"tag2\"}") |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("matrix response with NaN value should be changed to null", func(t *testing.T) { |
|
|
|
|
value := make(map[TimeSeriesQueryType]interface{}) |
|
|
|
|
value[RangeQueryType] = p.Matrix{ |
|
|
|
@ -660,7 +693,7 @@ func TestPrometheus_parseTimeSeriesResponse(t *testing.T) { |
|
|
|
|
End: time.Unix(4, 0).UTC(), |
|
|
|
|
UtcOffsetSec: 0, |
|
|
|
|
} |
|
|
|
|
res, err := parseTimeSeriesResponse(value, query) |
|
|
|
|
res, err := parseTimeSeriesResponse(value, query, true) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
|
|
|
|
|
var nilPointer *float64 |
|
|
|
@ -680,7 +713,7 @@ func TestPrometheus_parseTimeSeriesResponse(t *testing.T) { |
|
|
|
|
query := &PrometheusQuery{ |
|
|
|
|
LegendFormat: "legend {{app}}", |
|
|
|
|
} |
|
|
|
|
res, err := parseTimeSeriesResponse(value, query) |
|
|
|
|
res, err := parseTimeSeriesResponse(value, query, true) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
|
|
|
|
|
require.Len(t, res, 1) |
|
|
|
@ -707,7 +740,7 @@ func TestPrometheus_parseTimeSeriesResponse(t *testing.T) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
query := &PrometheusQuery{} |
|
|
|
|
res, err := parseTimeSeriesResponse(value, query) |
|
|
|
|
res, err := parseTimeSeriesResponse(value, query, true) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
|
|
|
|
|
require.Len(t, res, 1) |
|
|
|
|