query_part_test.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package influxdb
  2. import (
  3. "testing"
  4. "github.com/grafana/grafana/pkg/tsdb"
  5. . "github.com/smartystreets/goconvey/convey"
  6. )
  7. func TestInfluxdbQueryPart(t *testing.T) {
  8. Convey("Influxdb query parts", t, func() {
  9. queryContext := &tsdb.QueryContext{
  10. TimeRange: tsdb.NewTimeRange("5m", "now"),
  11. }
  12. Convey("render field ", func() {
  13. part, err := NewQueryPart("field", []string{"value"})
  14. So(err, ShouldBeNil)
  15. res := part.Render(queryContext, "value")
  16. So(res, ShouldEqual, `"value"`)
  17. })
  18. Convey("render nested part", func() {
  19. part, err := NewQueryPart("derivative", []string{"10s"})
  20. So(err, ShouldBeNil)
  21. res := part.Render(queryContext, "mean(value)")
  22. So(res, ShouldEqual, "derivative(mean(value), 10s)")
  23. })
  24. Convey("render bottom", func() {
  25. part, err := NewQueryPart("bottom", []string{"3"})
  26. So(err, ShouldBeNil)
  27. res := part.Render(queryContext, "value")
  28. So(res, ShouldEqual, "bottom(value, 3)")
  29. })
  30. Convey("render time", func() {
  31. part, err := NewQueryPart("time", []string{"$interval"})
  32. So(err, ShouldBeNil)
  33. res := part.Render(queryContext, "")
  34. So(res, ShouldEqual, "time(200ms)")
  35. })
  36. Convey("render spread", func() {
  37. part, err := NewQueryPart("spread", []string{})
  38. So(err, ShouldBeNil)
  39. res := part.Render(queryContext, "value")
  40. So(res, ShouldEqual, `spread(value)`)
  41. })
  42. Convey("render suffix", func() {
  43. part, err := NewQueryPart("math", []string{"/ 100"})
  44. So(err, ShouldBeNil)
  45. res := part.Render(queryContext, "mean(value)")
  46. So(res, ShouldEqual, "mean(value) / 100")
  47. })
  48. Convey("render alias", func() {
  49. part, err := NewQueryPart("alias", []string{"test"})
  50. So(err, ShouldBeNil)
  51. res := part.Render(queryContext, "mean(value)")
  52. So(res, ShouldEqual, `mean(value) AS "test"`)
  53. })
  54. })
  55. }