backoff_test.go 596 B

123456789101112131415161718192021222324252627282930
  1. package backoff
  2. import (
  3. "testing"
  4. "time"
  5. "github.com/stretchr/testify/assert"
  6. )
  7. func TestWaitBetween(t *testing.T) {
  8. fn := Interval(time.Second)
  9. assert.EqualValues(t, time.Second, fn(1))
  10. }
  11. func TestExponential(t *testing.T) {
  12. fn := Exponential(time.Second)
  13. assert.EqualValues(t, time.Second, fn(1))
  14. }
  15. func TestLinearWithJitter(t *testing.T) {
  16. const rounds = 1000000
  17. var total time.Duration
  18. fn := LinearWithJitter(time.Second, 0.5)
  19. for i := 0; i < rounds; i++ {
  20. total += fn(1)
  21. }
  22. // 0.1% tolerance
  23. assert.True(t, total/time.Duration(rounds)-time.Second < time.Millisecond)
  24. }