@@ -11,14 +11,19 @@ import (
11
11
12
12
"github.com/go-kit/log"
13
13
"github.com/stretchr/testify/require"
14
+ "github.com/thanos-io/thanos/pkg/querysharding"
14
15
"github.com/weaveworks/common/user"
16
+
17
+ "github.com/cortexproject/cortex/pkg/util/flagext"
18
+ "github.com/cortexproject/cortex/pkg/util/validation"
15
19
)
16
20
17
21
const (
18
- queryRange = "/api/v1/query_range?end=1536716898&query=sum%28container_memory_rss%29+by+%28namespace%29&start=1536673680&stats=all&step=120"
19
- query = "/api/v1/query?time=1536716898&query=sum%28container_memory_rss%29+by+%28namespace%29&start=1536673680"
20
- queryExemplar = "/api/v1/query_exemplars?query=test_exemplar_metric_total&start=2020-09-14T15:22:25.479Z&end=2020-09-14T15:23:25.479Z'"
21
- responseBody = `{"status":"success","data":{"resultType":"matrix","result":[{"metric":{"foo":"bar"},"values":[[1536673680,"137"],[1536673780,"137"]]}]}}`
22
+ queryRange = "/api/v1/query_range?end=1536716898&query=sum%28container_memory_rss%29+by+%28namespace%29&start=1536673680&stats=all&step=120"
23
+ query = "/api/v1/query?time=1536716898&query=sum%28container_memory_rss%29+by+%28namespace%29&start=1536673680"
24
+ queryNonShardable = "/api/v1/query?time=1536716898&query=container_memory_rss&start=1536673680"
25
+ queryExemplar = "/api/v1/query_exemplars?query=test_exemplar_metric_total&start=2020-09-14T15:22:25.479Z&end=2020-09-14T15:23:25.479Z'"
26
+ responseBody = `{"status":"success","data":{"resultType":"matrix","result":[{"metric":{"foo":"bar"},"values":[[1536673680,"137"],[1536673780,"137"]]}]}}`
22
27
)
23
28
24
29
type mockRequest struct {
@@ -86,22 +91,49 @@ func TestRoundTrip(t *testing.T) {
86
91
return mockMiddleware {}
87
92
}),
88
93
}
89
- tw := NewQueryTripperware (log .NewNopLogger (),
90
- nil ,
91
- nil ,
92
- middlewares ,
93
- middlewares ,
94
- mockCodec {},
95
- mockCodec {},
96
- )
97
94
95
+ limits := validation.Limits {}
96
+ flagext .DefaultValues (& limits )
97
+ defaultOverrides , err := validation .NewOverrides (limits , nil )
98
+ require .NoError (t , err )
99
+
100
+ limitsWithVerticalSharding := validation.Limits {QueryVerticalShardSize : 3 }
101
+ shardingOverrides , err := validation .NewOverrides (limitsWithVerticalSharding , nil )
102
+ require .NoError (t , err )
98
103
for _ , tc := range []struct {
99
104
path , expectedBody string
105
+ limits Limits
100
106
}{
101
- {"/foo" , "bar" },
102
- {queryExemplar , "bar" },
103
- {queryRange , responseBody },
104
- {query , responseBody },
107
+ {
108
+ path : "/foo" ,
109
+ expectedBody : "bar" ,
110
+ limits : defaultOverrides ,
111
+ },
112
+ {
113
+ path : queryExemplar ,
114
+ expectedBody : "bar" ,
115
+ limits : defaultOverrides ,
116
+ },
117
+ {
118
+ path : queryRange ,
119
+ expectedBody : responseBody ,
120
+ limits : defaultOverrides ,
121
+ },
122
+ {
123
+ path : query ,
124
+ expectedBody : "bar" ,
125
+ limits : defaultOverrides ,
126
+ },
127
+ {
128
+ path : queryNonShardable ,
129
+ expectedBody : "bar" ,
130
+ limits : defaultOverrides ,
131
+ },
132
+ {
133
+ path : query ,
134
+ expectedBody : responseBody ,
135
+ limits : shardingOverrides ,
136
+ },
105
137
} {
106
138
t .Run (tc .path , func (t * testing.T ) {
107
139
req , err := http .NewRequest ("GET" , tc .path , http .NoBody )
@@ -115,6 +147,16 @@ func TestRoundTrip(t *testing.T) {
115
147
err = user .InjectOrgIDIntoHTTPRequest (ctx , req )
116
148
require .NoError (t , err )
117
149
150
+ tw := NewQueryTripperware (log .NewNopLogger (),
151
+ nil ,
152
+ nil ,
153
+ middlewares ,
154
+ middlewares ,
155
+ mockCodec {},
156
+ mockCodec {},
157
+ tc .limits ,
158
+ querysharding .NewQueryAnalyzer (),
159
+ )
118
160
resp , err := tw (downstream ).RoundTrip (req )
119
161
require .NoError (t , err )
120
162
require .Equal (t , 200 , resp .StatusCode )
0 commit comments