@ -11,6 +11,8 @@ import (
"time"
"github.com/grafana/grafana-plugin-sdk-go/backend"
sdkdata "github.com/grafana/grafana-plugin-sdk-go/data"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@ -386,6 +388,77 @@ func TestTimeSeriesFilter(t *testing.T) {
require . True ( t , ok )
assert . Equal ( t , "114250375703598695" , labels [ "resource.label.instance_id" ] )
} )
t . Run ( "parseResponse successfully parses metadata for distribution valueType" , func ( t * testing . T ) {
t . Run ( "exponential bounds" , func ( t * testing . T ) {
data , err := loadTestFile ( "./test-data/3-series-response-distribution-exponential.json" )
require . NoError ( t , err )
assert . Equal ( t , 1 , len ( data . TimeSeries ) )
res := & backend . DataResponse { }
require . NoError ( t , ( & cloudMonitoringTimeSeriesFilter { GroupBys : [ ] string { "test_group_by" } } ) . parseResponse ( res , data , "test_query" ) )
require . NotNil ( t , res . Frames [ 0 ] . Meta )
assert . Equal ( t , sdkdata . FrameMeta {
ExecutedQueryString : "test_query" ,
Custom : map [ string ] interface { } {
"groupBys" : [ ] string { "test_group_by" } ,
"alignmentPeriod" : "" ,
"labels" : map [ string ] string {
"resource.label.project_id" : "grafana-prod" ,
"resource.type" : "https_lb_rule" ,
} ,
"perSeriesAligner" : "" ,
} ,
} , * res . Frames [ 0 ] . Meta )
} )
t . Run ( "explicit bounds" , func ( t * testing . T ) {
data , err := loadTestFile ( "./test-data/4-series-response-distribution-explicit.json" )
require . NoError ( t , err )
assert . Equal ( t , 1 , len ( data . TimeSeries ) )
res := & backend . DataResponse { }
require . NoError ( t , ( & cloudMonitoringTimeSeriesFilter { GroupBys : [ ] string { "test_group_by" } } ) . parseResponse ( res , data , "test_query" ) )
require . NotNil ( t , res . Frames [ 0 ] . Meta )
assert . Equal ( t , sdkdata . FrameMeta {
ExecutedQueryString : "test_query" ,
Custom : map [ string ] interface { } {
"groupBys" : [ ] string { "test_group_by" } ,
"alignmentPeriod" : "" ,
"labels" : map [ string ] string {
"resource.label.project_id" : "grafana-demo" ,
"resource.type" : "global" ,
} ,
"perSeriesAligner" : "" ,
} ,
} , * res . Frames [ 0 ] . Meta )
} )
t . Run ( "without series points" , func ( t * testing . T ) {
data , err := loadTestFile ( "./test-data/3-series-response-distribution-exponential.json" )
require . NoError ( t , err )
assert . Equal ( t , 1 , len ( data . TimeSeries ) )
res := & backend . DataResponse { }
require . NoError ( t , ( & cloudMonitoringTimeSeriesFilter { GroupBys : [ ] string { "test_group_by" } } ) . parseResponse ( res , data , "test_query" ) )
require . NotNil ( t , res . Frames [ 0 ] . Meta )
assert . Equal ( t , sdkdata . FrameMeta {
ExecutedQueryString : "test_query" ,
Custom : map [ string ] interface { } {
"groupBys" : [ ] string { "test_group_by" } ,
"alignmentPeriod" : "" ,
"labels" : map [ string ] string {
"resource.label.project_id" : "grafana-prod" ,
"resource.type" : "https_lb_rule" ,
} ,
"perSeriesAligner" : "" ,
} ,
} , * res . Frames [ 0 ] . Meta )
} )
} )
}
func loadTestFile ( path string ) ( cloudMonitoringResponse , error ) {