|
|
@@ -6,8 +6,6 @@ import (
|
|
|
"testing"
|
|
|
"time"
|
|
|
|
|
|
- "github.com/grafana/grafana/pkg/components/simplejson"
|
|
|
- "github.com/grafana/grafana/pkg/models"
|
|
|
"github.com/grafana/grafana/pkg/tsdb"
|
|
|
. "github.com/smartystreets/goconvey/convey"
|
|
|
)
|
|
|
@@ -15,18 +13,7 @@ import (
|
|
|
func TestMacroEngine(t *testing.T) {
|
|
|
Convey("MacroEngine", t, func() {
|
|
|
engine := NewPostgresMacroEngine()
|
|
|
- // datasource with no pg version specified
|
|
|
- ds := &models.DataSource{Id: 1, Type: "postgres", JsonData: simplejson.New()}
|
|
|
- // datasource with postgres 8.0 configured
|
|
|
- ds_80 := &models.DataSource{Id: 2, Type: "postgres", JsonData: simplejson.New()}
|
|
|
- ds_80.JsonData.Set("postgresVersion", 80000)
|
|
|
- // datasource with postgres 8.1 configured
|
|
|
- ds_81 := &models.DataSource{Id: 3, Type: "postgres", JsonData: simplejson.New()}
|
|
|
- ds_81.JsonData.Set("postgresVersion", 80100)
|
|
|
-
|
|
|
- query := &tsdb.Query{RefId: "A", DataSource: ds}
|
|
|
- query_80 := &tsdb.Query{RefId: "A", DataSource: ds_80}
|
|
|
- query_81 := &tsdb.Query{RefId: "A", DataSource: ds_81}
|
|
|
+ query := &tsdb.Query{}
|
|
|
|
|
|
Convey("Given a time range between 2018-04-12 00:00 and 2018-04-12 00:05", func() {
|
|
|
from := time.Date(2018, 4, 12, 18, 0, 0, 0, time.UTC)
|
|
|
@@ -51,21 +38,7 @@ func TestMacroEngine(t *testing.T) {
|
|
|
sql, err := engine.Interpolate(query, timeRange, "WHERE $__timeFilter(time_column)")
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
|
- So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN 'epoch'::timestamptz + %d * '1s'::interval AND 'epoch'::timestamptz + %d * '1s'::interval", from.Unix(), to.Unix()))
|
|
|
- })
|
|
|
-
|
|
|
- Convey("interpolate __timeFilter function for postgres 8.0", func() {
|
|
|
- sql, err := engine.Interpolate(query_80, timeRange, "WHERE $__timeFilter(time_column)")
|
|
|
- So(err, ShouldBeNil)
|
|
|
-
|
|
|
- So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN 'epoch'::timestamptz + %d * '1s'::interval AND 'epoch'::timestamptz + %d * '1s'::interval", from.Unix(), to.Unix()))
|
|
|
- })
|
|
|
-
|
|
|
- Convey("interpolate __timeFilter function for postgres 8.1", func() {
|
|
|
- sql, err := engine.Interpolate(query_81, timeRange, "WHERE $__timeFilter(time_column)")
|
|
|
- So(err, ShouldBeNil)
|
|
|
-
|
|
|
- So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN to_timestamp(%d) AND to_timestamp(%d)", from.Unix(), to.Unix()))
|
|
|
+ So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN '%s' AND '%s'", from.Format(time.RFC3339), to.Format(time.RFC3339)))
|
|
|
})
|
|
|
|
|
|
Convey("interpolate __timeFrom function", func() {
|
|
|
@@ -129,21 +102,7 @@ func TestMacroEngine(t *testing.T) {
|
|
|
sql, err := engine.Interpolate(query, timeRange, "WHERE $__timeFilter(time_column)")
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
|
- So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN 'epoch'::timestamptz + %d * '1s'::interval AND 'epoch'::timestamptz + %d * '1s'::interval", from.Unix(), to.Unix()))
|
|
|
- })
|
|
|
-
|
|
|
- Convey("interpolate __timeFilter function for 8.0", func() {
|
|
|
- sql, err := engine.Interpolate(query_80, timeRange, "WHERE $__timeFilter(time_column)")
|
|
|
- So(err, ShouldBeNil)
|
|
|
-
|
|
|
- So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN 'epoch'::timestamptz + %d * '1s'::interval AND 'epoch'::timestamptz + %d * '1s'::interval", from.Unix(), to.Unix()))
|
|
|
- })
|
|
|
-
|
|
|
- Convey("interpolate __timeFilter function for 8.1", func() {
|
|
|
- sql, err := engine.Interpolate(query_81, timeRange, "WHERE $__timeFilter(time_column)")
|
|
|
- So(err, ShouldBeNil)
|
|
|
-
|
|
|
- So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN to_timestamp(%d) AND to_timestamp(%d)", from.Unix(), to.Unix()))
|
|
|
+ So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN '%s' AND '%s'", from.Format(time.RFC3339), to.Format(time.RFC3339)))
|
|
|
})
|
|
|
|
|
|
Convey("interpolate __timeFrom function", func() {
|
|
|
@@ -191,21 +150,7 @@ func TestMacroEngine(t *testing.T) {
|
|
|
sql, err := engine.Interpolate(query, timeRange, "WHERE $__timeFilter(time_column)")
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
|
- So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN 'epoch'::timestamptz + %d * '1s'::interval AND 'epoch'::timestamptz + %d * '1s'::interval", from.Unix(), to.Unix()))
|
|
|
- })
|
|
|
-
|
|
|
- Convey("interpolate __timeFilter function for 8.0", func() {
|
|
|
- sql, err := engine.Interpolate(query_80, timeRange, "WHERE $__timeFilter(time_column)")
|
|
|
- So(err, ShouldBeNil)
|
|
|
-
|
|
|
- So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN 'epoch'::timestamptz + %d * '1s'::interval AND 'epoch'::timestamptz + %d * '1s'::interval", from.Unix(), to.Unix()))
|
|
|
- })
|
|
|
-
|
|
|
- Convey("interpolate __timeFilter function for 8.1", func() {
|
|
|
- sql, err := engine.Interpolate(query_81, timeRange, "WHERE $__timeFilter(time_column)")
|
|
|
- So(err, ShouldBeNil)
|
|
|
-
|
|
|
- So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN to_timestamp(%d) AND to_timestamp(%d)", from.Unix(), to.Unix()))
|
|
|
+ So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN '%s' AND '%s'", from.Format(time.RFC3339), to.Format(time.RFC3339)))
|
|
|
})
|
|
|
|
|
|
Convey("interpolate __timeFrom function", func() {
|