@@ -11,14 +11,19 @@ import (
1111
1212 "github.com/go-kit/log"
1313 "github.com/stretchr/testify/require"
14+ "github.com/thanos-io/thanos/pkg/querysharding"
1415 "github.com/weaveworks/common/user"
16+
17+ "github.com/cortexproject/cortex/pkg/util/flagext"
18+ "github.com/cortexproject/cortex/pkg/util/validation"
1519)
1620
1721const (
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"]]}]}}`
2227)
2328
2429type mockRequest struct {
@@ -86,22 +91,49 @@ func TestRoundTrip(t *testing.T) {
8691 return mockMiddleware {}
8792 }),
8893 }
89- tw := NewQueryTripperware (log .NewNopLogger (),
90- nil ,
91- nil ,
92- middlewares ,
93- middlewares ,
94- mockCodec {},
95- mockCodec {},
96- )
9794
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 )
98103 for _ , tc := range []struct {
99104 path , expectedBody string
105+ limits Limits
100106 }{
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+ },
105137 } {
106138 t .Run (tc .path , func (t * testing.T ) {
107139 req , err := http .NewRequest ("GET" , tc .path , http .NoBody )
@@ -115,6 +147,16 @@ func TestRoundTrip(t *testing.T) {
115147 err = user .InjectOrgIDIntoHTTPRequest (ctx , req )
116148 require .NoError (t , err )
117149
150+ tw := NewQueryTripperware (log .NewNopLogger (),
151+ nil ,
152+ nil ,
153+ middlewares ,
154+ middlewares ,
155+ mockCodec {},
156+ mockCodec {},
157+ tc .limits ,
158+ querysharding .NewQueryAnalyzer (),
159+ )
118160 resp , err := tw (downstream ).RoundTrip (req )
119161 require .NoError (t , err )
120162 require .Equal (t , 200 , resp .StatusCode )
0 commit comments