53 lines
1.7 KiB
Go
53 lines
1.7 KiB
Go
package application
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
"git.cin.su/m/Assistant/contracts/work"
|
|
)
|
|
|
|
type recoveryOnlyStore struct {
|
|
recovered int64
|
|
claimed bool
|
|
}
|
|
|
|
func (s *recoveryOnlyStore) RecoverStaleClaims(context.Context, int64, int64) (int64, error) {
|
|
return s.recovered, nil
|
|
}
|
|
func (s *recoveryOnlyStore) ClaimNextDispatch(context.Context, string, int64) (work.AgentDispatchQueueItem, error) {
|
|
s.claimed = true
|
|
return work.AgentDispatchQueueItem{}, nil
|
|
}
|
|
func (s *recoveryOnlyStore) LoadDispatchIntent(context.Context, string) (work.AgentDispatchIntent, error) {
|
|
return work.AgentDispatchIntent{}, nil
|
|
}
|
|
func (s *recoveryOnlyStore) CompleteDispatch(context.Context, string, string, work.AgentDispatchQueueState, int64) error {
|
|
return nil
|
|
}
|
|
func (s *recoveryOnlyStore) RetryDispatch(context.Context, string, string, int64, time.Duration) error {
|
|
return nil
|
|
}
|
|
func (s *recoveryOnlyStore) SaveDispatchIntent(context.Context, work.AgentDispatchIntent) error {
|
|
return nil
|
|
}
|
|
func (s *recoveryOnlyStore) SaveAgentLease(context.Context, work.AgentLease) error { return nil }
|
|
func (s *recoveryOnlyStore) RenewAgentLease(context.Context, work.AgentLease, time.Time) error {
|
|
return nil
|
|
}
|
|
func (s *recoveryOnlyStore) AcceptAgentCallback(context.Context, work.AgentCallback) error {
|
|
return nil
|
|
}
|
|
|
|
func TestRecoverOnlyWorkerCycleNeverClaimsDispatch(t *testing.T) {
|
|
store := &recoveryOnlyStore{recovered: 2}
|
|
result, err := RecoverOnlyWorkerCycle(context.Background(), store, time.UnixMilli(1_700_000_000_000), time.Minute)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if result.RecoveredClaims != 2 || !result.Idle || store.claimed {
|
|
t.Fatalf("unexpected recovery-only result: %+v claimed=%t", result, store.claimed)
|
|
}
|
|
}
|