testdata.go 1.1 KB

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