github.com/Axway/agent-sdk@v1.1.101/pkg/jobs/backoff_test.go (about) 1 package jobs 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestBackoffTimeout(t *testing.T) { 11 start := time.Millisecond 12 max := 10 * time.Millisecond 13 factor := 2 14 newBT := newBackoffTimeout(start, max, factor) 15 16 assert.Equal(t, start, newBT.base) 17 assert.Equal(t, max, newBT.max) 18 assert.Equal(t, factor, newBT.factor) 19 assert.Equal(t, start, newBT.getCurrentTimeout()) 20 21 // increase the timeout, 2 milliseconds 22 newBT.increaseTimeout() 23 assert.Equal(t, start, newBT.base) 24 assert.Equal(t, max, newBT.max) 25 assert.Equal(t, factor, newBT.factor) 26 assert.Equal(t, start*2, newBT.getCurrentTimeout()) 27 28 // increase the timeout again, 4 milliseconds 29 newBT.increaseTimeout() 30 assert.Equal(t, start*2*2, newBT.getCurrentTimeout()) 31 32 // increase the timeout 2 more times to exceed max, should be reset to base 33 newBT.increaseTimeout() 34 newBT.increaseTimeout() 35 assert.Equal(t, start, newBT.getCurrentTimeout()) 36 37 // reset the timeout 38 newBT.reset() 39 assert.Equal(t, start, newBT.getCurrentTimeout()) 40 41 // call sleep 42 newBT.sleep() 43 assert.Equal(t, start, newBT.base) 44 assert.Equal(t, max, newBT.max) 45 assert.Equal(t, factor, newBT.factor) 46 assert.Equal(t, start, newBT.getCurrentTimeout()) 47 }