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

Function TestZoneAwareResultTracker

pkg/ring/replication_set_tracker_test.go:211–513  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

209}
210
211func TestZoneAwareResultTracker(t *testing.T) {
212 instance1 := InstanceDesc{Addr: "127.0.0.1", Zone: "zone-a"}
213 instance2 := InstanceDesc{Addr: "127.0.0.2", Zone: "zone-a"}
214 instance3 := InstanceDesc{Addr: "127.0.0.3", Zone: "zone-b"}
215 instance4 := InstanceDesc{Addr: "127.0.0.4", Zone: "zone-b"}
216 instance5 := InstanceDesc{Addr: "127.0.0.5", Zone: "zone-c"}
217 instance6 := InstanceDesc{Addr: "127.0.0.6", Zone: "zone-c"}
218
219 tests := map[string]struct {
220 instances []InstanceDesc
221 maxUnavailableZones int
222 zoneResultsQuorum bool
223 run func(t *testing.T, tracker *zoneAwareResultTracker)
224 }{
225 "should succeed on no instances to track": {
226 instances: nil,
227 maxUnavailableZones: 0,
228 run: func(t *testing.T, tracker *zoneAwareResultTracker) {
229 assert.True(t, tracker.succeeded())
230 assert.False(t, tracker.failed())
231 },
232 },
233 "should succeed once all instances succeed on max unavailable zones = 0": {
234 instances: []InstanceDesc{instance1, instance2, instance3},
235 maxUnavailableZones: 0,
236 run: func(t *testing.T, tracker *zoneAwareResultTracker) {
237 assert.False(t, tracker.succeeded())
238 assert.False(t, tracker.failed())
239
240 tracker.done(&instance1, 1, nil)
241 assert.False(t, tracker.succeeded())
242 assert.False(t, tracker.failed())
243
244 tracker.done(&instance2, 1, nil)
245 assert.False(t, tracker.succeeded())
246 assert.False(t, tracker.failed())
247
248 tracker.done(&instance3, 1, nil)
249 assert.True(t, tracker.succeeded())
250 assert.False(t, tracker.failed())
251
252 assert.Equal(t, []any{1, 1, 1}, tracker.getResults())
253 },
254 },
255 "should succeed once all 6 instances succeed on max unavailable zones = 0": {
256 instances: []InstanceDesc{instance1, instance2, instance3, instance4, instance5, instance6},
257 maxUnavailableZones: 0,
258 run: func(t *testing.T, tracker *zoneAwareResultTracker) {
259 assert.False(t, tracker.succeeded())
260 assert.False(t, tracker.failed())
261
262 tracker.done(&instance1, 1, nil)
263 assert.False(t, tracker.succeeded())
264 assert.False(t, tracker.failed())
265
266 tracker.done(&instance2, 1, nil)
267 assert.False(t, tracker.succeeded())
268 assert.False(t, tracker.failed())

Callers

nothing calls this directly

Calls 13

GetAddrMethod · 0.95
GetZoneMethod · 0.95
succeededMethod · 0.65
failedMethod · 0.65
doneMethod · 0.65
EqualMethod · 0.65
getResultsMethod · 0.65
failedCompletelyMethod · 0.65
finishedMethod · 0.65
getErrorsMethod · 0.65
RunMethod · 0.65

Tested by

no test coverage detected