github.com/vmg/backoff@v1.0.0/ticker_test.go (about) 1 package backoff 2 3 import ( 4 "errors" 5 "log" 6 "testing" 7 ) 8 9 func TestTicker(t *testing.T) { 10 const successOn = 3 11 var i = 0 12 13 // This function is successfull on "successOn" calls. 14 f := func() error { 15 i++ 16 log.Printf("function is called %d. time\n", i) 17 18 if i == successOn { 19 log.Println("OK") 20 return nil 21 } 22 23 log.Println("error") 24 return errors.New("error") 25 } 26 27 b := NewExponentialBackOff() 28 ticker := NewTicker(b) 29 30 var err error 31 for _ = range ticker.C { 32 if err = f(); err != nil { 33 t.Log(err) 34 continue 35 } 36 37 break 38 } 39 if err != nil { 40 t.Errorf("unexpected error: %s", err.Error()) 41 } 42 if i != successOn { 43 t.Errorf("invalid number of retries: %d", i) 44 } 45 }