| @@ -8,7 +8,7 @@ import ( | |||||||
|  |  | ||||||
| type BackoffFunc func(ctx context.Context, req Request, attempts int) (time.Duration, error) | type BackoffFunc func(ctx context.Context, req Request, attempts int) (time.Duration, error) | ||||||
|  |  | ||||||
| // exponential backoff multiplied by a factor of 0.1 second. | // exponential backoff is a function x^e multiplied by a factor of 0.1 second. | ||||||
| func exponentialBackoff(ctx context.Context, req Request, attempts int) (time.Duration, error) { | func exponentialBackoff(ctx context.Context, req Request, attempts int) (time.Duration, error) { | ||||||
| 	return time.Duration(math.Pow(float64(attempts), math.E)) * time.Millisecond * 100, nil | 	return time.Duration(math.Pow(float64(attempts), math.E)) * time.Millisecond * 100, nil | ||||||
| } | } | ||||||
|   | |||||||
| @@ -2,13 +2,19 @@ package client | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"context" | 	"context" | ||||||
| 	"math" |  | ||||||
| 	"testing" | 	"testing" | ||||||
| 	"time" | 	"time" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestBackoff(t *testing.T) { | func TestBackoff(t *testing.T) { | ||||||
| 	delta := time.Duration(0) | 	results := []time.Duration{ | ||||||
|  | 		0 * time.Second, | ||||||
|  | 		100 * time.Millisecond, | ||||||
|  | 		600 * time.Millisecond, | ||||||
|  | 		1900 * time.Millisecond, | ||||||
|  | 		4300 * time.Millisecond, | ||||||
|  | 		7900 * time.Millisecond, | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	c := NewClient() | 	c := NewClient() | ||||||
|  |  | ||||||
| @@ -18,10 +24,8 @@ func TestBackoff(t *testing.T) { | |||||||
| 			t.Fatal(err) | 			t.Fatal(err) | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		if d < delta { | 		if d != results[i] { | ||||||
| 			t.Fatalf("Expected greater than %v, got %v", delta, d) | 			t.Fatalf("Expected equal than %v, got %v", results[i], d) | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		delta = time.Millisecond * 100 * time.Duration(math.Pow(math.E, float64(i))) |  | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user