diff --git a/promql/engine_test.go b/promql/engine_test.go index d5734439dea..e58e6cca8f0 100644 --- a/promql/engine_test.go +++ b/promql/engine_test.go @@ -16,9 +16,12 @@ package promql import ( "context" "errors" + "fmt" "io/ioutil" "os" + "reflect" "sort" + "sync" "testing" "time" @@ -241,10 +244,13 @@ type hintRecordingQuerier struct { storage.Querier h *noopHintRecordingQueryable + l sync.Mutex } func (h *hintRecordingQuerier) Select(sortSeries bool, hints *storage.SelectHints, matchers ...*labels.Matcher) storage.SeriesSet { + h.l.Lock() h.h.hints = append(h.h.hints, hints) + h.l.Unlock() return h.Querier.Select(sortSeries, hints, matchers...) } @@ -557,7 +563,25 @@ func TestSelectHintsSetCorrectly(t *testing.T) { res := query.Exec(context.Background()) require.NoError(t, res.Err) - require.Equal(t, tc.expected, hintsRecorder.hints) + require.Equal(t, len(tc.expected), len(hintsRecorder.hints)) + for _, item := range tc.expected { + found := false + for _, other := range hintsRecorder.hints { + if reflect.DeepEqual(*item, *other) { + found = true + break + } + } + if !found { + for i, e := range tc.expected { + fmt.Println(i, *e) + } + for i, e := range hintsRecorder.hints { + fmt.Println(i, *e) + } + } + require.Equal(t, found, true) + } }) }