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

Function TestQuerierDistributedExecution

integration/querier_test.go:875–948  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

873}
874
875func TestQuerierDistributedExecution(t *testing.T) {
876 // e2e test setup
877 s, err := e2e.NewScenario(networkName)
878 require.NoError(t, err)
879 defer s.Close()
880
881 // initialize the flags
882 flags := mergeFlags(
883 BlocksStorageFlags(),
884 map[string]string{
885 "-blocks-storage.tsdb.block-ranges-period": (5 * time.Second).String(),
886 "-blocks-storage.tsdb.ship-interval": "1s",
887 "-blocks-storage.tsdb.retention-period": ((5 * time.Second * 2) - 1).String(),
888 "-querier.thanos-engine": "true",
889 // enable distributed execution (logical plan execution)
890 "-querier.distributed-exec-enabled": "true",
891 },
892 )
893
894 minio := e2edb.NewMinio(9000, flags["-blocks-storage.s3.bucket-name"])
895 consul := e2edb.NewConsul()
896 require.NoError(t, s.StartAndWaitReady(consul, minio))
897
898 // start services
899 distributor := e2ecortex.NewDistributor("distributor", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), flags, "")
900 ingester := e2ecortex.NewIngester("ingester", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), flags, "")
901 queryScheduler := e2ecortex.NewQueryScheduler("query-scheduler", flags, "")
902 storeGateway := e2ecortex.NewStoreGateway("store-gateway", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), flags, "")
903 require.NoError(t, s.StartAndWaitReady(queryScheduler, distributor, ingester, storeGateway))
904 flags = mergeFlags(flags, map[string]string{
905 "-querier.store-gateway-addresses": strings.Join([]string{storeGateway.NetworkGRPCEndpoint()}, ","),
906 })
907
908 queryFrontend := e2ecortex.NewQueryFrontend("query-frontend", mergeFlags(flags, map[string]string{
909 "-frontend.scheduler-address": queryScheduler.NetworkGRPCEndpoint(),
910 }), "")
911 require.NoError(t, s.Start(queryFrontend))
912
913 querier := e2ecortex.NewQuerier("querier", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), mergeFlags(flags, map[string]string{
914 "-querier.scheduler-address": queryScheduler.NetworkGRPCEndpoint(),
915 }), "")
916 require.NoError(t, s.StartAndWaitReady(querier))
917
918 // wait until the distributor and querier has updated the ring.
919 require.NoError(t, distributor.WaitSumMetrics(e2e.Equals(512), "cortex_ring_tokens_total"))
920 require.NoError(t, querier.WaitSumMetrics(e2e.Equals(2*512), "cortex_ring_tokens_total"))
921
922 c, err := e2ecortex.NewClient(distributor.HTTPEndpoint(), queryFrontend.HTTPEndpoint(), "", "", "user-1")
923 require.NoError(t, err)
924
925 series1Timestamp := time.Now()
926 series2Timestamp := series1Timestamp.Add(time.Minute * 1)
927 series1, expectedVector1 := generateSeries("series_1", series1Timestamp, prompb.Label{Name: "series_1", Value: "series_1"})
928 series2, expectedVector2 := generateSeries("series_2", series2Timestamp, prompb.Label{Name: "series_2", Value: "series_2"})
929
930 res, err := c.Push(series1)
931 require.NoError(t, err)
932 require.Equal(t, 200, res.StatusCode)

Callers

nothing calls this directly

Calls 15

CloseMethod · 0.95
StartAndWaitReadyMethod · 0.95
StartMethod · 0.95
PushMethod · 0.95
QueryMethod · 0.95
NewScenarioFunction · 0.92
NewDistributorFunction · 0.92
NewIngesterFunction · 0.92
NewQuerySchedulerFunction · 0.92
NewStoreGatewayFunction · 0.92
NewQueryFrontendFunction · 0.92
NewQuerierFunction · 0.92

Tested by

no test coverage detected