Alerting: Refactor state manager's cache (#56197)

* remove ResetAllStates because it's not used
* refactor cache to accept logs, metrics and url as method args
* update manager Warm method to set the entire state at once
* remove unused reset method
* introduce ruleStates
* change getOrCreate to belong to ruleStates
* update Get to not return error
This commit is contained in:
Yuriy Tseretyan
2022-10-06 15:30:12 -04:00
committed by GitHub
parent 15d2653b89
commit 7b6437402a
5 changed files with 125 additions and 101 deletions

View File

@@ -12,17 +12,18 @@ import (
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/services/ngalert/eval"
"github.com/grafana/grafana/pkg/services/ngalert/metrics"
"github.com/grafana/grafana/pkg/services/ngalert/models"
"github.com/grafana/grafana/pkg/util"
)
func Test_getOrCreate(t *testing.T) {
c := newCache(log.New("test"), &metrics.State{}, &url.URL{
url := &url.URL{
Scheme: "http",
Host: "localhost:3000",
Path: "/test",
})
}
l := log.New("test")
c := newCache()
generateRule := models.AlertRuleGen(models.WithNotEmptyLabels(5, "rule-"))
@@ -33,7 +34,7 @@ func Test_getOrCreate(t *testing.T) {
result := eval.Result{
Instance: models.GenerateAlertLabels(5, "result-"),
}
state := c.getOrCreate(context.Background(), rule, result, extraLabels)
state := c.getOrCreate(context.Background(), l, rule, result, extraLabels, url)
for key, expected := range extraLabels {
require.Equal(t, expected, state.Labels[key])
}
@@ -61,7 +62,7 @@ func Test_getOrCreate(t *testing.T) {
result.Instance[key] = "result-" + util.GenerateShortUID()
}
state := c.getOrCreate(context.Background(), rule, result, extraLabels)
state := c.getOrCreate(context.Background(), l, rule, result, extraLabels, url)
for key, expected := range extraLabels {
require.Equal(t, expected, state.Labels[key])
}
@@ -77,7 +78,7 @@ func Test_getOrCreate(t *testing.T) {
for key := range rule.Labels {
result.Instance[key] = "result-" + util.GenerateShortUID()
}
state := c.getOrCreate(context.Background(), rule, result, extraLabels)
state := c.getOrCreate(context.Background(), l, rule, result, extraLabels, url)
for key, expected := range rule.Labels {
require.Equal(t, expected, state.Labels[key])
}
@@ -99,7 +100,7 @@ func Test_getOrCreate(t *testing.T) {
}
rule.Labels = labelTemplates
state := c.getOrCreate(context.Background(), rule, result, extraLabels)
state := c.getOrCreate(context.Background(), l, rule, result, extraLabels, url)
for key, expected := range extraLabels {
assert.Equal(t, expected, state.Labels["rule-"+key])
}
@@ -125,7 +126,7 @@ func Test_getOrCreate(t *testing.T) {
}
rule.Annotations = annotationTemplates
state := c.getOrCreate(context.Background(), rule, result, extraLabels)
state := c.getOrCreate(context.Background(), l, rule, result, extraLabels, url)
for key, expected := range extraLabels {
assert.Equal(t, expected, state.Annotations["rule-"+key])
}