github.com/simpleiot/simpleiot@v0.18.3/client/backoff_test.go (about)

     1  package client
     2  
     3  import (
     4  	"fmt"
     5  	"math"
     6  	"testing"
     7  	"time"
     8  )
     9  
    10  func TestBackoffFirstAttempt(t *testing.T) {
    11  	fmt.Println("exp: ", math.Exp2(1))
    12  	backoff := ExpBackoff(1, time.Second*6)
    13  	if backoff < time.Second*2 || backoff > 3*time.Second {
    14  		t.Error("backoff time is out of range: ", backoff)
    15  
    16  	}
    17  }
    18  
    19  func TestBackoffLargeAttempts(t *testing.T) {
    20  	backoff := ExpBackoff(400000, time.Second)
    21  
    22  	if backoff < time.Second {
    23  		t.Error("backoff time is too short: ", backoff)
    24  	}
    25  
    26  	if backoff > 2*time.Second {
    27  		t.Error("backoff time is too long: ", backoff)
    28  	}
    29  
    30  }
    31  
    32  func TestBackoff16(t *testing.T) {
    33  	backoff := ExpBackoff(16, time.Minute*6)
    34  	if backoff < time.Minute*6 || backoff > time.Minute*6+time.Second {
    35  		t.Error("backoff should be 6m, was: ", backoff)
    36  	}
    37  }