Merge pull request #14923 from prometheus/njpm/fix-mockIndex

tsdb tests: fix `mockIndex` implementation of `LabelValues` and `LabelNames`
This commit is contained in:
Bryan Boreham 2025-07-11 11:42:00 +01:00 committed by GitHub
commit f1c6fab7e1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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
}