macros_test.go 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package mysql
  2. import (
  3. "testing"
  4. "github.com/grafana/grafana/pkg/tsdb"
  5. . "github.com/smartystreets/goconvey/convey"
  6. )
  7. func TestMacroEngine(t *testing.T) {
  8. Convey("MacroEngine", t, func() {
  9. Convey("interpolate __time function", func() {
  10. engine := &MySqlMacroEngine{}
  11. sql, err := engine.Interpolate("select $__time(time_column)")
  12. So(err, ShouldBeNil)
  13. So(sql, ShouldEqual, "select UNIX_TIMESTAMP(time_column) as time_sec")
  14. })
  15. Convey("interpolate __time function wrapped in aggregation", func() {
  16. engine := &MySqlMacroEngine{}
  17. sql, err := engine.Interpolate("select min($__time(time_column))")
  18. So(err, ShouldBeNil)
  19. So(sql, ShouldEqual, "select min(UNIX_TIMESTAMP(time_column) as time_sec)")
  20. })
  21. Convey("interpolate __timeFilter function", func() {
  22. engine := &MySqlMacroEngine{
  23. TimeRange: &tsdb.TimeRange{From: "5m", To: "now"},
  24. }
  25. sql, err := engine.Interpolate("WHERE $__timeFilter(time_column)")
  26. So(err, ShouldBeNil)
  27. So(sql, ShouldEqual, "WHERE time_column >= FROM_UNIXTIME(18446744066914186738) AND time_column <= FROM_UNIXTIME(18446744066914187038)")
  28. })
  29. Convey("interpolate __timeFrom function", func() {
  30. engine := &MySqlMacroEngine{
  31. TimeRange: &tsdb.TimeRange{From: "5m", To: "now"},
  32. }
  33. sql, err := engine.Interpolate("select $__timeFrom(time_column)")
  34. So(err, ShouldBeNil)
  35. So(sql, ShouldEqual, "select FROM_UNIXTIME(18446744066914186738)")
  36. })
  37. Convey("interpolate __timeTo function", func() {
  38. engine := &MySqlMacroEngine{
  39. TimeRange: &tsdb.TimeRange{From: "5m", To: "now"},
  40. }
  41. sql, err := engine.Interpolate("select $__timeTo(time_column)")
  42. So(err, ShouldBeNil)
  43. So(sql, ShouldEqual, "select FROM_UNIXTIME(18446744066914187038)")
  44. })
  45. Convey("interpolate __unixEpochFilter function", func() {
  46. engine := &MySqlMacroEngine{
  47. TimeRange: &tsdb.TimeRange{From: "5m", To: "now"},
  48. }
  49. sql, err := engine.Interpolate("select $__unixEpochFilter(18446744066914186738)")
  50. So(err, ShouldBeNil)
  51. So(sql, ShouldEqual, "select 18446744066914186738 >= 18446744066914186738 AND 18446744066914186738 <= 18446744066914187038")
  52. })
  53. Convey("interpolate __unixEpochFrom function", func() {
  54. engine := &MySqlMacroEngine{
  55. TimeRange: &tsdb.TimeRange{From: "5m", To: "now"},
  56. }
  57. sql, err := engine.Interpolate("select $__unixEpochFrom()")
  58. So(err, ShouldBeNil)
  59. So(sql, ShouldEqual, "select 18446744066914186738")
  60. })
  61. Convey("interpolate __unixEpochTo function", func() {
  62. engine := &MySqlMacroEngine{
  63. TimeRange: &tsdb.TimeRange{From: "5m", To: "now"},
  64. }
  65. sql, err := engine.Interpolate("select $__unixEpochTo()")
  66. So(err, ShouldBeNil)
  67. So(sql, ShouldEqual, "select 18446744066914187038")
  68. })
  69. })
  70. }