testdata.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package testdata
  2. import (
  3. "github.com/grafana/grafana/pkg/log"
  4. "github.com/grafana/grafana/pkg/tsdb"
  5. )
  6. type TestDataExecutor struct {
  7. *tsdb.DataSourceInfo
  8. log log.Logger
  9. }
  10. func NewTestDataExecutor(dsInfo *tsdb.DataSourceInfo) tsdb.Executor {
  11. return &TestDataExecutor{
  12. DataSourceInfo: dsInfo,
  13. log: log.New("tsdb.testdata"),
  14. }
  15. }
  16. func init() {
  17. tsdb.RegisterExecutor("grafana-testdata-datasource", NewTestDataExecutor)
  18. }
  19. func (e *TestDataExecutor) Execute(queries tsdb.QuerySlice, context *tsdb.QueryContext) *tsdb.BatchResult {
  20. result := &tsdb.BatchResult{}
  21. result.QueryResults = make(map[string]*tsdb.QueryResult)
  22. for _, query := range queries {
  23. scenarioId := query.Model.Get("scenarioId").MustString("random_walk")
  24. if scenario, exist := ScenarioRegistry[scenarioId]; exist {
  25. result.QueryResults[query.RefId] = scenario.Handler(query, context)
  26. result.QueryResults[query.RefId].RefId = query.RefId
  27. } else {
  28. e.log.Error("Scenario not found", "scenarioId", scenarioId)
  29. }
  30. }
  31. return result
  32. }