@@ -15,17 +15,13 @@ class ForkedProcessesLifecycleTest < ActiveSupport::TestCase
1515
1616 teardown do
1717 terminate_process ( @pid ) if process_exists? ( @pid )
18-
19- SolidQueue ::Process . destroy_all
20- SolidQueue ::Job . destroy_all
21- JobResult . delete_all
2218 end
2319
2420 test "enqueue jobs in multiple queues" do
2521 6 . times { |i | enqueue_store_result_job ( "job_#{ i } " ) }
2622 6 . times { |i | enqueue_store_result_job ( "job_#{ i } " , :default ) }
2723
28- wait_for_jobs_to_finish_for ( 0.5 . seconds )
24+ wait_for_jobs_to_finish_for ( 2 . seconds )
2925
3026 assert_equal 12 , JobResult . count
3127 6 . times { |i | assert_completed_job_results ( "job_#{ i } " , :background ) }
@@ -63,17 +59,18 @@ class ForkedProcessesLifecycleTest < ActiveSupport::TestCase
6359 signal_process ( @pid , :TERM , wait : 0.1 . second )
6460 end
6561
66- sleep ( 0.5 . seconds )
62+ sleep ( 1 . second )
6763 assert_clean_termination
6864 end
6965
7066 test "quit supervisor while there are jobs in-flight" do
7167 no_pause = enqueue_store_result_job ( "no pause" )
72- pause = enqueue_store_result_job ( "pause" , pause : 1 . seconds )
68+ pause = enqueue_store_result_job ( "pause" , pause : 1 . second )
7369
74- signal_process ( @pid , :QUIT , wait : 0.5 . second )
75- wait_for_jobs_to_finish_for ( 2.5 . seconds )
70+ signal_process ( @pid , :QUIT , wait : 0.4 . second )
71+ wait_for_jobs_to_finish_for ( 2 . seconds , except : pause )
7672
73+ wait_while_with_timeout ( 2 . seconds ) { process_exists? ( @pid ) }
7774 assert_not process_exists? ( @pid )
7875
7976 assert_completed_job_results ( "no pause" )
@@ -90,8 +87,8 @@ class ForkedProcessesLifecycleTest < ActiveSupport::TestCase
9087 no_pause = enqueue_store_result_job ( "no pause" )
9188 pause = enqueue_store_result_job ( "pause" , pause : 0.2 . seconds )
9289
93- signal_process ( @pid , :TERM , wait : 0.1 . second )
94- wait_for_jobs_to_finish_for ( 0.5 . seconds )
90+ signal_process ( @pid , :TERM , wait : 0.3 . second )
91+ wait_for_jobs_to_finish_for ( 3 . seconds )
9592
9693 assert_completed_job_results ( "no pause" )
9794 assert_completed_job_results ( "pause" )
@@ -108,7 +105,7 @@ class ForkedProcessesLifecycleTest < ActiveSupport::TestCase
108105 pause = enqueue_store_result_job ( "pause" , pause : 0.2 . seconds )
109106
110107 signal_process ( @pid , :INT , wait : 0.1 . second )
111- wait_for_jobs_to_finish_for ( 0.5 . seconds )
108+ wait_for_jobs_to_finish_for ( 2 . second )
112109
113110 assert_completed_job_results ( "no pause" )
114111 assert_completed_job_results ( "pause" )
@@ -124,8 +121,9 @@ class ForkedProcessesLifecycleTest < ActiveSupport::TestCase
124121 no_pause = enqueue_store_result_job ( "no pause" )
125122 pause = enqueue_store_result_job ( "pause" , pause : SolidQueue . shutdown_timeout + 10 . second )
126123
127- signal_process ( @pid , :TERM , wait : 0.1 . second )
128- wait_for_jobs_to_finish_for ( SolidQueue . shutdown_timeout + 0.1 . second )
124+ signal_process ( @pid , :TERM , wait : 0.5 . second )
125+
126+ sleep ( SolidQueue . shutdown_timeout + 0.5 . second )
129127
130128 assert_completed_job_results ( "no pause" )
131129 assert_job_status ( no_pause , :finished )
@@ -152,12 +150,12 @@ class ForkedProcessesLifecycleTest < ActiveSupport::TestCase
152150 2 . times { enqueue_store_result_job ( "no error" , :default , pause : 0.01 ) }
153151 error3 = enqueue_store_result_job ( "error" , :default , exception : RuntimeError )
154152
155- wait_for_jobs_to_finish_for ( 0.5 . seconds )
153+ wait_for_jobs_to_finish_for ( 2 . second , except : [ error1 , error2 , error3 ] )
156154
157155 assert_completed_job_results ( "no error" , :background , 3 )
158156 assert_completed_job_results ( "no error" , :default , 4 )
159157
160- assert_failures 3
158+ wait_while_with_timeout ( 1 . second ) { SolidQueue :: FailedExecution . count < 3 }
161159 [ error1 , error2 , error3 ] . each do |job |
162160 assert_job_status ( job , :failed )
163161 end
@@ -177,7 +175,7 @@ class ForkedProcessesLifecycleTest < ActiveSupport::TestCase
177175
178176 2 . times { enqueue_store_result_job ( "no exit" , :background ) }
179177
180- wait_for_jobs_to_finish_for ( 5 . seconds )
178+ wait_for_jobs_to_finish_for ( 3 . seconds , except : [ exit_job , pause_job ] )
181179
182180 assert_completed_job_results ( "no exit" , :default , 2 )
183181 assert_completed_job_results ( "no exit" , :background , 4 )
@@ -208,6 +206,7 @@ class ForkedProcessesLifecycleTest < ActiveSupport::TestCase
208206 assert_nil SolidQueue ::Process . find_by ( id : worker . id )
209207
210208 # Jobs were completed
209+ wait_for_jobs_to_finish_for ( 1 . second )
211210 assert_completed_job_results ( "pause" , :background )
212211 assert_completed_job_results ( "pause" , :default )
213212
@@ -218,7 +217,7 @@ class ForkedProcessesLifecycleTest < ActiveSupport::TestCase
218217 # And they can process jobs just fine
219218 enqueue_store_result_job ( "no_pause" )
220219 enqueue_store_result_job ( "no_pause" , :default )
221- wait_for_jobs_to_finish_for ( 0.2 . seconds )
220+ wait_for_jobs_to_finish_for ( 1 . second )
222221
223222 assert_completed_job_results ( "no_pause" , :background )
224223 assert_completed_job_results ( "no_pause" , :default )
@@ -228,19 +227,18 @@ class ForkedProcessesLifecycleTest < ActiveSupport::TestCase
228227 end
229228
230229 test "kill worker individually" do
231- killed_pause = enqueue_store_result_job ( "killed_pause" , pause : 1 . seconds )
230+ killed_pause = enqueue_store_result_job ( "killed_pause" , pause : 1 . second )
232231 enqueue_store_result_job ( "pause" , :default , pause : 0.5 . seconds )
233232
234233 worker = find_processes_registered_as ( "Worker" ) . detect { |process | process . metadata [ "queues" ] . include? "background" }
235-
236- signal_process ( worker . pid , :KILL , wait : 0.3 . second )
234+ signal_process ( worker . pid , :KILL , wait : 0.5 . seconds )
237235
238236 # Worker didn't have time to clean up or finish the work
239- sleep ( 0.7 . second )
237+ sleep ( 0.5 . second )
240238 assert SolidQueue ::Process . exists? ( id : worker . id )
241239
242240 # And there's a new worker that has been registered for the background queue
243- wait_for_registered_processes ( 4 , timeout : 3 . second )
241+ wait_for_registered_processes ( 4 , timeout : 5 . second )
244242
245243 # The job in the background queue was left claimed as the worker couldn't
246244 # finish orderly
@@ -252,7 +250,7 @@ class ForkedProcessesLifecycleTest < ActiveSupport::TestCase
252250 # The two current workers can process jobs just fine
253251 enqueue_store_result_job ( "no_pause" )
254252 enqueue_store_result_job ( "no_pause" , :default )
255- wait_for_jobs_to_finish_for ( 0.5 . seconds )
253+ sleep ( 2 . seconds )
256254
257255 assert_completed_job_results ( "no_pause" , :background )
258256 assert_completed_job_results ( "no_pause" , :default )
@@ -291,11 +289,15 @@ def enqueue_store_result_job(value, queue_name = :background, **options)
291289 end
292290
293291 def assert_completed_job_results ( value , queue_name = :background , count = 1 )
294- assert_equal count , JobResult . where ( queue_name : queue_name , status : "completed" , value : value ) . count
292+ skip_active_record_query_cache do
293+ assert_equal count , JobResult . where ( queue_name : queue_name , status : "completed" , value : value ) . count
294+ end
295295 end
296296
297297 def assert_started_job_result ( value , queue_name = :background , count = 1 )
298- assert_equal count , JobResult . where ( queue_name : queue_name , status : "started" , value : value ) . count
298+ skip_active_record_query_cache do
299+ assert_equal count , JobResult . where ( queue_name : queue_name , status : "started" , value : value ) . count
300+ end
299301 end
300302
301303 def assert_job_status ( active_job , status )
@@ -311,10 +313,8 @@ def assert_job_status(active_job, status)
311313 end
312314
313315 def assert_no_claimed_jobs
314- assert SolidQueue ::ClaimedExecution . none?
315- end
316-
317- def assert_failures ( count )
318- assert_equal count , SolidQueue ::FailedExecution . count
316+ skip_active_record_query_cache do
317+ assert SolidQueue ::ClaimedExecution . none?
318+ end
319319 end
320320end
0 commit comments