forked from resque/resque
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmulti_queue_test.rb
More file actions
42 lines (33 loc) · 1.08 KB
/
multi_queue_test.rb
File metadata and controls
42 lines (33 loc) · 1.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
require "test_helper"
describe "Resque::MulitQueue" do
let(:redis) { Resque.redis }
let(:coder) { Resque::MultiJsonCoder.new }
before do
redis.flushall
end
it "blocks on pop" do
foo = Resque::Queue.new 'foo', redis, coder
bar = Resque::Queue.new 'bar', redis, coder
queue = Resque::MultiQueue.new([foo, bar], redis)
t = Thread.new { queue.pop }
job = { 'class' => 'GoodJob', 'args' => [35, 'tar'] }
bar << job
assert_equal [bar, job], t.join.value
end
it "nonblocking pop works" do
foo = Resque::Queue.new 'foo', redis, coder
bar = Resque::Queue.new 'bar', redis, coder
queue = Resque::MultiQueue.new([foo, bar], redis)
job = { 'class' => 'GoodJob', 'args' => [35, 'tar'] }
bar << job
assert_equal [bar, job], queue.pop(true)
end
it "blocks forever on pop" do
foo = Resque::Queue.new 'foo', redis, coder
bar = Resque::Queue.new 'bar', redis, coder
queue = Resque::MultiQueue.new([foo, bar], redis)
assert_raises Timeout::Error do
Timeout::timeout(2) { queue.pop }
end
end
end