forked from TrueCloudLab/restic
worker: fix tests
The test failed on Windows, probably because the machine used for CI was too slow. The new test doesn't depend on timing any more.
This commit is contained in:
parent
482fc9f51d
commit
21a99397ff
1 changed files with 12 additions and 4 deletions
|
@ -92,10 +92,17 @@ func TestPoolErrors(t *testing.T) {
|
|||
|
||||
var errCancelled = errors.New("cancelled")
|
||||
|
||||
type Job struct {
|
||||
suc chan struct{}
|
||||
d time.Duration
|
||||
}
|
||||
|
||||
func wait(job worker.Job, done <-chan struct{}) (interface{}, error) {
|
||||
d := job.Data.(time.Duration)
|
||||
j := job.Data.(Job)
|
||||
select {
|
||||
case <-time.After(d):
|
||||
case j.suc <- struct{}{}:
|
||||
return time.Now(), nil
|
||||
case <-time.After(j.d):
|
||||
return time.Now(), nil
|
||||
case <-done:
|
||||
return nil, errCancelled
|
||||
|
@ -105,11 +112,12 @@ func wait(job worker.Job, done <-chan struct{}) (interface{}, error) {
|
|||
func TestPoolCancel(t *testing.T) {
|
||||
jobCh, resCh, p := newBufferedPool(20, concurrency, wait)
|
||||
|
||||
suc := make(chan struct{}, 1)
|
||||
for i := 0; i < 20; i++ {
|
||||
jobCh <- worker.Job{Data: 10 * time.Millisecond}
|
||||
jobCh <- worker.Job{Data: Job{suc: suc, d: time.Second}}
|
||||
}
|
||||
|
||||
time.Sleep(20 * time.Millisecond)
|
||||
<-suc
|
||||
p.Cancel()
|
||||
p.Wait()
|
||||
|
||||
|
|
Loading…
Reference in a new issue