Prometheus: (Chore) Remove experimental unshipped prometheusWideSerie… (#73751)

This commit is contained in:
Kyle Brandt
2023-08-24 17:47:19 +03:00
committed by GitHub
parent cb6239d913
commit 6d8fc42cdd
42 changed files with 33 additions and 60415 deletions
@@ -38,7 +38,7 @@ func BenchmarkExemplarJson(b *testing.B) {
responseBytes, err := os.ReadFile(responseFileName)
require.NoError(b, err)
tCtx, err := setup(true)
tCtx, err := setup()
require.NoError(b, err)
b.ResetTimer()
for n := 0; n < b.N; n++ {
@@ -66,7 +66,7 @@ func BenchmarkRangeJson(b *testing.B) {
err error
)
body, q := createJsonTestData(1642000000, 1, 300, 400)
tCtx, err := setup(true)
tCtx, err := setup()
require.NoError(b, err)
b.ResetTimer()
+6 -14
View File
@@ -35,14 +35,10 @@ func TestRangeResponses(t *testing.T) {
}
for _, test := range tt {
enableWideSeries := false
queryFileName := filepath.Join("../testdata", test.filepath+".query.json")
responseFileName := filepath.Join("../testdata", test.filepath+".result.json")
goldenFileName := test.filepath + ".result.golden"
t.Run(test.name, goldenScenario(test.name, queryFileName, responseFileName, goldenFileName, enableWideSeries))
enableWideSeries = true
goldenFileName = test.filepath + ".result.streaming-wide.golden"
t.Run(test.name, goldenScenario(test.name, queryFileName, responseFileName, goldenFileName, enableWideSeries))
t.Run(test.name, goldenScenario(test.name, queryFileName, responseFileName, goldenFileName))
}
}
@@ -55,18 +51,14 @@ func TestExemplarResponses(t *testing.T) {
}
for _, test := range tt {
enableWideSeries := false
queryFileName := filepath.Join("../testdata", test.filepath+".query.json")
responseFileName := filepath.Join("../testdata", test.filepath+".result.json")
goldenFileName := test.filepath + ".result.golden"
t.Run(test.name, goldenScenario(test.name, queryFileName, responseFileName, goldenFileName, enableWideSeries))
enableWideSeries = true
goldenFileName = test.filepath + ".result.streaming-wide.golden"
t.Run(test.name, goldenScenario(test.name, queryFileName, responseFileName, goldenFileName, enableWideSeries))
t.Run(test.name, goldenScenario(test.name, queryFileName, responseFileName, goldenFileName))
}
}
func goldenScenario(name, queryFileName, responseFileName, goldenFileName string, wide bool) func(t *testing.T) {
func goldenScenario(name, queryFileName, responseFileName, goldenFileName string) func(t *testing.T) {
return func(t *testing.T) {
query, err := loadStoredQuery(queryFileName)
require.NoError(t, err)
@@ -75,7 +67,7 @@ func goldenScenario(name, queryFileName, responseFileName, goldenFileName string
responseBytes, err := os.ReadFile(responseFileName)
require.NoError(t, err)
result, err := runQuery(responseBytes, query, wide)
result, err := runQuery(responseBytes, query)
require.NoError(t, err)
require.Len(t, result.Responses, 1)
@@ -146,8 +138,8 @@ func loadStoredQuery(fileName string) (*backend.QueryDataRequest, error) {
}, nil
}
func runQuery(response []byte, q *backend.QueryDataRequest, wide bool) (*backend.QueryDataResponse, error) {
tCtx, err := setup(wide)
func runQuery(response []byte, q *backend.QueryDataRequest) (*backend.QueryDataResponse, error) {
tCtx, err := setup()
if err != nil {
return nil, err
}
-2
View File
@@ -42,7 +42,6 @@ type QueryData struct {
ID int64
URL string
TimeInterval string
enableWideSeries bool
enableDataplane bool
exemplarSampler func() exemplar.Sampler
}
@@ -82,7 +81,6 @@ func New(
TimeInterval: timeInterval,
ID: settings.ID,
URL: settings.URL,
enableWideSeries: features.IsEnabled(featuremgmt.FlagPrometheusWideSeries),
enableDataplane: features.IsEnabled(featuremgmt.FlagPrometheusDataplane),
exemplarSampler: exemplarSampler,
}, nil
+16 -17
View File
@@ -66,7 +66,7 @@ func TestPrometheus_parseTimeSeriesResponse(t *testing.T) {
},
}
tctx, err := setup(true)
tctx, err := setup()
require.NoError(t, err)
qm := models.QueryModel{
@@ -132,7 +132,7 @@ func TestPrometheus_parseTimeSeriesResponse(t *testing.T) {
},
JSON: b,
}
tctx, err := setup(true)
tctx, err := setup()
require.NoError(t, err)
res, err := execute(tctx, query, result)
require.NoError(t, err)
@@ -143,7 +143,7 @@ func TestPrometheus_parseTimeSeriesResponse(t *testing.T) {
require.Equal(t, "Time", res[0].Fields[0].Name)
require.Len(t, res[0].Fields[1].Labels, 2)
require.Equal(t, "app=Application, tag2=tag2", res[0].Fields[1].Labels.String())
require.Equal(t, "legend Application", res[0].Fields[1].Name)
require.Equal(t, "legend Application", res[0].Name)
// Ensure the timestamps are UTC zoned
testValue := res[0].Fields[0].At(0)
@@ -181,7 +181,7 @@ func TestPrometheus_parseTimeSeriesResponse(t *testing.T) {
},
JSON: b,
}
tctx, err := setup(true)
tctx, err := setup()
require.NoError(t, err)
res, err := execute(tctx, query, result)
@@ -191,8 +191,8 @@ func TestPrometheus_parseTimeSeriesResponse(t *testing.T) {
require.Equal(t, time.Unix(1, 0).UTC(), res[0].Fields[0].At(0))
require.Equal(t, time.Unix(4, 0).UTC(), res[0].Fields[0].At(1))
require.Equal(t, res[0].Fields[1].Len(), 2)
require.Equal(t, float64(1), *res[0].Fields[1].At(0).(*float64))
require.Equal(t, float64(4), *res[0].Fields[1].At(1).(*float64))
require.Equal(t, float64(1), res[0].Fields[1].At(0).(float64))
require.Equal(t, float64(4), res[0].Fields[1].At(1).(float64))
})
t.Run("matrix response with from alerting missed data points should be parsed correctly", func(t *testing.T) {
@@ -226,7 +226,7 @@ func TestPrometheus_parseTimeSeriesResponse(t *testing.T) {
},
JSON: b,
}
tctx, err := setup(true)
tctx, err := setup()
require.NoError(t, err)
res, err := execute(tctx, query, result)
@@ -237,7 +237,7 @@ func TestPrometheus_parseTimeSeriesResponse(t *testing.T) {
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, "{app=\"Application\", tag2=\"tag2\"}", res[0].Fields[1].Name)
require.Equal(t, "{app=\"Application\", tag2=\"tag2\"}", res[0].Name)
})
t.Run("matrix response with NaN value should be changed to null", func(t *testing.T) {
@@ -270,13 +270,13 @@ func TestPrometheus_parseTimeSeriesResponse(t *testing.T) {
JSON: b,
}
tctx, err := setup(true)
tctx, err := setup()
require.NoError(t, err)
res, err := execute(tctx, query, result)
require.NoError(t, err)
require.Equal(t, "{app=\"Application\"}", res[0].Fields[1].Name)
require.True(t, math.IsNaN(*res[0].Fields[1].At(0).(*float64)))
require.Equal(t, "{app=\"Application\"}", res[0].Name)
require.True(t, math.IsNaN(res[0].Fields[1].At(0).(float64)))
})
t.Run("vector response should be parsed normally", func(t *testing.T) {
@@ -302,7 +302,7 @@ func TestPrometheus_parseTimeSeriesResponse(t *testing.T) {
query := backend.DataQuery{
JSON: b,
}
tctx, err := setup(true)
tctx, err := setup()
require.NoError(t, err)
res, err := execute(tctx, query, qr)
require.NoError(t, err)
@@ -314,7 +314,7 @@ func TestPrometheus_parseTimeSeriesResponse(t *testing.T) {
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, "legend Application", res[0].Fields[1].Name)
require.Equal(t, "legend Application", res[0].Name)
// Ensure the timestamps are UTC zoned
testValue := res[0].Fields[0].At(0)
@@ -343,7 +343,7 @@ func TestPrometheus_parseTimeSeriesResponse(t *testing.T) {
query := backend.DataQuery{
JSON: b,
}
tctx, err := setup(true)
tctx, err := setup()
require.NoError(t, err)
res, err := execute(tctx, query, qr)
require.NoError(t, err)
@@ -427,7 +427,7 @@ type testContext struct {
queryData *querydata.QueryData
}
func setup(wideFrames bool) (*testContext, error) {
func setup() (*testContext, error) {
tracer := tracing.InitializeTracerForTest()
httpProvider := &fakeHttpClientProvider{
opts: sdkhttpclient.Options{
@@ -443,8 +443,7 @@ func setup(wideFrames bool) (*testContext, error) {
JSONData: json.RawMessage(`{"timeInterval": "15s"}`),
}
features := &fakeFeatureToggles{flags: map[string]bool{"prometheusBufferedClient": false,
"prometheusWideSeries": wideFrames}}
features := &fakeFeatureToggles{flags: map[string]bool{"prometheusBufferedClient": false}}
opts, err := client.CreateTransportOptions(settings, &setting.Cfg{}, &logtest.Fake{})
if err != nil {
+4 -26
View File
@@ -30,9 +30,7 @@ func (s *QueryData) parseResponse(ctx context.Context, q *models.Query, res *htt
iter := jsoniter.Parse(jsoniter.ConfigDefault, res.Body, 1024)
r := converter.ReadPrometheusStyleResult(iter, converter.Options{
MatrixWideSeries: s.enableWideSeries,
VectorWideSeries: s.enableWideSeries,
Dataplane: s.enableDataplane,
Dataplane: s.enableDataplane,
})
// Add frame to attach metadata
@@ -42,13 +40,9 @@ func (s *QueryData) parseResponse(ctx context.Context, q *models.Query, res *htt
// The ExecutedQueryString can be viewed in QueryInspector in UI
for i, frame := range r.Frames {
if s.enableWideSeries {
addMetadataToWideFrame(q, frame)
} else {
addMetadataToMultiFrame(q, frame, s.enableDataplane)
if i == 0 {
frame.Meta.ExecutedQueryString = executedQueryString(q)
}
addMetadataToMultiFrame(q, frame, s.enableDataplane)
if i == 0 {
frame.Meta.ExecutedQueryString = executedQueryString(q)
}
}
@@ -135,22 +129,6 @@ func addMetadataToMultiFrame(q *models.Query, frame *data.Frame, enableDataplane
}
}
func addMetadataToWideFrame(q *models.Query, frame *data.Frame) {
if frame.Meta == nil {
frame.Meta = &data.FrameMeta{}
}
frame.Meta.ExecutedQueryString = executedQueryString(q)
if len(frame.Fields) < 2 {
return
}
frame.Fields[0].Config = &data.FieldConfig{Interval: float64(q.Step.Milliseconds())}
for _, f := range frame.Fields {
if f.Type() == data.FieldTypeFloat64 || f.Type() == data.FieldTypeNullableFloat64 {
f.Name = getName(q, f)
}
}
}
// this is based on the logic from the String() function in github.com/prometheus/common/model.go
func metricNameFromLabels(f *data.Field) string {
labels := f.Labels