Skip to content

Commit 54702fa

Browse files
committed
update unit tests for slice samples
Signed-off-by: Ben Ye <benye@amazon.com>
1 parent 6dda199 commit 54702fa

File tree

3 files changed

+87
-3
lines changed

3 files changed

+87
-3
lines changed

pkg/querier/tripperware/instantquery/instant_query.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ func matrixMerge(resps []*PrometheusInstantQueryResponse) *Matrix {
340340
if resp == nil {
341341
continue
342342
}
343-
// Merge vector result samples only. Skip other types such as
343+
// Merge matrix result samples only. Skip other types such as
344344
// string, scalar as those are not sharable.
345345
if resp.Data.Result.GetMatrix() == nil {
346346
continue

pkg/querier/tripperware/util.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ package tripperware
22

33
import (
44
"context"
5-
"github.com/cortexproject/cortex/pkg/cortexpb"
65
"net/http"
76
"sort"
87

98
"github.com/weaveworks/common/httpgrpc"
109

10+
"github.com/cortexproject/cortex/pkg/cortexpb"
1111
"github.com/cortexproject/cortex/pkg/tenant"
1212
"github.com/cortexproject/cortex/pkg/util/validation"
1313
)
@@ -77,8 +77,9 @@ func DoRequests(ctx context.Context, downstream Handler, reqs []Request, limits
7777
// return a sub slice whose first element's is the smallest timestamp that is strictly
7878
// bigger than the given minTs. Empty slice is returned if minTs is bigger than all the
7979
// timestamps in samples.
80+
// If the given samples slice is not sorted then unexpected samples would be returned.
8081
func SliceSamples(samples []cortexpb.Sample, minTs int64) []cortexpb.Sample {
81-
if len(samples) <= 0 || minTs < samples[0].TimestampMs {
82+
if len(samples) == 0 || minTs < samples[0].TimestampMs {
8283
return samples
8384
}
8485

pkg/querier/tripperware/util_test.go

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package tripperware
2+
3+
import (
4+
"github.com/cortexproject/cortex/pkg/cortexpb"
5+
"github.com/stretchr/testify/assert"
6+
"testing"
7+
)
8+
9+
func TestSliceSamples(t *testing.T) {
10+
for _, tc := range []struct {
11+
name string
12+
samples []cortexpb.Sample
13+
minTs int64
14+
expectedSamples []cortexpb.Sample
15+
}{
16+
{
17+
name: "empty samples",
18+
samples: nil,
19+
expectedSamples: nil,
20+
},
21+
{
22+
name: "minTs smaller than first sample's timestamp",
23+
samples: []cortexpb.Sample{
24+
{Value: 0, TimestampMs: 1},
25+
},
26+
minTs: 0,
27+
expectedSamples: []cortexpb.Sample{
28+
{Value: 0, TimestampMs: 1},
29+
},
30+
},
31+
{
32+
name: "input samples are not sorted, return all samples",
33+
samples: []cortexpb.Sample{
34+
{Value: 0, TimestampMs: 3}, {Value: 0, TimestampMs: 1},
35+
},
36+
minTs: 2,
37+
expectedSamples: []cortexpb.Sample{
38+
{Value: 0, TimestampMs: 3}, {Value: 0, TimestampMs: 1},
39+
},
40+
},
41+
{
42+
name: "minTs greater than the last sample's timestamp",
43+
samples: []cortexpb.Sample{
44+
{Value: 0, TimestampMs: 1}, {Value: 0, TimestampMs: 2},
45+
},
46+
minTs: 3,
47+
expectedSamples: []cortexpb.Sample{},
48+
},
49+
{
50+
name: "input samples not sorted, minTs greater than the last sample's timestamp",
51+
samples: []cortexpb.Sample{
52+
{Value: 0, TimestampMs: 0}, {Value: 0, TimestampMs: 3}, {Value: 0, TimestampMs: 1},
53+
},
54+
minTs: 2,
55+
expectedSamples: []cortexpb.Sample{},
56+
},
57+
{
58+
name: "input samples are sorted",
59+
samples: []cortexpb.Sample{
60+
{Value: 0, TimestampMs: 2}, {Value: 0, TimestampMs: 3}, {Value: 0, TimestampMs: 4},
61+
},
62+
minTs: 1,
63+
expectedSamples: []cortexpb.Sample{
64+
{Value: 0, TimestampMs: 2}, {Value: 0, TimestampMs: 3}, {Value: 0, TimestampMs: 4},
65+
},
66+
},
67+
{
68+
name: "input samples are sorted, get sliced samples",
69+
samples: []cortexpb.Sample{
70+
{Value: 0, TimestampMs: 1}, {Value: 0, TimestampMs: 2}, {Value: 0, TimestampMs: 3},
71+
},
72+
minTs: 2,
73+
expectedSamples: []cortexpb.Sample{
74+
{Value: 0, TimestampMs: 3},
75+
},
76+
},
77+
} {
78+
t.Run(tc.name, func(t *testing.T) {
79+
actual := SliceSamples(tc.samples, tc.minTs)
80+
assert.Equal(t, tc.expectedSamples, actual)
81+
})
82+
}
83+
}

0 commit comments

Comments
 (0)