internal/webhooks/retry_defaults_test.go
Rama main · réplica de lectura del repositorio original.
package webhooks
import (
"testing"
"time"
)
// TestDefaultRetryWindowSpansDays pins the intent behind the retry defaults: a
// receiver that is down for a weekend still gets its deliveries. The schedule
// mirrors queue.WebhookWorker.NextRetry (base * 2^(N-1), capped at 24 hours);
// jitter only shortens it, by at most 20%.
func TestDefaultRetryWindowSpansDays(t *testing.T) {
cfg := DefaultWebhookHTTPConfig()
if err := cfg.ValidateConfig(); err != nil {
t.Fatalf("default config does not validate: %v", err)
}
var window time.Duration
for attempt := 1; attempt <= *cfg.MaxRetries; attempt++ {
delay := time.Duration(cfg.RetryBackoffSeconds) * time.Second << uint(attempt-1)
window += min(delay, 24*time.Hour)
}
minWindow := window * 8 / 10 // largest jitter on every delay
if minWindow < 48*time.Hour {
t.Errorf("default retries can end after %v, want at least two days", minWindow)
}
if window > 4*24*time.Hour {
t.Errorf("default retries last up to %v, want under four days", window)
}
}