MCPcopy Index your code
hub / github.com/cortexproject/cortex / runQueryFrontendTest

Function runQueryFrontendTest

integration/query_frontend_test.go:270–461  ·  view source on GitHub ↗
(t *testing.T, cfg queryFrontendTestConfig)

Source from the content-addressed store, hash-verified

268}
269
270func runQueryFrontendTest(t *testing.T, cfg queryFrontendTestConfig) {
271 const numUsers = 10
272 const numQueriesPerUser = 10
273
274 s, err := e2e.NewScenario(networkName)
275 require.NoError(t, err)
276 defer s.Close()
277
278 memcached := e2ecache.NewMemcached()
279 consul := e2edb.NewConsul()
280 require.NoError(t, s.StartAndWaitReady(consul, memcached))
281
282 configFile, flags := cfg.setup(t, s)
283
284 flags = mergeFlags(flags, map[string]string{
285 "-querier.cache-results": "true",
286 "-querier.split-queries-by-interval": "24h",
287 "-querier.query-ingesters-within": "12h", // Required by the test on query /series out of ingesters time range
288 "-frontend.memcached.addresses": "dns+" + memcached.NetworkEndpoint(e2ecache.MemcachedPort),
289 "-frontend.query-stats-enabled": "true", // Always enable query stats to capture regressions
290 })
291
292 // Start the query-scheduler if enabled.
293 var queryScheduler *e2ecortex.CortexService
294 if cfg.querySchedulerEnabled {
295 queryScheduler = e2ecortex.NewQueryScheduler("query-scheduler", flags, "")
296 require.NoError(t, s.StartAndWaitReady(queryScheduler))
297 flags["-frontend.scheduler-address"] = queryScheduler.NetworkGRPCEndpoint()
298 flags["-querier.scheduler-address"] = queryScheduler.NetworkGRPCEndpoint()
299 }
300
301 // Start the query-frontend.
302 queryFrontend := e2ecortex.NewQueryFrontendWithConfigFile("query-frontend", configFile, flags, "")
303 require.NoError(t, s.Start(queryFrontend))
304
305 if !cfg.querySchedulerEnabled {
306 flags["-querier.frontend-address"] = queryFrontend.NetworkGRPCEndpoint()
307 }
308
309 // Start all other services.
310 ingester := e2ecortex.NewIngesterWithConfigFile("ingester", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), configFile, flags, "")
311 distributor := e2ecortex.NewDistributorWithConfigFile("distributor", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), configFile, flags, "")
312
313 querier := e2ecortex.NewQuerierWithConfigFile("querier", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), configFile, flags, "")
314
315 require.NoError(t, s.StartAndWaitReady(querier, ingester, distributor))
316 require.NoError(t, s.WaitReady(queryFrontend))
317
318 // Check if we're discovering memcache or not.
319 require.NoError(t, queryFrontend.WaitSumMetrics(e2e.Equals(1), "cortex_memcache_client_servers"))
320 require.NoError(t, queryFrontend.WaitSumMetrics(e2e.Greater(0), "cortex_dns_lookups_total"))
321
322 // Wait until both the distributor and querier have updated the ring.
323 require.NoError(t, distributor.WaitSumMetrics(e2e.Equals(512), "cortex_ring_tokens_total"))
324 require.NoError(t, querier.WaitSumMetrics(e2e.Equals(512), "cortex_ring_tokens_total"))
325
326 // Push a series for each user to Cortex.
327 now := time.Now()

Calls 15

CloseMethod · 0.95
StartAndWaitReadyMethod · 0.95
NetworkGRPCEndpointMethod · 0.95
StartMethod · 0.95
WaitReadyMethod · 0.95
PushMethod · 0.95
QueryRawMethod · 0.95
QueryRangeMethod · 0.95
RemoteReadMethod · 0.95
QueryMethod · 0.95
NewScenarioFunction · 0.92
NewQuerySchedulerFunction · 0.92

Tested by

no test coverage detected