GCM: Time field naming (#94548)

* Name time field correctly

* Update tests

* Lint
pull/88318/head
Andreas Christou 9 months ago committed by GitHub
parent 032d0669cd
commit 7c79f8f7a5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 3
      pkg/tsdb/cloud-monitoring/time_series_filter.go
  2. 32
      pkg/tsdb/cloud-monitoring/time_series_filter_test.go
  3. 3
      pkg/tsdb/cloud-monitoring/time_series_query.go
  4. 22
      pkg/tsdb/cloud-monitoring/time_series_query_test.go

@ -37,6 +37,9 @@ func parseTimeSeriesResponse(queryRes *backend.DataResponse,
"groupBys": groupBys,
},
}
// Ensure the time field is named correctly
timeField := frame.Fields[0]
timeField.Name = data.TimeSeriesTimeFieldName
var err error
frames, err = appendFrames(frames, series, 0, defaultMetricName, seriesLabels, frame, query)

@ -11,7 +11,7 @@ import (
"time"
"github.com/grafana/grafana-plugin-sdk-go/backend"
sdkdata "github.com/grafana/grafana-plugin-sdk-go/data"
gdata "github.com/grafana/grafana-plugin-sdk-go/data"
"github.com/grafana/grafana/pkg/tsdb/cloud-monitoring/kinds/dataquery"
"github.com/stretchr/testify/assert"
@ -429,7 +429,7 @@ func TestTimeSeriesFilter(t *testing.T) {
frames := res.Frames
custom, ok := frames[0].Meta.Custom.(map[string]any)
require.True(t, ok)
labels, ok := custom["labels"].(sdkdata.Labels)
labels, ok := custom["labels"].(gdata.Labels)
require.True(t, ok)
assert.Equal(t, "114250375703598695", labels["resource.label.instance_id"])
})
@ -459,12 +459,12 @@ func TestTimeSeriesFilter(t *testing.T) {
require.NoError(t, (&cloudMonitoringTimeSeriesList{parameters: &dataquery.TimeSeriesList{GroupBys: []string{"test_group_by"}}}).parseResponse(res, data, "test_query", service.logger))
require.NotNil(t, res.Frames[0].Meta)
assert.Equal(t, sdkdata.FrameMeta{
assert.Equal(t, gdata.FrameMeta{
ExecutedQueryString: "test_query",
Custom: map[string]any{
"groupBys": []string{"test_group_by"},
"alignmentPeriod": "",
"labels": sdkdata.Labels{
"labels": gdata.Labels{
"resource.label.project_id": "grafana-prod",
"resource.type": "https_lb_rule",
},
@ -482,12 +482,12 @@ func TestTimeSeriesFilter(t *testing.T) {
require.NoError(t, (&cloudMonitoringTimeSeriesList{parameters: &dataquery.TimeSeriesList{GroupBys: []string{"test_group_by"}}}).parseResponse(res, data, "test_query", service.logger))
require.NotNil(t, res.Frames[0].Meta)
assert.Equal(t, sdkdata.FrameMeta{
assert.Equal(t, gdata.FrameMeta{
ExecutedQueryString: "test_query",
Custom: map[string]any{
"groupBys": []string{"test_group_by"},
"alignmentPeriod": "",
"labels": sdkdata.Labels{
"labels": gdata.Labels{
"resource.label.project_id": "grafana-demo",
"resource.type": "global",
},
@ -505,12 +505,12 @@ func TestTimeSeriesFilter(t *testing.T) {
require.NoError(t, (&cloudMonitoringTimeSeriesList{parameters: &dataquery.TimeSeriesList{GroupBys: []string{"test_group_by"}}}).parseResponse(res, data, "test_query", service.logger))
require.NotNil(t, res.Frames[0].Meta)
assert.Equal(t, sdkdata.FrameMeta{
assert.Equal(t, gdata.FrameMeta{
ExecutedQueryString: "test_query",
Custom: map[string]any{
"groupBys": []string{"test_group_by"},
"alignmentPeriod": "",
"labels": sdkdata.Labels{
"labels": gdata.Labels{
"resource.label.project_id": "grafana-prod",
"resource.type": "https_lb_rule",
},
@ -544,6 +544,22 @@ func TestTimeSeriesFilter(t *testing.T) {
assert.Contains(t, value, `zone=monitoring.regex.full_match("us-central1-a~")`)
})
})
t.Run("time field is appropriately named", func(t *testing.T) {
res := &backend.DataResponse{}
data, err := loadTestFile("./test-data/4-series-response-distribution-explicit.json")
require.NoError(t, err)
query := &cloudMonitoringTimeSeriesList{
parameters: &dataquery.TimeSeriesList{
ProjectName: "test-proj",
},
aliasBy: "",
}
err = query.parseResponse(res, data, "", service.logger)
require.NoError(t, err)
frames := res.Frames
assert.Equal(t, gdata.TimeSeriesTimeFieldName, frames[0].Fields[0].Name)
})
}
func loadTestFile(path string) (cloudMonitoringResponse, error) {

@ -75,6 +75,9 @@ func (timeSeriesQuery *cloudMonitoringTimeSeriesQuery) parseResponse(queryRes *b
return err
}
}
// Ensure the time field is named correctly
timeField := frame.Fields[0]
timeField.Name = data.TimeSeriesTimeFieldName
}
if len(response.TimeSeriesData) > 0 {
dl := timeSeriesQuery.buildDeepLink()

@ -148,4 +148,26 @@ func TestTimeSeriesQuery(t *testing.T) {
query := &cloudMonitoringTimeSeriesQuery{parameters: &dataquery.TimeSeriesQuery{GraphPeriod: strPtr("disabled")}}
assert.Equal(t, query.appendGraphPeriod(&backend.QueryDataRequest{Queries: []backend.DataQuery{{}}}), "")
})
t.Run("time field is appropriately named", func(t *testing.T) {
res := &backend.DataResponse{}
data, err := loadTestFile("./test-data/7-series-response-mql.json")
require.NoError(t, err)
fromStart := time.Date(2018, 3, 15, 13, 0, 0, 0, time.UTC).In(time.Local)
query := &cloudMonitoringTimeSeriesQuery{
parameters: &dataquery.TimeSeriesQuery{
ProjectName: "test-proj",
Query: "test-query",
},
aliasBy: "",
timeRange: backend.TimeRange{
From: fromStart,
To: fromStart.Add(34 * time.Minute),
},
}
err = query.parseResponse(res, data, "", service.logger)
require.NoError(t, err)
frames := res.Frames
assert.Equal(t, gdata.TimeSeriesTimeFieldName, frames[0].Fields[0].Name)
})
}

Loading…
Cancel
Save