@@ -37,38 +37,40 @@ func TestMappingEquivalence(t *testing.T) {
37
37
for _ , tc := range []struct {
38
38
query string
39
39
approximate bool
40
+ shardAgg []string
40
41
}{
41
- {`1` , false },
42
- {`1 + 1` , false },
43
- {`{a="1"}` , false },
44
- {`{a="1"} |= "number: 10"` , false },
45
- {`rate({a=~".+"}[1s])` , false },
46
- {`sum by (a) (rate({a=~".+"}[1s]))` , false },
47
- {`sum(rate({a=~".+"}[1s]))` , false },
48
- {`max without (a) (rate({a=~".+"}[1s]))` , false },
49
- {`count(rate({a=~".+"}[1s]))` , false },
50
- {`avg(rate({a=~".+"}[1s]))` , true },
51
- {`avg(rate({a=~".+"}[1s])) by (a)` , true },
52
- {`1 + sum by (cluster) (rate({a=~".+"}[1s]))` , false },
53
- {`sum(max(rate({a=~".+"}[1s])))` , false },
54
- {`max(count(rate({a=~".+"}[1s])))` , false },
55
- {`max(sum by (cluster) (rate({a=~".+"}[1s]))) / count(rate({a=~".+"}[1s]))` , false },
56
- {`sum(rate({a=~".+"} |= "foo" != "foo"[1s]) or vector(1))` , false },
57
- {`avg_over_time({a=~".+"} | logfmt | unwrap value [1s])` , false },
58
- {`avg_over_time({a=~".+"} | logfmt | unwrap value [1s]) by (a)` , true },
59
- {`quantile_over_time(0.99, {a=~".+"} | logfmt | unwrap value [1s])` , true },
42
+ {`1` , false , nil },
43
+ {`1 + 1` , false , nil },
44
+ {`{a="1"}` , false , nil },
45
+ {`{a="1"} |= "number: 10"` , false , nil },
46
+ {`rate({a=~".+"}[1s])` , false , nil },
47
+ {`sum by (a) (rate({a=~".+"}[1s]))` , false , nil },
48
+ {`sum(rate({a=~".+"}[1s]))` , false , nil },
49
+ {`max without (a) (rate({a=~".+"}[1s]))` , false , nil },
50
+ {`count(rate({a=~".+"}[1s]))` , false , nil },
51
+ {`avg(rate({a=~".+"}[1s]))` , true , nil },
52
+ {`avg(rate({a=~".+"}[1s])) by (a)` , true , nil },
53
+ {`1 + sum by (cluster) (rate({a=~".+"}[1s]))` , false , nil },
54
+ {`sum(max(rate({a=~".+"}[1s])))` , false , nil },
55
+ {`max(count(rate({a=~".+"}[1s])))` , false , nil },
56
+ {`max(sum by (cluster) (rate({a=~".+"}[1s]))) / count(rate({a=~".+"}[1s]))` , false , nil },
57
+ {`sum(rate({a=~".+"} |= "foo" != "foo"[1s]) or vector(1))` , false , nil },
58
+ {`avg_over_time({a=~".+"} | logfmt | unwrap value [1s])` , false , nil },
59
+ {`avg_over_time({a=~".+"} | logfmt | unwrap value [1s]) by (a)` , true , nil },
60
+ {`quantile_over_time(0.99, {a=~".+"} | logfmt | unwrap value [1s])` , true , [] string { ShardQuantileOverTime } },
60
61
{
61
62
`
62
63
(quantile_over_time(0.99, {a=~".+"} | logfmt | unwrap value [1s]) by (a) > 1)
63
64
and
64
65
avg by (a) (rate({a=~".+"}[1s]))
65
66
` ,
66
67
false ,
68
+ nil ,
67
69
},
68
- {`first_over_time({a=~".+"} | logfmt | unwrap value [1s])` , false },
69
- {`first_over_time({a=~".+"} | logfmt | unwrap value [1s]) by (a)` , false },
70
- {`last_over_time({a=~".+"} | logfmt | unwrap value [1s])` , false },
71
- {`last_over_time({a=~".+"} | logfmt | unwrap value [1s]) by (a)` , false },
70
+ {`first_over_time({a=~".+"} | logfmt | unwrap value [1s])` , false , [] string { ShardFirstOverTime } },
71
+ {`first_over_time({a=~".+"} | logfmt | unwrap value [1s]) by (a)` , false , [] string { ShardFirstOverTime } },
72
+ {`last_over_time({a=~".+"} | logfmt | unwrap value [1s])` , false , [] string { ShardLastOverTime } },
73
+ {`last_over_time({a=~".+"} | logfmt | unwrap value [1s]) by (a)` , false , [] string { ShardLastOverTime } },
72
74
// topk prefers already-seen values in tiebreakers. Since the test data generates
73
75
// the same log lines for each series & the resulting promql.Vectors aren't deterministically
74
76
// sorted by labels, we don't expect this to pass.
@@ -102,12 +104,7 @@ func TestMappingEquivalence(t *testing.T) {
102
104
ctx := user .InjectOrgID (context .Background (), "fake" )
103
105
104
106
strategy := NewPowerOfTwoStrategy (ConstantShards (shards ))
105
- mapper := NewShardMapper (strategy , nilShardMetrics , []string {})
106
- // TODO (callum) refactor this test so that we won't need to set every
107
- // possible sharding config option to true when we have multiple in the future
108
- if tc .approximate {
109
- mapper .quantileOverTimeSharding = true
110
- }
107
+ mapper := NewShardMapper (strategy , nilShardMetrics , tc .shardAgg )
111
108
_ , _ , mapped , err := mapper .Parse (params .GetExpression ())
112
109
require .NoError (t , err )
113
110
0 commit comments