31 lines
883 B
Go
31 lines
883 B
Go
package entity
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestCalculateNextBackoff_SchedulesCorrectDelays(t *testing.T) {
|
|
now := time.Now()
|
|
expiresAt := now.Add(5 * 24 * time.Hour)
|
|
|
|
// Attempt 2 -> +5 min
|
|
next, delayDsn, perm := CalculateNextBackoff(now, 2, expiresAt)
|
|
if perm || delayDsn || next.Sub(now) < 4*time.Minute {
|
|
t.Errorf("attempt 2 backoff mismatch: next=%v, delayDsn=%v, perm=%v", next, delayDsn, perm)
|
|
}
|
|
|
|
// Attempt 4 -> +1 hr + delayDsn=true
|
|
next, delayDsn, perm = CalculateNextBackoff(now, 4, expiresAt)
|
|
if perm || !delayDsn || next.Sub(now) < 55*time.Minute {
|
|
t.Errorf("attempt 4 backoff mismatch: next=%v, delayDsn=%v, perm=%v", next, delayDsn, perm)
|
|
}
|
|
|
|
// Expired -> permanent failure
|
|
expiredTime := now.Add(-1 * time.Hour)
|
|
_, _, perm = CalculateNextBackoff(now, 5, expiredTime)
|
|
if !perm {
|
|
t.Errorf("expected permanent failure for expired job")
|
|
}
|
|
}
|