diff --git a/tsdb/querier_test.go b/tsdb/querier_test.go index cd3b15abc4..a8f36bd713 100644 --- a/tsdb/querier_test.go +++ b/tsdb/querier_test.go @@ -20,6 +20,7 @@ import ( "math" "math/rand" "path/filepath" + "slices" "sort" "strconv" "sync" @@ -2274,15 +2275,19 @@ func (m mockIndex) LabelValues(_ context.Context, name string, hints *storage.La } for _, series := range m.series { + matches := true for _, matcher := range matchers { - if matcher.Matches(series.l.Get(matcher.Name)) { - // TODO(colega): shouldn't we check all the matchers before adding this to the values? - values = append(values, series.l.Get(name)) - if hints != nil && hints.Limit > 0 && len(values) >= hints.Limit { - break - } + matches = matches && matcher.Matches(series.l.Get(matcher.Name)) + if !matches { + break } } + if matches && !slices.Contains(values, series.l.Get(name)) { + values = append(values, series.l.Get(name)) + } + if hints != nil && hints.Limit > 0 && len(values) >= hints.Limit { + break + } } return values, nil @@ -2392,7 +2397,7 @@ func (m mockIndex) LabelNames(_ context.Context, matchers ...*labels.Matcher) ([ for _, series := range m.series { matches := true for _, matcher := range matchers { - matches = matches || matcher.Matches(series.l.Get(matcher.Name)) + matches = matches && matcher.Matches(series.l.Get(matcher.Name)) if !matches { break }