(t *testing.T)
| 5033 | } |
| 5034 | |
| 5035 | func 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 | |
| 5070 | func (f *fakeSessionManager) Prompt(ctx context.Context, id string, msg string) (<-chan acp.AgentEvent, error) { |
| 5071 | f.mu.Lock() |
nothing calls this directly
no test coverage detected