diff --git a/querier.go b/querier.go index ab8d95458b..3b049332bb 100644 --- a/querier.go +++ b/querier.go @@ -182,7 +182,7 @@ func compareLabels(a, b Labels) int { } } // If all labels so far were in common, the set with fewer labels comes first. - return len(b) - len(a) + return len(a) - len(b) } func (s *shardSeriesSet) Series() Series { diff --git a/querier_test.go b/querier_test.go new file mode 100644 index 0000000000..f67878e436 --- /dev/null +++ b/querier_test.go @@ -0,0 +1,46 @@ +package tsdb + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestCompareLabels(t *testing.T) { + cases := []struct { + a, b []Label + res int + }{ + { + a: []Label{}, + b: []Label{}, + res: 0, + }, + { + a: []Label{{"a", ""}}, + b: []Label{{"a", ""}, {"b", ""}}, + res: -1, + }, + { + a: []Label{{"a", ""}}, + b: []Label{{"a", ""}}, + res: 0, + }, + { + a: []Label{{"aa", ""}, {"aa", ""}}, + b: []Label{{"aa", ""}, {"ab", ""}}, + res: -1, + }, + { + a: []Label{{"aa", ""}, {"abb", ""}}, + b: []Label{{"aa", ""}, {"ab", ""}}, + res: 1, + }, + } + for _, c := range cases { + // Use constructor to ensure sortedness. + a, b := NewLabels(c.a...), NewLabels(c.b...) + + require.Equal(t, c.res, compareLabels(a, b)) + } +}