diff --git a/test/dummy/app/jobs/continuable_job.rb b/test/dummy/app/jobs/continuable_job.rb index 00fdfdd24..4a7c2e2c7 100644 --- a/test/dummy/app/jobs/continuable_job.rb +++ b/test/dummy/app/jobs/continuable_job.rb @@ -11,6 +11,7 @@ class ContinuableJob < ApplicationJob def perform(result, pause: 0) step :step_one do + result.update!(queue_name: queue_name, status: "started", value: "step_one") sleep pause if pause > 0 result.update!(queue_name: queue_name, status: "stepped", value: "step_one") end diff --git a/test/integration/continuation_test.rb b/test/integration/continuation_test.rb index 8d5d863e5..708bcc6d3 100644 --- a/test/integration/continuation_test.rb +++ b/test/integration/continuation_test.rb @@ -32,7 +32,10 @@ def setup test "continuable job can be interrupted and resumed" do job = ContinuableJob.perform_later(@result, pause: 0.5.seconds) - sleep 0.2.seconds + # Wait for step_one to have started before signaling TERM, so the signal + # always arrives while the job is paused inside step_one and the interruption + # lands between the two steps + wait_while_with_timeout(3.seconds) { !JobResult.exists?(status: "started", value: "step_one") } signal_process(@pid, :TERM) wait_for_jobs_to_be_released_for(2.seconds)