Files
orbit/pulse/model/state_test.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)
}
}