11package pool
22
33import (
4+ "sync"
45 "testing"
56 "time"
67
@@ -20,12 +21,16 @@ func TestSchedule(t *testing.T) {
2021 worker = newTestWorker (t , ctx , node )
2122 d = 10 * time .Millisecond
2223 iter = 0
24+ lock sync.Mutex
2325 )
2426 defer cleanup (t , rdb , false , testName )
2527
28+ inc := func () { lock .Lock (); iter ++ ; lock .Unlock () }
29+ it := func () int { lock .Lock (); defer lock .Unlock (); return iter }
30+
2631 producer := newTestProducer (testName , func () (* JobPlan , error ) {
27- iter ++
28- switch iter {
32+ inc ()
33+ switch it () {
2934 case 1 :
3035 assert .Equal (t , 0 , numJobs (t , worker ), "unexpected number of jobs" )
3136 // First iteration: start a job
@@ -60,17 +65,19 @@ func TestSchedule(t *testing.T) {
6065 // Seventh iteration: stop schedule
6166 return nil , ErrScheduleStop
6267 }
63- t .Errorf ("unexpected iteration %d" , iter )
68+ t .Errorf ("unexpected iteration %d" , it () )
6469 return nil , nil
6570 })
6671
6772 // Observe call to reset
68- jobMap , err := rmap .Join (ctx , testName , rdb )
73+ jobMap , err := rmap .Join (ctx , testName + ":" + testName , rdb )
6974 require .NoError (t , err )
7075 var reset bool
7176 c := jobMap .Subscribe ()
7277 defer jobMap .Unsubscribe (c )
78+ done := make (chan struct {})
7379 go func () {
80+ defer close (done )
7481 for ev := range c {
7582 if ev == rmap .EventReset {
7683 reset = true
@@ -82,9 +89,14 @@ func TestSchedule(t *testing.T) {
8289 err = node .Schedule (ctx , producer , d )
8390 require .NoError (t , err )
8491
85- jobMap .Subscribe ()
86- assert .Eventually (t , func () bool { return iter == 7 }, max , delay , "schedule should have stopped" )
87- assert .Eventually (t , func () bool { return reset }, max , delay , "job map should have been reset" )
92+ assert .Eventually (t , func () bool { return it () == 7 }, max , delay , "schedule should have stopped" )
93+ select {
94+ case <- done :
95+ reset = true
96+ case <- time .After (time .Second ):
97+ break
98+ }
99+ assert .True (t , reset , "job map should have been reset" )
88100 assert .NotContains (t , buf .String (), "level=error" , "unexpected logged error" )
89101}
90102
0 commit comments