tsdb_test.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package tsdb
  2. import (
  3. "context"
  4. "testing"
  5. "github.com/grafana/grafana/pkg/models"
  6. . "github.com/smartystreets/goconvey/convey"
  7. )
  8. func TestMetricQuery(t *testing.T) {
  9. Convey("When executing request with one query", t, func() {
  10. req := &TsdbQuery{
  11. Queries: []*Query{
  12. {RefId: "A", DataSource: &models.DataSource{Id: 1, Type: "test"}},
  13. },
  14. }
  15. fakeExecutor := registerFakeExecutor()
  16. fakeExecutor.Return("A", TimeSeriesSlice{&TimeSeries{Name: "argh"}})
  17. res, err := HandleRequest(context.TODO(), &models.DataSource{Id: 1, Type: "test"}, req)
  18. So(err, ShouldBeNil)
  19. Convey("Should return query results", func() {
  20. So(res.Results["A"].Series, ShouldNotBeEmpty)
  21. So(res.Results["A"].Series[0].Name, ShouldEqual, "argh")
  22. })
  23. })
  24. Convey("When executing one request with two queries from same data source", t, func() {
  25. req := &TsdbQuery{
  26. Queries: []*Query{
  27. {RefId: "A", DataSource: &models.DataSource{Id: 1, Type: "test"}},
  28. {RefId: "B", DataSource: &models.DataSource{Id: 1, Type: "test"}},
  29. },
  30. }
  31. fakeExecutor := registerFakeExecutor()
  32. fakeExecutor.Return("A", TimeSeriesSlice{&TimeSeries{Name: "argh"}})
  33. fakeExecutor.Return("B", TimeSeriesSlice{&TimeSeries{Name: "barg"}})
  34. res, err := HandleRequest(context.TODO(), &models.DataSource{Id: 1, Type: "test"}, req)
  35. So(err, ShouldBeNil)
  36. Convey("Should return query results", func() {
  37. So(len(res.Results), ShouldEqual, 2)
  38. So(res.Results["B"].Series[0].Name, ShouldEqual, "barg")
  39. })
  40. })
  41. Convey("When query uses data source of unknown type", t, func() {
  42. req := &TsdbQuery{
  43. Queries: []*Query{
  44. {RefId: "A", DataSource: &models.DataSource{Id: 1, Type: "asdasdas"}},
  45. },
  46. }
  47. _, err := HandleRequest(context.TODO(), &models.DataSource{Id: 12, Type: "testjughjgjg"}, req)
  48. So(err, ShouldNotBeNil)
  49. })
  50. }
  51. func registerFakeExecutor() *FakeExecutor {
  52. executor, _ := NewFakeExecutor(nil)
  53. RegisterTsdbQueryEndpoint("test", func(dsInfo *models.DataSource) (TsdbQueryEndpoint, error) {
  54. return executor, nil
  55. })
  56. return executor
  57. }