MCPcopy
hub / github.com/grafana/dskit / TestBatchTracker_Record

Function TestBatchTracker_Record

ring/batch_test.go:18–59  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

16}
17
18func TestBatchTracker_Record(t *testing.T) {
19 minSuccess := 2
20 maxFailure := 1
21 replicationFactor := int32(3)
22
23 it1 := &itemTracker{minSuccess: minSuccess, maxFailures: maxFailure}
24 it1.remaining.Store(replicationFactor)
25 it2 := &itemTracker{minSuccess: minSuccess, maxFailures: maxFailure}
26 it2.remaining.Store(replicationFactor)
27
28 itemTrackers := []*itemTracker{it1, it2}
29 bt := batchTracker{
30 done: make(chan struct{}, 1),
31 err: make(chan error, 1),
32 }
33 bt.rpcsPending.Store(int32(len(itemTrackers)))
34 httpGRPC4xx := httpgrpc.Errorf(http.StatusBadRequest, "this is an error")
35
36 badScenario := []scenario{
37 {itemTrackers: itemTrackers[:1], err: nil},
38 {itemTrackers: itemTrackers[1:], err: httpGRPC4xx},
39 {itemTrackers: itemTrackers[:1], err: nil},
40 {itemTrackers: itemTrackers[:1], err: nil},
41 {itemTrackers: itemTrackers[1:], err: httpGRPC4xx},
42 {itemTrackers: itemTrackers[1:], err: httpGRPC4xx},
43 }
44
45 err := executeScenario(bt, badScenario)
46 require.Error(t, err)
47
48 goodScenario := []scenario{
49 {itemTrackers: itemTrackers[:1], err: nil},
50 {itemTrackers: itemTrackers[1:], err: httpGRPC4xx},
51 {itemTrackers: itemTrackers[1:], err: httpGRPC4xx},
52 {itemTrackers: itemTrackers[:1], err: nil},
53 {itemTrackers: itemTrackers[:1], err: nil},
54 {itemTrackers: itemTrackers[1:], err: httpGRPC4xx},
55 }
56
57 err = executeScenario(bt, goodScenario)
58 require.Error(t, err)
59}
60
61func executeScenario(bt batchTracker, scenarios []scenario) error {
62 var wg sync.WaitGroup

Callers

nothing calls this directly

Calls 3

ErrorfFunction · 0.92
executeScenarioFunction · 0.85
ErrorMethod · 0.45

Tested by

no test coverage detected