SQL datasources: Consistent interval handling (#78517)
sql: apply the received interval-value
This commit is contained in:
@@ -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("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}
|
||||
|
||||
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, "10m $__timeGroupAlias(time,10m) 600000", sql)
|
||||
})
|
||||
|
||||
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, "4s $__timeGroupAlias(time,4s) 4000", sql)
|
||||
})
|
||||
|
||||
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, "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("{}")}
|
||||
|
||||
t.Run("interpolate $__interval", func(t *testing.T) {
|
||||
sql, err := Interpolate(query, timeRange, "", "select $__interval ")
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "select 1m ", sql)
|
||||
})
|
||||
|
||||
t.Run("interpolate $__interval in $__timeGroup", func(t *testing.T) {
|
||||
sql, err := Interpolate(query, timeRange, "", "select $__timeGroupAlias(time,$__interval)")
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "select $__timeGroupAlias(time,1m)", sql)
|
||||
})
|
||||
|
||||
t.Run("interpolate $__interval_ms", func(t *testing.T) {
|
||||
sql, err := Interpolate(query, timeRange, "", "select $__interval_ms ")
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "select 60000 ", sql)
|
||||
})
|
||||
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()")
|
||||
|
||||
Reference in New Issue
Block a user