test/worker_test.rb in rocketjob-1.1.1 vs test/worker_test.rb in rocketjob-1.1.2

- old
+ new

@@ -18,10 +18,11 @@ ) end teardown do @job.destroy if @job && !@job.new_record? + @worker.destroy if @worker && !@worker.new_record? end context '.config' do should 'support multiple databases' do assert_equal 'test_rocketjob', RocketJob::Job.collection.db.name @@ -35,9 +36,62 @@ @worker.stop! end @worker.run assert_equal :stopping, @worker.state, @worker.inspect end + end + + context '#zombie?' do + setup do + RocketJob::Config.instance.heartbeat_seconds = 1 + end + + should 'when not a zombie' do + @worker.build_heartbeat( + updated_at: 2.seconds.ago, + current_threads: 3 + ) + @worker.started! + assert_equal false, @worker.zombie? + assert_equal false, @worker.zombie?(4) + assert_equal true, @worker.zombie?(1) + end + + should 'when a zombie' do + @worker.build_heartbeat( + updated_at: 1.hour.ago, + current_threads: 5 + ) + @worker.started! + assert_equal true, @worker.zombie? + end + end + + context '.destroy_zombies' do + setup do + RocketJob::Config.instance.heartbeat_seconds = 1 + end + + should 'when not a zombie' do + @worker.build_heartbeat( + updated_at: 2.seconds.ago, + current_threads: 3 + ) + @worker.started! + assert_equal 0, RocketJob::Worker.destroy_zombies + assert_equal true, RocketJob::Worker.where(id: @worker.id).exist? + end + + should 'when a zombie' do + @worker.build_heartbeat( + updated_at: 10.seconds.ago, + current_threads: 3 + ) + @worker.started! + assert_equal 1, RocketJob::Worker.destroy_zombies + assert_equal false, RocketJob::Worker.where(id: @worker.id).exist? + end + end end end