FIX: ensure child demon is correctly terminated from parent on stop

This commit is contained in:
Sam
2015-06-15 12:36:47 +10:00
parent 69ad0358c2
commit 861cd5d9b0
2 changed files with 90 additions and 9 deletions

View File

@@ -0,0 +1,40 @@
require 'spec_helper'
require 'demon/base'
describe Demon do
class RudeDemon < Demon::Base
def self.prefix
"rude"
end
def after_fork
Signal.trap("HUP"){}
Signal.trap("TERM"){}
sleep 999999
end
end
it "can terminate rude demons" do
skip("forking rspec has side effects")
# Forking rspec has all sorts of weird side effects
# this spec works but we must skip it to keep rspec
# state happy
RudeDemon.start
_,demon = RudeDemon.demons.first
pid = demon.pid
wait_for {
demon.alive?
}
demon.stop_timeout = 0.05
demon.stop
demon.start
running = !!(Process.kill(0, pid)) rescue false
expect(running).to eq(false)
end
end