mirror of
https://github.com/dunglas/frankenphp.git
synced 2025-09-26 19:41:13 +08:00
42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
package frankenphp
|
|
|
|
import (
|
|
"github.com/stretchr/testify/assert"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestExponentialBackoff_Reset(t *testing.T) {
|
|
e := &exponentialBackoff{
|
|
maxBackoff: 5 * time.Second,
|
|
minBackoff: 500 * time.Millisecond,
|
|
maxConsecutiveFailures: 3,
|
|
}
|
|
|
|
assert.False(t, e.recordFailure())
|
|
assert.False(t, e.recordFailure())
|
|
e.recordSuccess()
|
|
|
|
e.mu.RLock()
|
|
defer e.mu.RUnlock()
|
|
assert.Equal(t, 0, e.failureCount, "expected failureCount to be reset to 0")
|
|
assert.Equal(t, e.backoff, e.minBackoff, "expected backoff to be reset to minBackoff")
|
|
}
|
|
|
|
func TestExponentialBackoff_Trigger(t *testing.T) {
|
|
e := &exponentialBackoff{
|
|
maxBackoff: 500 * 3 * time.Millisecond,
|
|
minBackoff: 500 * time.Millisecond,
|
|
maxConsecutiveFailures: 3,
|
|
}
|
|
|
|
assert.False(t, e.recordFailure())
|
|
assert.False(t, e.recordFailure())
|
|
assert.True(t, e.recordFailure())
|
|
|
|
e.mu.RLock()
|
|
defer e.mu.RUnlock()
|
|
assert.Equal(t, e.failureCount, e.maxConsecutiveFailures, "expected failureCount to be maxConsecutiveFailures")
|
|
assert.Equal(t, e.backoff, e.maxBackoff, "expected backoff to be maxBackoff")
|
|
}
|