@@ -26,9 +26,11 @@ class ProcessRecoveryTest < ActiveSupport::TestCase
2626    worker_process  =  SolidQueue ::Process . find_by ( kind : "Worker" ) 
2727    assert  worker_process 
2828
29-     # Enqueue a job and manually claim it for the worker to avoid timing races 
30-     job  =  enqueue_store_result_job ( 42 ) 
31-     claimed_execution  =  SolidQueue ::ReadyExecution . claim ( "*" ,  5 ,  worker_process ) . first 
29+     # Enqueue a job and wait for it to be claimed 
30+     StoreResultJob . perform_later ( 42 ,  pause : 10 . seconds ) 
31+     wait_while_with_timeout ( 3 . seconds )  {  SolidQueue ::ClaimedExecution . none?  } 
32+ 
33+     claimed_execution  =  SolidQueue ::ClaimedExecution . last 
3234    assert  claimed_execution . present? 
3335    assert_equal  worker_process . id ,  claimed_execution . process_id 
3436
@@ -40,9 +42,8 @@ class ProcessRecoveryTest < ActiveSupport::TestCase
4042    worker_pid  =  worker_process . pid 
4143    terminate_process ( worker_pid ,  signal : :KILL ) 
4244
43- 
4445    # Wait for the supervisor to reap the worker and fail the job 
45-     wait_for_failed_executions ( 1 ,   timeout :  5 . seconds ) 
46+     wait_while_with_timeout ( 3 . seconds )   {   SolidQueue :: FailedExecution . none?   } 
4647
4748    # Assert the execution is failed 
4849    failed_execution  =  SolidQueue ::FailedExecution . last 
@@ -53,32 +54,4 @@ class ProcessRecoveryTest < ActiveSupport::TestCase
5354    wait_for_registered_processes ( 2 ,  timeout : 5 . seconds ) 
5455    assert_operator  SolidQueue ::Process . where ( kind : "Worker" ) . count ,  :>= ,  1 
5556  end 
56- 
57-   private 
58-     def  assert_registered_workers_for ( *queues ,  supervisor_pid : nil ) 
59-       workers  =  find_processes_registered_as ( "Worker" ) 
60-       registered_queues  =  workers . map  {  |process | process . metadata [ "queues" ]  } . compact 
61-       assert_equal  queues . map ( &:to_s ) . sort ,  registered_queues . sort 
62-       if  supervisor_pid 
63-         assert_equal  [  supervisor_pid  ] ,  workers . map  {  |process | process . supervisor . pid  } . uniq 
64-       end 
65-     end 
66- 
67-     def  enqueue_store_result_job ( value ,  queue_name  =  :default ,  **options ) 
68-       StoreResultJob . set ( queue : queue_name ) . perform_later ( value ,  **options ) 
69-     end 
70- 
71-     def  assert_no_claimed_jobs 
72-       skip_active_record_query_cache  do 
73-         assert_empty  SolidQueue ::ClaimedExecution . all 
74-       end 
75-     end 
76- 
77-     def  wait_for_claimed_executions ( count ,  timeout : 1 . second ) 
78-       wait_for ( timeout : timeout )  {  SolidQueue ::ClaimedExecution . count  == count  } 
79-     end 
80- 
81-     def  wait_for_failed_executions ( count ,  timeout : 1 . second ) 
82-       wait_for ( timeout : timeout )  {  SolidQueue ::FailedExecution . count  == count  } 
83-     end 
8457end 
0 commit comments