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  }