Skip to content

Commit

Permalink
Add Seed for Calculating Jitter
Browse files Browse the repository at this point in the history
  • Loading branch information
timusg committed Mar 20, 2018
1 parent f53470b commit 76b65a3
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 9 deletions.
4 changes: 4 additions & 0 deletions backoff.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ type constantBackoff struct {
maximumJitterInterval int64
}

func init() {
rand.Seed(time.Now().UnixNano())
}

// NewConstantBackoff returns an instance of ConstantBackoff
func NewConstantBackoff(backoffInterval, maximumJitterInterval int64) Backoff {
return &constantBackoff{backoffInterval: backoffInterval, maximumJitterInterval: maximumJitterInterval}
Expand Down
14 changes: 7 additions & 7 deletions backoff_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,47 +11,47 @@ func TestExponentialBackoffNextTime(t *testing.T) {

exponentialBackoff := NewExponentialBackoff(2*time.Millisecond, 10*time.Millisecond, 2.0, 1*time.Millisecond)

assert.Equal(t, 4*time.Millisecond, exponentialBackoff.Next(1))
assert.True(t, 4*time.Millisecond <= exponentialBackoff.Next(1))
}

func TestExponentialBackoffMaxTimeoutCrossed(t *testing.T) {

exponentialBackoff := NewExponentialBackoff(2*time.Millisecond, 9*time.Millisecond, 2.0, 1*time.Millisecond)

assert.Equal(t, 9*time.Millisecond, exponentialBackoff.Next(3))
assert.True(t, 9*time.Millisecond <= exponentialBackoff.Next(3))
}

func TestExponentialBackoffMaxTimeoutReached(t *testing.T) {

exponentialBackoff := NewExponentialBackoff(2*time.Millisecond, 10*time.Millisecond, 2.0, 1*time.Millisecond)

assert.Equal(t, 10*time.Millisecond, exponentialBackoff.Next(3))
assert.True(t, 10*time.Millisecond <= exponentialBackoff.Next(3))
}

func TestExponentialBackoffWhenRetryIsZero(t *testing.T) {

exponentialBackoff := NewExponentialBackoff(2*time.Millisecond, 10*time.Millisecond, 2.0, 1*time.Millisecond)

assert.Equal(t, 0*time.Millisecond, exponentialBackoff.Next(0))
assert.True(t, 0*time.Millisecond <= exponentialBackoff.Next(0))
}

func TestExponentialBackoffJitter(t *testing.T) {

exponentialBackoff := NewExponentialBackoff(2*time.Millisecond, 10*time.Millisecond, 2.0, 2*time.Millisecond)

assert.True(t, 4*time.Millisecond < exponentialBackoff.Next(1))
assert.True(t, 4*time.Millisecond <= exponentialBackoff.Next(1))
}

func TestConstantBackoffNextTime(t *testing.T) {

constantBackoff := NewConstantBackoff(100, 50)

assert.NotEqual(t, 100*time.Millisecond, constantBackoff.Next(1))
assert.True(t, 100*time.Millisecond <= constantBackoff.Next(1))
}

func TestConstantBackoffWhenRetryIsZero(t *testing.T) {

constantBackoff := NewConstantBackoff(100, 50)

assert.Equal(t, 0*time.Millisecond, constantBackoff.Next(0))
assert.True(t, 0*time.Millisecond <= constantBackoff.Next(0))
}
4 changes: 2 additions & 2 deletions retry_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@ func TestRetrierWithExponentialBackoff(t *testing.T) {
exponentialBackoff := NewExponentialBackoff(2*time.Millisecond, 10*time.Millisecond, 2.0, 1*time.Millisecond)
exponentialRetrier := NewRetrier(exponentialBackoff)

assert.Equal(t, 4*time.Millisecond, exponentialRetrier.NextInterval(1))
assert.True(t, 4*time.Millisecond <= exponentialRetrier.NextInterval(1))
}

func TestRetrierWithConstantBackoff(t *testing.T) {

constantBackoff := NewConstantBackoff(2, 1)
constantRetrier := NewRetrier(constantBackoff)

assert.Equal(t, 2*time.Millisecond, constantRetrier.NextInterval(1))
assert.True(t, 2*time.Millisecond <= constantRetrier.NextInterval(1))
}

0 comments on commit 76b65a3

Please sign in to comment.