Alerting: Simplify eval.Evaluator interface (#51463)

* remove ExpressionService from argument list of Evaluator's methods
This commit is contained in:
Yuriy Tseretyan
2022-06-27 17:40:44 -04:00
committed by GitHub
parent bf255965a2
commit 94e709fdcb
9 changed files with 66 additions and 73 deletions
+6 -9
View File
@@ -10,7 +10,6 @@ import (
"github.com/grafana/grafana/pkg/bus"
"github.com/grafana/grafana/pkg/events"
"github.com/grafana/grafana/pkg/expr"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/services/alerting"
@@ -83,11 +82,10 @@ type schedule struct {
evaluator eval.Evaluator
ruleStore store.RuleStore
instanceStore store.InstanceStore
adminConfigStore store.AdminConfigurationStore
orgStore store.OrgStore
expressionService *expr.Service
ruleStore store.RuleStore
instanceStore store.InstanceStore
adminConfigStore store.AdminConfigurationStore
orgStore store.OrgStore
stateManager *state.Manager
@@ -136,7 +134,7 @@ type SchedulerCfg struct {
}
// NewScheduler returns a new schedule.
func NewScheduler(cfg SchedulerCfg, expressionService *expr.Service, appURL *url.URL, stateManager *state.Manager, bus bus.Bus) *schedule {
func NewScheduler(cfg SchedulerCfg, appURL *url.URL, stateManager *state.Manager, bus bus.Bus) *schedule {
ticker := alerting.NewTicker(cfg.C, cfg.BaseInterval, cfg.Metrics.Ticker)
sch := schedule{
@@ -152,7 +150,6 @@ func NewScheduler(cfg SchedulerCfg, expressionService *expr.Service, appURL *url
ruleStore: cfg.RuleStore,
instanceStore: cfg.InstanceStore,
orgStore: cfg.OrgStore,
expressionService: expressionService,
adminConfigStore: cfg.AdminConfigStore,
multiOrgNotifier: cfg.MultiOrgNotifier,
metrics: cfg.Metrics,
@@ -628,7 +625,7 @@ func (sch *schedule) ruleRoutine(grafanaCtx context.Context, key ngmodels.AlertR
OrgID: r.OrgID,
Data: r.Data,
}
results, err := sch.evaluator.ConditionEval(&condition, e.scheduledAt, sch.expressionService)
results, err := sch.evaluator.ConditionEval(&condition, e.scheduledAt)
dur := sch.clock.Now().Sub(start)
evalTotal.Inc()
evalDuration.Observe(dur.Seconds())
@@ -165,7 +165,7 @@ func TestAlertingTicker(t *testing.T) {
Scheme: "http",
Host: "localhost",
}
sched := schedule.NewScheduler(schedCfg, nil, appUrl, st, busmock.New())
sched := schedule.NewScheduler(schedCfg, appUrl, st, busmock.New())
go func() {
err := sched.Run(ctx)
@@ -949,7 +949,7 @@ func setupScheduler(t *testing.T, rs store.RuleStore, is store.InstanceStore, ac
C: mockedClock,
BaseInterval: time.Second,
MaxAttempts: 1,
Evaluator: eval.NewEvaluator(&setting.Cfg{ExpressionsEnabled: true}, logger, nil, secretsService),
Evaluator: eval.NewEvaluator(&setting.Cfg{ExpressionsEnabled: true}, logger, nil, secretsService, expr.ProvideService(&setting.Cfg{ExpressionsEnabled: true}, nil, nil)),
RuleStore: rs,
InstanceStore: is,
AdminConfigStore: acs,
@@ -963,7 +963,7 @@ func setupScheduler(t *testing.T, rs store.RuleStore, is store.InstanceStore, ac
Scheme: "http",
Host: "localhost",
}
return NewScheduler(schedCfg, expr.ProvideService(&setting.Cfg{ExpressionsEnabled: true}, nil, nil), appUrl, st, busmock.New()), mockedClock
return NewScheduler(schedCfg, appUrl, st, busmock.New()), mockedClock
}
// createTestAlertRule creates a dummy alert definition to be used by the tests.