(t *testing.T)
| 130 | } |
| 131 | |
| 132 | func 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 | |
| 166 | func TestOnNthCompletion(t *testing.T) { |
| 167 | t.Run("callback is only called on n-th invocation", func(t *testing.T) { |
nothing calls this directly
no test coverage detected