MCPcopy Create free account
hub / github.com/compozy/agh / TestBootSessionRepair

Function TestBootSessionRepair

internal/daemon/daemon_test.go:5035–5068  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

5033}
5034
5035func TestBootSessionRepair(t *testing.T) {
5036 t.Parallel()
5037
5038 t.Run("ShouldRepairOnlyStoppedCrashOrErrorSessions", func(t *testing.T) {
5039 t.Parallel()
5040
5041 manager := &fakeSessionManager{
5042 infos: []*session.Info{
5043 {ID: "sess-crash", State: session.StateStopped, StopReason: store.StopAgentCrashed},
5044 {ID: "sess-error", State: session.StateStopped, StopReason: store.StopError},
5045 {ID: "sess-complete", State: session.StateStopped, StopReason: store.StopCompleted},
5046 {ID: "sess-active", State: session.StateActive, StopReason: store.StopAgentCrashed},
5047 },
5048 }
5049 state := &bootState{
5050 logger: discardLogger(),
5051 sessions: manager,
5052 }
5053 daemon := &Daemon{}
5054
5055 if err := daemon.bootSessionRepair(testutil.Context(t), state); err != nil {
5056 t.Fatalf("bootSessionRepair() error = %v", err)
5057 }
5058
5059 manager.mu.Lock()
5060 defer manager.mu.Unlock()
5061 if got, want := len(manager.repairCalls), 2; got != want {
5062 t.Fatalf("repair calls = %d, want %d", got, want)
5063 }
5064 if manager.repairCalls[0].SessionID != "sess-crash" || manager.repairCalls[1].SessionID != "sess-error" {
5065 t.Fatalf("repair calls = %#v, want crash then error sessions", manager.repairCalls)
5066 }
5067 })
5068}
5069
5070func (f *fakeSessionManager) Prompt(ctx context.Context, id string, msg string) (<-chan acp.AgentEvent, error) {
5071 f.mu.Lock()

Callers

nothing calls this directly

Calls 4

bootSessionRepairMethod · 0.95
ContextFunction · 0.92
discardLoggerFunction · 0.70
RunMethod · 0.65

Tested by

no test coverage detected