MCPcopy Create free account
hub / github.com/cortexproject/cortex / TestZoneResultsQuorum

Function TestZoneResultsQuorum

integration/zone_aware_test.go:154–238  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

152}
153
154func TestZoneResultsQuorum(t *testing.T) {
155 s, err := e2e.NewScenario(networkName)
156 require.NoError(t, err)
157 defer s.Close()
158
159 flags := BlocksStorageFlags()
160 flags["-distributor.shard-by-all-labels"] = "true"
161 flags["-distributor.replication-factor"] = "3"
162 flags["-distributor.zone-awareness-enabled"] = "true"
163
164 // Start dependencies.
165 consul := e2edb.NewConsul()
166 minio := e2edb.NewMinio(9000, flags["-blocks-storage.s3.bucket-name"])
167 require.NoError(t, s.StartAndWaitReady(consul, minio))
168
169 // Start Cortex components.
170 ingesterFlags := func(zone string) map[string]string {
171 return mergeFlags(flags, map[string]string{
172 "-ingester.availability-zone": zone,
173 })
174 }
175
176 ingester1 := e2ecortex.NewIngesterWithConfigFile("ingester-1", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), "", ingesterFlags("zone-a"), "")
177 ingester2 := e2ecortex.NewIngesterWithConfigFile("ingester-2", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), "", ingesterFlags("zone-a"), "")
178 ingester3 := e2ecortex.NewIngesterWithConfigFile("ingester-3", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), "", ingesterFlags("zone-b"), "")
179 ingester4 := e2ecortex.NewIngesterWithConfigFile("ingester-4", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), "", ingesterFlags("zone-b"), "")
180 ingester5 := e2ecortex.NewIngesterWithConfigFile("ingester-5", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), "", ingesterFlags("zone-c"), "")
181 ingester6 := e2ecortex.NewIngesterWithConfigFile("ingester-6", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), "", ingesterFlags("zone-c"), "")
182 require.NoError(t, s.StartAndWaitReady(ingester1, ingester2, ingester3, ingester4, ingester5, ingester6))
183
184 distributor := e2ecortex.NewDistributor("distributor", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), flags, "")
185 querier := e2ecortex.NewQuerier("querier", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), flags, "")
186 flagsZoneResultsQuorum := mergeFlags(flags, map[string]string{
187 "-distributor.zone-results-quorum-metadata": "true",
188 })
189 querierZoneResultsQuorum := e2ecortex.NewQuerier("querier-zrq", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), flagsZoneResultsQuorum, "")
190 require.NoError(t, s.StartAndWaitReady(distributor, querier, querierZoneResultsQuorum))
191
192 // Wait until distributor and queriers have updated the ring.
193 require.NoError(t, distributor.WaitSumMetricsWithOptions(e2e.Equals(6), []string{"cortex_ring_members"}, e2e.WithLabelMatchers(
194 labels.MustNewMatcher(labels.MatchEqual, "name", "ingester"),
195 labels.MustNewMatcher(labels.MatchEqual, "state", "ACTIVE"))))
196
197 require.NoError(t, querier.WaitSumMetricsWithOptions(e2e.Equals(6), []string{"cortex_ring_members"}, e2e.WithLabelMatchers(
198 labels.MustNewMatcher(labels.MatchEqual, "name", "ingester"),
199 labels.MustNewMatcher(labels.MatchEqual, "state", "ACTIVE"))))
200
201 require.NoError(t, querierZoneResultsQuorum.WaitSumMetricsWithOptions(e2e.Equals(6), []string{"cortex_ring_members"}, e2e.WithLabelMatchers(
202 labels.MustNewMatcher(labels.MatchEqual, "name", "ingester"),
203 labels.MustNewMatcher(labels.MatchEqual, "state", "ACTIVE"))))
204
205 client, err := e2ecortex.NewClient(distributor.HTTPEndpoint(), querier.HTTPEndpoint(), "", "", userID)
206 require.NoError(t, err)
207 clientZoneResultsQuorum, err := e2ecortex.NewClient(distributor.HTTPEndpoint(), querierZoneResultsQuorum.HTTPEndpoint(), "", "", userID)
208 require.NoError(t, err)
209
210 // Push some series
211 now := time.Now()

Callers

nothing calls this directly

Calls 15

CloseMethod · 0.95
StartAndWaitReadyMethod · 0.95
PushMethod · 0.95
LabelNamesMethod · 0.95
LabelValuesMethod · 0.95
NewScenarioFunction · 0.92
NewDistributorFunction · 0.92
NewQuerierFunction · 0.92
EqualsFunction · 0.92
WithLabelMatchersFunction · 0.92
NewClientFunction · 0.92

Tested by

no test coverage detected