Convert annotations to dataframes (#31400)

* Stop using transformation to tables

* Update datasource.ts to parse from dataframes

* Add test on transformToDataframe func

* Remove parseResponse and do the work inside parseToAnnotations method

* Name the dataframe after the RefID

* Small fix when mapping to annotation

* Add tests in annotation_query_test.go class

* Small fix in loop iteration

* Change for loop signature
This commit is contained in:
Dimitris Sotirakis
2021-02-25 18:29:17 +02:00
committed by GitHub
parent 27c143ef9b
commit 554055e39d
4 changed files with 77 additions and 30 deletions
@@ -10,18 +10,51 @@ import (
)
func TestCloudMonitoringExecutor_parseToAnnotations(t *testing.T) {
data, err := loadTestFile("./test-data/2-series-response-no-agg.json")
d, err := loadTestFile("./test-data/2-series-response-no-agg.json")
require.NoError(t, err)
require.Len(t, data.TimeSeries, 3)
require.Len(t, d.TimeSeries, 3)
res := &tsdb.QueryResult{Meta: simplejson.New(), RefId: "annotationQuery"}
query := &cloudMonitoringTimeSeriesFilter{}
err = query.parseToAnnotations(res, data, "atitle {{metric.label.instance_name}} {{metric.value}}", "atext {{resource.label.zone}}", "atag")
err = query.parseToAnnotations(res, d, "atitle {{metric.label.instance_name}} {{metric.value}}", "atext {{resource.label.zone}}", "atag")
require.NoError(t, err)
require.Len(t, res.Tables, 1)
require.Len(t, res.Tables[0].Rows, 9)
assert.Equal(t, "atitle collector-asia-east-1 9.856650", res.Tables[0].Rows[0][1])
assert.Equal(t, "atext asia-east1-a", res.Tables[0].Rows[0][3])
decoded, _ := res.Dataframes.Decoded()
require.Len(t, decoded, 3)
assert.Equal(t, "title", decoded[0].Fields[1].Name)
assert.Equal(t, "tags", decoded[0].Fields[2].Name)
assert.Equal(t, "text", decoded[0].Fields[3].Name)
}
func TestCloudMonitoringExecutor_parseToAnnotations_emptyTimeSeries(t *testing.T) {
res := &tsdb.QueryResult{Meta: simplejson.New(), RefId: "annotationQuery"}
query := &cloudMonitoringTimeSeriesFilter{}
response := cloudMonitoringResponse{
TimeSeries: []timeSeries{},
}
err := query.parseToAnnotations(res, response, "atitle", "atext", "atag")
require.NoError(t, err)
decoded, _ := res.Dataframes.Decoded()
require.Len(t, decoded, 0)
}
func TestCloudMonitoringExecutor_parseToAnnotations_noPointsInSeries(t *testing.T) {
res := &tsdb.QueryResult{Meta: simplejson.New(), RefId: "annotationQuery"}
query := &cloudMonitoringTimeSeriesFilter{}
response := cloudMonitoringResponse{
TimeSeries: []timeSeries{
{Points: nil},
},
}
err := query.parseToAnnotations(res, response, "atitle", "atext", "atag")
require.NoError(t, err)
decoded, _ := res.Dataframes.Decoded()
require.Len(t, decoded, 0)
}