|
|
|
|
@ -19,29 +19,40 @@ import ( |
|
|
|
|
func TestSQLEngine(t *testing.T) { |
|
|
|
|
dt := time.Date(2018, 3, 14, 21, 20, 6, int(527345*time.Microsecond), time.UTC) |
|
|
|
|
|
|
|
|
|
t.Run("Given a time range between 2018-04-12 00:00 and 2018-04-12 00:05", func(t *testing.T) { |
|
|
|
|
t.Run("Handle interpolating $__interval and $__interval_ms", func(t *testing.T) { |
|
|
|
|
from := time.Date(2018, 4, 12, 18, 0, 0, 0, time.UTC) |
|
|
|
|
to := from.Add(5 * time.Minute) |
|
|
|
|
timeRange := backend.TimeRange{From: from, To: to} |
|
|
|
|
query := backend.DataQuery{JSON: []byte("{}")} |
|
|
|
|
|
|
|
|
|
t.Run("interpolate $__interval", func(t *testing.T) { |
|
|
|
|
sql, err := Interpolate(query, timeRange, "", "select $__interval ") |
|
|
|
|
text := "$__interval $__timeGroupAlias(time,$__interval) $__interval_ms" |
|
|
|
|
|
|
|
|
|
t.Run("interpolate 10 minutes $__interval", func(t *testing.T) { |
|
|
|
|
query := backend.DataQuery{JSON: []byte("{}"), MaxDataPoints: 1500, Interval: time.Minute * 10} |
|
|
|
|
sql, err := Interpolate(query, timeRange, "", text) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
require.Equal(t, "select 1m ", sql) |
|
|
|
|
require.Equal(t, "10m $__timeGroupAlias(time,10m) 600000", sql) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("interpolate $__interval in $__timeGroup", func(t *testing.T) { |
|
|
|
|
sql, err := Interpolate(query, timeRange, "", "select $__timeGroupAlias(time,$__interval)") |
|
|
|
|
t.Run("interpolate 4seconds $__interval", func(t *testing.T) { |
|
|
|
|
query := backend.DataQuery{JSON: []byte("{}"), MaxDataPoints: 1500, Interval: time.Second * 4} |
|
|
|
|
sql, err := Interpolate(query, timeRange, "", text) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
require.Equal(t, "select $__timeGroupAlias(time,1m)", sql) |
|
|
|
|
require.Equal(t, "4s $__timeGroupAlias(time,4s) 4000", sql) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("interpolate $__interval_ms", func(t *testing.T) { |
|
|
|
|
sql, err := Interpolate(query, timeRange, "", "select $__interval_ms ") |
|
|
|
|
t.Run("interpolate 200 milliseconds $__interval", func(t *testing.T) { |
|
|
|
|
query := backend.DataQuery{JSON: []byte("{}"), MaxDataPoints: 1500, Interval: time.Millisecond * 200} |
|
|
|
|
sql, err := Interpolate(query, timeRange, "", text) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
require.Equal(t, "select 60000 ", sql) |
|
|
|
|
require.Equal(t, "200ms $__timeGroupAlias(time,200ms) 200", sql) |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("Given a time range between 2018-04-12 00:00 and 2018-04-12 00:05", func(t *testing.T) { |
|
|
|
|
from := time.Date(2018, 4, 12, 18, 0, 0, 0, time.UTC) |
|
|
|
|
to := from.Add(5 * time.Minute) |
|
|
|
|
timeRange := backend.TimeRange{From: from, To: to} |
|
|
|
|
query := backend.DataQuery{JSON: []byte("{}"), MaxDataPoints: 1500, Interval: time.Second * 60} |
|
|
|
|
|
|
|
|
|
t.Run("interpolate __unixEpochFrom function", func(t *testing.T) { |
|
|
|
|
sql, err := Interpolate(query, timeRange, "", "select $__unixEpochFrom()") |
|
|
|
|
|