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