30 lines
1.1 KiB
Go
30 lines
1.1 KiB
Go
package model
|
|
|
|
import "testing"
|
|
|
|
func TestRecoveryDoesNotReopenTerminalOrUnknownWork(t *testing.T) {
|
|
for _, state := range []TaskState{TaskSucceeded, TaskFailed, TaskCancelled, TaskNeedsReview, TaskState("new-future-state")} {
|
|
if state.CanTransitionTo(TaskWaiting) || state.CanTransitionTo(TaskRunning) {
|
|
t.Fatalf("unsafe automatic restart from %s", state)
|
|
}
|
|
}
|
|
for _, safety := range []RecoverySafety{"", RecoveryReconcileOnly, "future"} {
|
|
if safety.CanRecoverAutomatically() {
|
|
t.Fatalf("unsafe default: %s", safety)
|
|
}
|
|
}
|
|
if !TaskRunning.CanTransitionTo(TaskNeedsReview) {
|
|
t.Fatal("unknown effects cannot be preserved")
|
|
}
|
|
}
|
|
func TestRetryPolicyRejectsUnboundedOrOverflowingParameters(t *testing.T) {
|
|
for _, p := range []RetryPolicy{{}, {MaxAttempts: 2, AttemptTimeoutMS: 1}, {MaxAttempts: 1, AttemptTimeoutMS: ^uint64(0)}, {MaxAttempts: 2, AttemptTimeoutMS: 1, InitialDelayMS: 100, MaxDelayMS: 1}} {
|
|
if p.Validate() == nil {
|
|
t.Fatalf("accepted unsafe policy: %+v", p)
|
|
}
|
|
}
|
|
if err := (RetryPolicy{MaxAttempts: 3, AttemptTimeoutMS: 1000, InitialDelayMS: 100, MaxDelayMS: 5000}).Validate(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|