MCPcopy
hub / github.com/kopia/kopia / TestProgressCallback

Function TestProgressCallback

internal/parallelwork/parallel_work_queue_test.go:132–164  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

130}
131
132func TestProgressCallback(t *testing.T) {
133 queue := parallelwork.NewQueue()
134
135 progressUpdates := make(chan struct {
136 enqueued, active, completed int64
137 }, 3)
138
139 queue.ProgressCallback = func(ctx context.Context, enqueued, active, completed int64) {
140 progressUpdates <- struct {
141 enqueued, active, completed int64
142 }{enqueued, active, completed}
143 }
144
145 queue.EnqueueBack(context.Background(), func() error {
146 time.Sleep(100 * time.Millisecond)
147 return nil
148 })
149 queue.EnqueueBack(context.Background(), func() error {
150 time.Sleep(100 * time.Millisecond)
151 return nil
152 })
153
154 err := queue.Process(context.Background(), 2) // Use two workers
155 require.NoError(t, err)
156
157 close(progressUpdates)
158
159 for update := range progressUpdates {
160 require.GreaterOrEqual(t, update.enqueued, int64(0))
161 require.GreaterOrEqual(t, update.active, int64(0))
162 require.GreaterOrEqual(t, update.completed, int64(0))
163 }
164}
165
166func TestOnNthCompletion(t *testing.T) {
167 t.Run("callback is only called on n-th invocation", func(t *testing.T) {

Callers

nothing calls this directly

Calls 3

EnqueueBackMethod · 0.95
ProcessMethod · 0.95
NewQueueFunction · 0.92

Tested by

no test coverage detected