( t *testing.T, requestStopErr error, forceStopErr error, transition func(context.Context, *Service, string, ActorContext) error, )
| 6279 | } |
| 6280 | |
| 6281 | func assertTerminalStopFailureLeavesRunActive( |
| 6282 | t *testing.T, |
| 6283 | requestStopErr error, |
| 6284 | forceStopErr error, |
| 6285 | transition func(context.Context, *Service, string, ActorContext) error, |
| 6286 | ) { |
| 6287 | t.Helper() |
| 6288 | |
| 6289 | store := newInMemoryManagerStore() |
| 6290 | executor := &recordingSessionExecutor{ |
| 6291 | requestStopErr: requestStopErr, |
| 6292 | forceStopErr: forceStopErr, |
| 6293 | } |
| 6294 | manager := newTaskManagerForTestWithOptions( |
| 6295 | t, |
| 6296 | store, |
| 6297 | WithSessionExecutor(executor), |
| 6298 | WithCancelGracePeriod(0), |
| 6299 | ) |
| 6300 | actor := validActorContext() |
| 6301 | runningRun := createRunningRunForTest(t, manager, actor) |
| 6302 | |
| 6303 | err := transition(context.Background(), manager, runningRun.ID, actor) |
| 6304 | if err == nil { |
| 6305 | t.Fatal("transition() error = nil, want stop failure") |
| 6306 | } |
| 6307 | |
| 6308 | storedRun, getRunErr := store.GetTaskRun(context.Background(), runningRun.ID) |
| 6309 | if getRunErr != nil { |
| 6310 | t.Fatalf("GetTaskRun() error = %v", getRunErr) |
| 6311 | } |
| 6312 | if got, want := storedRun.Status, TaskRunStatusRunning; got != want { |
| 6313 | t.Fatalf("storedRun.Status = %q, want %q", got, want) |
| 6314 | } |
| 6315 | if !storedRun.EndedAt.IsZero() { |
| 6316 | t.Fatalf("storedRun.EndedAt = %v, want zero", storedRun.EndedAt) |
| 6317 | } |
| 6318 | if got, want := store.tasks[storedRun.TaskID].Status, TaskStatusInProgress; got != want { |
| 6319 | t.Fatalf("task.Status = %q, want %q", got, want) |
| 6320 | } |
| 6321 | if len(executor.requestStopCalls) != 1 { |
| 6322 | t.Fatalf("len(requestStopCalls) = %d, want 1", len(executor.requestStopCalls)) |
| 6323 | } |
| 6324 | if requestStopErr != nil { |
| 6325 | if len(executor.forceStopCalls) != 0 { |
| 6326 | t.Fatalf("len(forceStopCalls) = %d, want 0", len(executor.forceStopCalls)) |
| 6327 | } |
| 6328 | return |
| 6329 | } |
| 6330 | if len(executor.forceStopCalls) != 1 { |
| 6331 | t.Fatalf("len(forceStopCalls) = %d, want 1", len(executor.forceStopCalls)) |
| 6332 | } |
| 6333 | } |
| 6334 | |
| 6335 | func TestManagerTaskReconciliationAcrossDependenciesAndRuns(t *testing.T) { |
| 6336 | t.Parallel() |
no test coverage detected