Skip to content

Commit

Permalink
Influx: fix flux panic. cherry picks for #26329 (#26331)
Browse files Browse the repository at this point in the history
* influx fix for 7.1.0

* don't upgrade sdk

* revert go mod changes
  • Loading branch information
ryantxu authored and dprokop committed Jul 16, 2020
1 parent 226cba9 commit 8101355
Show file tree
Hide file tree
Showing 7 changed files with 90 additions and 5 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ require (
github.com/gorilla/websocket v1.4.1
github.com/gosimple/slug v1.4.2
github.com/grafana/grafana-plugin-model v0.0.0-20190930120109-1fc953a61fb4
github.com/grafana/grafana-plugin-sdk-go v0.74.0
github.com/grafana/grafana-plugin-sdk-go v0.75.0
github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd
github.com/hashicorp/go-plugin v1.2.2
github.com/hashicorp/go-version v1.1.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -148,8 +148,8 @@ github.com/gosimple/slug v1.4.2 h1:jDmprx3q/9Lfk4FkGZtvzDQ9Cj9eAmsjzeQGp24PeiQ=
github.com/gosimple/slug v1.4.2/go.mod h1:ER78kgg1Mv0NQGlXiDe57DpCyfbNywXXZ9mIorhxAf0=
github.com/grafana/grafana-plugin-model v0.0.0-20190930120109-1fc953a61fb4 h1:SPdxCL9BChFTlyi0Khv64vdCW4TMna8+sxL7+Chx+Ag=
github.com/grafana/grafana-plugin-model v0.0.0-20190930120109-1fc953a61fb4/go.mod h1:nc0XxBzjeGcrMltCDw269LoWF9S8ibhgxolCdA1R8To=
github.com/grafana/grafana-plugin-sdk-go v0.74.0 h1:UdyX8dJ5HoM8JoUk6I7zIt7rFbjkAeAXVbqQRDxZ5Eg=
github.com/grafana/grafana-plugin-sdk-go v0.74.0/go.mod h1:NvxLzGkVhnoBKwzkst6CFfpMFKwAdIUZ1q8ssuLeF60=
github.com/grafana/grafana-plugin-sdk-go v0.75.0 h1:b0Ugpn88VNx17Q8MA1MsWkD3ddBEbRvFxzid+Nka3F0=
github.com/grafana/grafana-plugin-sdk-go v0.75.0/go.mod h1:NvxLzGkVhnoBKwzkst6CFfpMFKwAdIUZ1q8ssuLeF60=
github.com/grpc-ecosystem/go-grpc-middleware v1.2.0 h1:0IKlLyQ3Hs9nDaiK5cSHAGmcQEIC8l2Ts1u6x5Dfrqg=
github.com/grpc-ecosystem/go-grpc-middleware v1.2.0/go.mod h1:mJzapYve32yjrKlk9GbyCZHuPgZsrbyIbyKhSzOpg6s=
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
Expand Down
4 changes: 2 additions & 2 deletions pkg/tsdb/influxdb/flux/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,9 @@ func getConverter(t string) (*data.FieldConverter, error) {
case stringDatatype:
return &AnyToOptionalString, nil
case timeDatatypeRFC:
return &Int64ToOptionalInt64, nil
return &TimeToOptionalTime, nil
case timeDatatypeRFCNano:
return &Int64ToOptionalInt64, nil
return &TimeToOptionalTime, nil
case durationDatatype:
return &Int64ToOptionalInt64, nil
case doubleDatatype:
Expand Down
15 changes: 15 additions & 0 deletions pkg/tsdb/influxdb/flux/converters.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,21 @@ var BoolToOptionalBool = data.FieldConverter{
},
}

// TimeToOptionalTime optional int value
var TimeToOptionalTime = data.FieldConverter{
OutputFieldType: data.FieldTypeNullableTime,
Converter: func(v interface{}) (interface{}, error) {
if v == nil {
return nil, nil
}
val, ok := v.(time.Time)
if !ok { // or return some default value instead of erroring
return nil, fmt.Errorf("[time] expected time input but got type %T", v)
}
return &val, nil
},
}

// RFC3339StringToNullableTime .....
func RFC3339StringToNullableTime(s string) (*time.Time, error) {
if s == "" {
Expand Down
21 changes: 21 additions & 0 deletions pkg/tsdb/influxdb/flux/executor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ import (
"time"

"github.com/google/go-cmp/cmp"
"github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana-plugin-sdk-go/data"
"github.com/grafana/grafana-plugin-sdk-go/experimental"
"github.com/xorcare/pointer"

influxdb2 "github.com/influxdata/influxdb-client-go"
Expand Down Expand Up @@ -48,6 +50,16 @@ func (r *MockRunner) runQuery(ctx context.Context, q string) (*api.QueryTableRes
return client.QueryApi("x").Query(ctx, q)
}

func verifyGoldenResponse(name string) (*backend.DataResponse, error) {
runner := &MockRunner{
testDataPath: name + ".csv",
}

dr := ExecuteQuery(context.Background(), QueryModel{MaxDataPoints: 100}, runner, 50)
err := experimental.CheckGoldenDataResponse("./testdata/"+name+".golden.txt", &dr, true)
return &dr, err
}

func TestExecuteSimple(t *testing.T) {
ctx := context.Background()

Expand Down Expand Up @@ -273,3 +285,12 @@ func TestBuckets(t *testing.T) {
fmt.Println("----------------------")
})
}

func TestGoldenFiles(t *testing.T) {
t.Run("Renamed", func(t *testing.T) {
_, err := verifyGoldenResponse("renamed")
if err != nil {
t.Fatal(err.Error())
}
})
}
24 changes: 24 additions & 0 deletions pkg/tsdb/influxdb/flux/testdata/renamed.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#group,false,false,false,false
#datatype,string,long,double,dateTime:RFC3339
#default,_result,,,
,result,table,MeanAggregate,time
,,0,0,2020-07-14T03:26:31Z
,,0,0,2020-07-14T03:26:32Z
,,0,0,2020-07-14T03:26:35Z
,,0,0,2020-07-14T03:29:33Z
,,0,29.38586956521739,2020-07-14T04:59:41Z
,,0,0,2020-07-14T05:04:24Z
,,0,7.306756756756757,2020-07-14T05:04:25Z
,,0,3.633736559139785,2020-07-14T05:04:26Z
,,0,3.6143048128342246,2020-07-14T05:04:27Z
,,0,3.5950797872340425,2020-07-14T05:04:28Z
,,0,2.013780260707635,2020-07-14T10:14:01Z
,,0,9.1166908290378,2020-07-14T11:43:56Z
,,0,0,2020-07-14T11:47:43Z
,,0,0,2020-07-14T11:47:44Z
,,0,0,2020-07-14T11:47:45Z
,,0,0,2020-07-14T11:47:46Z
,,0,0,2020-07-14T11:47:47Z
,,0,1.5051560758082496,2020-07-14T11:47:48Z
,,0,2.022162706401263,2020-07-14T11:47:49Z
,,0,2.019892437805675,2020-07-14T11:47:50Z
25 changes: 25 additions & 0 deletions pkg/tsdb/influxdb/flux/testdata/renamed.golden.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
🌟 This was machine generated. Do not edit. 🌟

Frame[0] {}
Name:
Dimensions: 4 Fields by 20 Rows
+-----------------+----------------+---------------------+-------------------------------+
| Name: result | Name: table | Name: MeanAggregate | Name: time |
| Labels: | Labels: | Labels: | Labels: |
| Type: []*string | Type: []*int64 | Type: []*float64 | Type: []*time.Time |
+-----------------+----------------+---------------------+-------------------------------+
| _result | 0 | 0 | 2020-07-14 03:26:31 +0000 UTC |
| _result | 0 | 0 | 2020-07-14 03:26:32 +0000 UTC |
| _result | 0 | 0 | 2020-07-14 03:26:35 +0000 UTC |
| _result | 0 | 0 | 2020-07-14 03:29:33 +0000 UTC |
| _result | 0 | 29.38586956521739 | 2020-07-14 04:59:41 +0000 UTC |
| _result | 0 | 0 | 2020-07-14 05:04:24 +0000 UTC |
| _result | 0 | 7.306756756756757 | 2020-07-14 05:04:25 +0000 UTC |
| _result | 0 | 3.633736559139785 | 2020-07-14 05:04:26 +0000 UTC |
| _result | 0 | 3.6143048128342246 | 2020-07-14 05:04:27 +0000 UTC |
| ... | ... | ... | ... |
+-----------------+----------------+---------------------+-------------------------------+


====== TEST DATA RESPONSE (arrow base64) ======
FRAME=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

0 comments on commit 8101355

Please sign in to comment.