From e499e8850c02fe90651319f8a2da2f694d83d6c7 Mon Sep 17 00:00:00 2001 From: bergquist Date: Fri, 7 Oct 2016 11:33:17 +0200 Subject: [PATCH] fix(influxdb): fix for timerange --- pkg/tsdb/influxdb/models.go | 5 +---- pkg/tsdb/influxdb/query_builder.go | 10 +++++----- pkg/tsdb/influxdb/query_builder_test.go | 16 ++++++++-------- 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/pkg/tsdb/influxdb/models.go b/pkg/tsdb/influxdb/models.go index f45a14797d7..c0713c83183 100644 --- a/pkg/tsdb/influxdb/models.go +++ b/pkg/tsdb/influxdb/models.go @@ -1,7 +1,5 @@ package influxdb -import "github.com/grafana/grafana/pkg/tsdb" - type Query struct { Measurement string Policy string @@ -10,8 +8,7 @@ type Query struct { GroupBy []*QueryPart Selects []*Select - Interval string - TimeRange tsdb.TimeRange + Interval string } type Tag struct { diff --git a/pkg/tsdb/influxdb/query_builder.go b/pkg/tsdb/influxdb/query_builder.go index d6caf0ee906..faf6f051bbb 100644 --- a/pkg/tsdb/influxdb/query_builder.go +++ b/pkg/tsdb/influxdb/query_builder.go @@ -33,18 +33,18 @@ func (*QueryBuilder) Build(query *Query, queryContext *tsdb.QueryContext) (strin res := renderSelectors(query) res += renderMeasurement(query) res += renderWhereClause(query) - res += renderTimeFilter(query) + res += renderTimeFilter(query, queryContext) res += renderGroupBy(query) return res, nil } -func renderTimeFilter(query *Query) string { - from := "now() - " + query.TimeRange.From +func renderTimeFilter(query *Query, queryContext *tsdb.QueryContext) string { + from := "now() - " + queryContext.TimeRange.From to := "" - if query.TimeRange.To != "now" && query.TimeRange.To != "" { - to = " and time < now() - " + strings.Replace(query.TimeRange.To, "now-", "", 1) + if queryContext.TimeRange.To != "now" && queryContext.TimeRange.To != "" { + to = " and time < now() - " + strings.Replace(queryContext.TimeRange.To, "now-", "", 1) } return fmt.Sprintf("time > %s%s", from, to) diff --git a/pkg/tsdb/influxdb/query_builder_test.go b/pkg/tsdb/influxdb/query_builder_test.go index f237ad53ed9..26f587d479b 100644 --- a/pkg/tsdb/influxdb/query_builder_test.go +++ b/pkg/tsdb/influxdb/query_builder_test.go @@ -22,7 +22,7 @@ func TestInfluxdbQueryBuilder(t *testing.T) { tag2 := &Tag{Key: "hostname", Value: "server2", Operator: "=", Condition: "OR"} queryContext := &tsdb.QueryContext{ - TimeRange: tsdb.NewTimeRange("now-5m", "now"), + TimeRange: tsdb.NewTimeRange("5m", "now"), } Convey("can build simple query", func() { @@ -32,7 +32,6 @@ func TestInfluxdbQueryBuilder(t *testing.T) { Policy: "policy", GroupBy: []*QueryPart{groupBy1, groupBy2}, Interval: "10s", - TimeRange: tsdb.TimeRange{From: "5m"}, } rawQuery, err := builder.Build(query, queryContext) @@ -47,23 +46,24 @@ func TestInfluxdbQueryBuilder(t *testing.T) { GroupBy: []*QueryPart{groupBy1}, Tags: []*Tag{tag1, tag2}, Interval: "5s", - TimeRange: tsdb.TimeRange{From: "1h", To: "now-1m"}, } rawQuery, err := builder.Build(query, queryContext) So(err, ShouldBeNil) - So(rawQuery, ShouldEqual, `SELECT mean("value") FROM "cpu" WHERE "hostname" = 'server1' OR "hostname" = 'server2' AND time > now() - 1h and time < now() - 1m GROUP BY time(10s)`) + So(rawQuery, ShouldEqual, `SELECT mean("value") FROM "cpu" WHERE "hostname" = 'server1' OR "hostname" = 'server2' AND time > now() - 5m GROUP BY time(10s)`) }) Convey("can render time range", func() { + query := Query{} Convey("render from: 2h to now-1h", func() { - query := Query{TimeRange: tsdb.TimeRange{From: "2h", To: "now-1h"}} - So(renderTimeFilter(&query), ShouldEqual, "time > now() - 2h and time < now() - 1h") + query := Query{} + queryContext := &tsdb.QueryContext{TimeRange: tsdb.NewTimeRange("2h", "now-1h")} + So(renderTimeFilter(&query, queryContext), ShouldEqual, "time > now() - 2h and time < now() - 1h") }) Convey("render from: 10m", func() { - query := Query{TimeRange: tsdb.TimeRange{From: "10m"}} - So(renderTimeFilter(&query), ShouldEqual, "time > now() - 10m") + queryContext := &tsdb.QueryContext{TimeRange: tsdb.NewTimeRange("10m", "now")} + So(renderTimeFilter(&query, queryContext), ShouldEqual, "time > now() - 10m") }) }) })