2017-12-03 12:56:21 -06:00
package mssql
import (
"testing"
"github.com/grafana/grafana/pkg/tsdb"
. "github.com/smartystreets/goconvey/convey"
)
func TestMacroEngine ( t * testing . T ) {
Convey ( "MacroEngine" , t , func ( ) {
engine := & MsSqlMacroEngine { }
timeRange := & tsdb . TimeRange { From : "5m" , To : "now" }
2018-03-13 10:03:02 -05:00
query := & tsdb . Query { }
2017-12-03 12:56:21 -06:00
Convey ( "interpolate __time function" , func ( ) {
2018-03-13 10:03:02 -05:00
sql , err := engine . Interpolate ( query , nil , "select $__time(time_column)" )
2017-12-03 12:56:21 -06:00
So ( err , ShouldBeNil )
2017-12-12 14:43:24 -06:00
So ( sql , ShouldEqual , "select time_column AS time" )
2017-12-03 12:56:21 -06:00
} )
2017-12-12 14:43:24 -06:00
Convey ( "interpolate __utcTime function" , func ( ) {
2018-03-13 10:03:02 -05:00
sql , err := engine . Interpolate ( query , nil , "select $__utcTime(time_column)" )
2017-12-03 12:56:21 -06:00
So ( err , ShouldBeNil )
2017-12-12 14:43:24 -06:00
So ( sql , ShouldEqual , "select DATEADD(second, DATEDIFF(second,GETDATE(),GETUTCDATE()), time_column) AS time" )
} )
Convey ( "interpolate __timeEpoch function" , func ( ) {
2018-03-13 10:03:02 -05:00
sql , err := engine . Interpolate ( query , nil , "select $__timeEpoch(time_column)" )
2017-12-12 14:43:24 -06:00
So ( err , ShouldBeNil )
So ( sql , ShouldEqual , "select DATEDIFF(second, {d '1970-01-01'}, DATEADD(second, DATEDIFF(second,GETDATE(),GETUTCDATE()), time_column) ) AS time" )
} )
Convey ( "interpolate __timeEpoch function wrapped in aggregation" , func ( ) {
2018-03-13 10:03:02 -05:00
sql , err := engine . Interpolate ( query , nil , "select min($__timeEpoch(time_column))" )
2017-12-12 14:43:24 -06:00
So ( err , ShouldBeNil )
So ( sql , ShouldEqual , "select min(DATEDIFF(second, {d '1970-01-01'}, DATEADD(second, DATEDIFF(second,GETDATE(),GETUTCDATE()), time_column) ) AS time)" )
2017-12-03 12:56:21 -06:00
} )
Convey ( "interpolate __timeFilter function" , func ( ) {
2018-03-13 10:03:02 -05:00
sql , err := engine . Interpolate ( query , timeRange , "WHERE $__timeFilter(time_column)" )
2017-12-03 12:56:21 -06:00
So ( err , ShouldBeNil )
So ( sql , ShouldEqual , "WHERE time_column >= DATEADD(s, 18446744066914186738+DATEDIFF(second,GETUTCDATE(),GETDATE()), '1970-01-01') AND time_column <= DATEADD(s, 18446744066914187038+DATEDIFF(second,GETUTCDATE(),GETDATE()), '1970-01-01')" )
} )
2018-03-13 16:49:49 -05:00
Convey ( "interpolate __timeGroup function" , func ( ) {
sql , err := engine . Interpolate ( query , timeRange , "GROUP BY $__timeGroup(time_column,'5m')" )
So ( err , ShouldBeNil )
So ( sql , ShouldEqual , "GROUP BY cast(cast(DATEDIFF(second, {d '1970-01-01'}, DATEADD(second, DATEDIFF(second,GETDATE(),GETUTCDATE()), time_column))/300 as int)*300 as int)" )
} )
Convey ( "interpolate __timeGroup function with spaces around arguments" , func ( ) {
sql , err := engine . Interpolate ( query , timeRange , "GROUP BY $__timeGroup(time_column , '5m')" )
So ( err , ShouldBeNil )
So ( sql , ShouldEqual , "GROUP BY cast(cast(DATEDIFF(second, {d '1970-01-01'}, DATEADD(second, DATEDIFF(second,GETDATE(),GETUTCDATE()), time_column))/300 as int)*300 as int)" )
} )
2017-12-03 12:56:21 -06:00
Convey ( "interpolate __timeFrom function" , func ( ) {
2018-03-13 10:03:02 -05:00
sql , err := engine . Interpolate ( query , timeRange , "select $__timeFrom(time_column)" )
2017-12-03 12:56:21 -06:00
So ( err , ShouldBeNil )
So ( sql , ShouldEqual , "select DATEADD(second, 18446744066914186738+DATEDIFF(second,GETUTCDATE(),GETDATE()), '1970-01-01')" )
} )
Convey ( "interpolate __timeTo function" , func ( ) {
2018-03-13 10:03:02 -05:00
sql , err := engine . Interpolate ( query , timeRange , "select $__timeTo(time_column)" )
2017-12-03 12:56:21 -06:00
So ( err , ShouldBeNil )
So ( sql , ShouldEqual , "select DATEADD(second, 18446744066914187038+DATEDIFF(second,GETUTCDATE(),GETDATE()), '1970-01-01')" )
} )
Convey ( "interpolate __unixEpochFilter function" , func ( ) {
2018-03-13 10:03:02 -05:00
sql , err := engine . Interpolate ( query , timeRange , "select $__unixEpochFilter(18446744066914186738)" )
2017-12-03 12:56:21 -06:00
So ( err , ShouldBeNil )
So ( sql , ShouldEqual , "select 18446744066914186738 >= 18446744066914186738 AND 18446744066914186738 <= 18446744066914187038" )
} )
Convey ( "interpolate __unixEpochFrom function" , func ( ) {
2018-03-13 10:03:02 -05:00
sql , err := engine . Interpolate ( query , timeRange , "select $__unixEpochFrom()" )
2017-12-03 12:56:21 -06:00
So ( err , ShouldBeNil )
So ( sql , ShouldEqual , "select 18446744066914186738" )
} )
Convey ( "interpolate __unixEpochTo function" , func ( ) {
2018-03-13 10:03:02 -05:00
sql , err := engine . Interpolate ( query , timeRange , "select $__unixEpochTo()" )
2017-12-03 12:56:21 -06:00
So ( err , ShouldBeNil )
So ( sql , ShouldEqual , "select 18446744066914187038" )
} )
} )
}