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  }