package backoff import ( "errors" "log" "testing" ) func TestRetry(t *testing.T) { const successOn = 3 var i = 0 // This function is successfull on "successOn" calls. f := func() error { i++ log.Printf("function is called %d. time\n", i) if i == successOn { log.Println("OK") return nil } log.Println("error") return errors.New("error") } err := Retry(f, NewExponentialBackOff()) if err != nil { t.Errorf("unexpected error: %s", err.Error()) } if i != successOn { t.Errorf("invalid number of retries: %d", i) } }