github.com/vmg/backoff@v1.0.0/retry_test.go (about)

     1  package backoff
     2  
     3  import (
     4  	"errors"
     5  	"log"
     6  	"testing"
     7  )
     8  
     9  func TestRetry(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  	err := Retry(f, NewExponentialBackOff())
    28  	if err != nil {
    29  		t.Errorf("unexpected error: %s", err.Error())
    30  	}
    31  	if i != successOn {
    32  		t.Errorf("invalid number of retries: %d", i)
    33  	}
    34  }