Skip to content

Commit

Permalink
Ignore already terminated supervisors
Browse files Browse the repository at this point in the history
  • Loading branch information
djmb committed Oct 11, 2023
1 parent 18bf911 commit 71f94b8
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 11 deletions.
7 changes: 3 additions & 4 deletions test/integration/processes_lifecycle_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,13 @@ class ProcessLifecycleTest < ActiveSupport::TestCase

setup do
@pid = run_supervisor_as_fork
puts "supervisor pid = #{@pid}"

wait_for_registered_processes(3, timeout: 1.second)
assert_registered_processes_for(:background, :default)
end

teardown do
terminate_supervisor if process_exists?(@pid)
terminate_supervisor(raise_on_missing: false) if process_exists?(@pid)
end

test "enqueue jobs in multiple queues" do
Expand Down Expand Up @@ -182,8 +181,8 @@ class ProcessLifecycleTest < ActiveSupport::TestCase
end

private
def terminate_supervisor
terminate_process(@pid)
def terminate_supervisor(raise_on_missing: true)
terminate_process(@pid, raise_on_missing: raise_on_missing)
end

def terminate_registered_processes
Expand Down
11 changes: 4 additions & 7 deletions test/test_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ def assert_no_registered_processes
end
end

def terminate_process(pid, timeout: 10, signal: :TERM, from_parent: true)
signal_process(pid, signal)
def terminate_process(pid, timeout: 10, signal: :TERM, from_parent: true, raise_on_missing: true)
signal_process(pid, signal, raise_on_missing: raise_on_missing)
wait_for_process_termination_with_timeout(pid, timeout: timeout, from_parent: from_parent)
end

Expand All @@ -78,15 +78,12 @@ def wait_for_process_termination_with_timeout(pid, timeout: 10, from_parent: tru
raise
end

def signal_process(pid, signal, wait: nil)
def signal_process(pid, signal, wait: nil, raise_on_missing: true)
Thread.new do
sleep(wait) if wait
puts "Sending #{signal} to #{pid}"
puts `ps aux | grep #{pid}`
Process.kill(signal, pid)
rescue Errno::ESRCH
puts "Exception was for #{signal} on process #{pid}"
raise
raise if raise_on_missing
end
end

Expand Down

0 comments on commit 71f94b8

Please sign in to comment.