github.com/viant/toolbox@v0.34.5/waitgroup_helper_test.go (about) 1 package toolbox 2 3 import ( 4 "sync" 5 "testing" 6 "time" 7 8 "github.com/stretchr/testify/assert" 9 ) 10 11 12 func TestWaitTimeout_TimeoutTriggered(t *testing.T) { 13 var wg sync.WaitGroup 14 go sleep(&wg, time.Second) 15 time.Sleep(100 * time.Millisecond) 16 isTimeOut := WaitTimeout(&wg, 100 * time.Millisecond) 17 assert.Equal(t, true, isTimeOut) 18 } 19 20 func TestWaitTimeout_NoTimeout(t *testing.T) { 21 var wg sync.WaitGroup 22 go sleep(&wg, 100 * time.Millisecond) 23 //task will sleep for 3 seconds but timeout is set only for 5 second 24 isTimeOut := WaitTimeout(&wg, time.Second) 25 assert.Equal(t, false, isTimeOut) 26 } 27 28 //Method that sleeps for 3 seconds 29 func sleep(wg *sync.WaitGroup, duration time.Duration) { 30 wg.Add(1) 31 time.Sleep(duration) 32 wg.Done() 33 }