34 lines
1.3 KiB
Go
34 lines
1.3 KiB
Go
package work_recovery_test
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"git.cin.su/m/Assistant/contracts/work"
|
|
workdomain "git.cin.su/m/Assistant/modules/work/domain"
|
|
)
|
|
|
|
func TestAssessRunLivenessClassifiesDurableHeartbeat(t *testing.T) {
|
|
now := time.UnixMilli(10000)
|
|
run := work.AgentRun{ID: "run-1", DelegationID: "delegation-1", ImplementationID: "agent-1", ImplementationRevision: 1, Protocol: work.AgentExecutionProtocol("v1"), State: work.AgentRunRunning, StartedAtUnixMillis: 9000, UpdatedAtUnixMillis: 9000}
|
|
if got := workdomain.AssessRunLiveness(run, now.Add(100*time.Millisecond), time.Second); got.State != workdomain.RunLivenessStale || got.Age != 1100*time.Millisecond {
|
|
t.Fatalf("stale = %#v", got)
|
|
}
|
|
run.UpdatedAtUnixMillis = 9500
|
|
if got := workdomain.AssessRunLiveness(run, now, time.Second); got.State != workdomain.RunLivenessLive {
|
|
t.Fatalf("live = %#v", got)
|
|
}
|
|
}
|
|
|
|
func TestAssessRunLivenessDoesNotTreatCompletedAsStale(t *testing.T) {
|
|
run := work.AgentRun{State: work.AgentRunCompleted, UpdatedAtUnixMillis: 1}
|
|
got := workdomain.AssessRunLiveness(run, time.UnixMilli(10000), time.Second)
|
|
if got.State != workdomain.RunLivenessNotRun {
|
|
t.Fatalf("completed = %#v", got)
|
|
}
|
|
invalid := workdomain.AssessRunLiveness(run, time.Time{}, time.Second)
|
|
if invalid.State != workdomain.RunLivenessInvalid {
|
|
t.Fatalf("invalid = %#v", invalid)
|
|
}
|
|
}
|