Ctrl K
ComunidadGuías…

internal/webhooks/retry_defaults_test.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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)
	}
}