app/vmalert/config: sort extra_filter labels before passing them to query args in order to get consistent order of query args across runs

This fixes TestGroupParams test - see https://github.com/VictoriaMetrics/VictoriaMetrics/runs/4432510244?check_suite_focus=true#step:5:288
This commit is contained in:
Aliaksandr Valialkin 2021-12-08 13:02:32 +02:00
parent 1c09881cf7
commit 7d8c481960
No known key found for this signature in database
GPG key ID: A72BEC6CD3D0DED1
2 changed files with 9 additions and 5 deletions

View file

@ -46,8 +46,6 @@ type Group struct {
XXX map[string]interface{} `yaml:",inline"` XXX map[string]interface{} `yaml:",inline"`
} }
const extraLabelParam = "extra_label"
// UnmarshalYAML implements the yaml.Unmarshaler interface. // UnmarshalYAML implements the yaml.Unmarshaler interface.
func (g *Group) UnmarshalYAML(unmarshal func(interface{}) error) error { func (g *Group) UnmarshalYAML(unmarshal func(interface{}) error) error {
type group Group type group Group
@ -68,8 +66,14 @@ func (g *Group) UnmarshalYAML(unmarshal func(interface{}) error) error {
if g.Params == nil { if g.Params == nil {
g.Params = url.Values{} g.Params = url.Values{}
} }
// Sort extraFilters for consistent order for query args across runs.
extraFilters := make([]string, 0, len(g.ExtraFilterLabels))
for k, v := range g.ExtraFilterLabels { for k, v := range g.ExtraFilterLabels {
g.Params.Add(extraLabelParam, fmt.Sprintf("%s=%s", k, v)) extraFilters = append(extraFilters, fmt.Sprintf("%s=%s", k, v))
}
sort.Strings(extraFilters)
for _, extraFilter := range extraFilters {
g.Params.Add("extra_label", extraFilter)
} }
} }

View file

@ -538,7 +538,7 @@ extra_filter_labels:
rules: rules:
- alert: ExampleAlertAlwaysFiring - alert: ExampleAlertAlwaysFiring
expr: sum by(job) (up == 1) expr: sum by(job) (up == 1)
`, url.Values{extraLabelParam: {"job=victoriametrics", "env=prod"}}) `, url.Values{"extra_label": {"env=prod", "job=victoriametrics"}})
}) })
t.Run("extra labels and params", func(t *testing.T) { t.Run("extra labels and params", func(t *testing.T) {
@ -552,6 +552,6 @@ params:
rules: rules:
- alert: ExampleAlertAlwaysFiring - alert: ExampleAlertAlwaysFiring
expr: sum by(job) (up == 1) expr: sum by(job) (up == 1)
`, url.Values{"nocache": {"1"}, extraLabelParam: {"env=prod", "job=victoriametrics"}}) `, url.Values{"nocache": {"1"}, "extra_label": {"env=prod", "job=victoriametrics"}})
}) })
} }