Files

83 lines
2.2 KiB
Go
Raw Permalink Normal View History

package recovery
import (
"testing"
"time"
"github.com/stretchr/testify/assert"
)
func TestDefaultRetryPolicy(t *testing.T) {
policy := DefaultRetryPolicy()
assert.NotNil(t, policy)
assert.Equal(t, time.Second, policy.InitialInterval)
assert.Equal(t, time.Minute, policy.MaximumInterval)
assert.Equal(t, 2.0, policy.BackoffCoefficient)
assert.Equal(t, int32(5), policy.MaximumAttempts)
}
func TestActivityRetryPolicy(t *testing.T) {
policy := ActivityRetryPolicy()
assert.NotNil(t, policy)
assert.Equal(t, 2*time.Second, policy.InitialInterval)
assert.Equal(t, 5*time.Minute, policy.MaximumInterval)
assert.Equal(t, 2.0, policy.BackoffCoefficient)
assert.Equal(t, int32(3), policy.MaximumAttempts)
}
func TestLLMActivityRetryPolicy(t *testing.T) {
policy := LLMActivityRetryPolicy()
assert.NotNil(t, policy)
assert.Equal(t, 5*time.Second, policy.InitialInterval)
assert.Equal(t, 10*time.Minute, policy.MaximumInterval)
assert.Equal(t, 1.5, policy.BackoffCoefficient)
assert.Equal(t, int32(5), policy.MaximumAttempts)
}
func TestToTemporalRetryPolicy(t *testing.T) {
policy := DefaultRetryPolicy()
temporal := policy.ToTemporalRetryPolicy()
assert.NotNil(t, temporal)
assert.Equal(t, time.Second, temporal.InitialInterval)
assert.Equal(t, time.Minute, temporal.MaximumInterval)
assert.Equal(t, 2.0, temporal.BackoffCoefficient)
assert.Equal(t, int32(5), temporal.MaximumAttempts)
}
func TestNilRetryPolicyToTemporal(t *testing.T) {
var policy *RetryPolicy
temporal := policy.ToTemporalRetryPolicy()
assert.Nil(t, temporal)
}
func TestIsRetryableError(t *testing.T) {
// Nil error is not retryable
assert.False(t, IsRetryableError(nil))
// Generic errors are retryable
assert.True(t, IsRetryableError(assert.AnError))
}
func TestRetryCount(t *testing.T) {
rc := RetryCount{Current: 0, Maximum: 3}
assert.True(t, rc.CanRetry())
rc.Increment()
assert.Equal(t, 1, rc.Current)
assert.True(t, rc.CanRetry())
rc.Increment()
rc.Increment()
assert.Equal(t, 3, rc.Current)
assert.False(t, rc.CanRetry())
}
func TestRetryCountUnlimited(t *testing.T) {
rc := RetryCount{Current: 100, Maximum: 0}
assert.True(t, rc.CanRetry())
rc.Increment()
assert.True(t, rc.CanRetry())
}