test/worker_test.rb in localjob-0.0.2 vs test/worker_test.rb in localjob-0.1.0

- old
+ new

@@ -40,46 +40,51 @@ a.kill assert_equal 0, @localjob.size end - def test_workers_listen_on_multiple_queues - @localjob << WalrusJob.new("move") - - other = queue("other-queue") - other << WalrusJob.new("dance") - - @worker.channel << 'other-queue' - - a = Thread.start { @worker.work } - - sleep 0.01 - a.kill - - assert_equal 0, @localjob.size - assert_equal 0, other.size - end - def test_worker_doesnt_die_on_bad_serialization @localjob.queue.send "--- !ruby/object:Whatever {}\n" a = Thread.start { @worker.work } sleep 0.01 a.kill end - + on_platform 'linux' do + # This won't work on OS X because the SysV IPC gem apparently doesnt give us + # interrupt syscalls to give us signals. def test_sigquit_terminates_the_worker @localjob << WalrusJob.new("move") assert_equal 1, @localjob.size pid = fork { @worker.work } + # Hack to account for race condition, 0.01s should be plenty + sleep 0.1 + Process.kill("QUIT", pid) Process.wait assert_equal 0, @localjob.size + end + + def test_workers_listen_on_multiple_queues + @localjob << WalrusJob.new("move") + + other = queue("other-queue") + other << WalrusJob.new("dance") + + @worker.channel << 'other-queue' + + a = Thread.start { @worker.work } + + sleep 0.01 + a.kill + + assert_equal 0, @localjob.size + assert_equal 0, other.size end end end