test/unit/pigeon_queue_test.rb in pigeon-0.5.2 vs test/unit/pigeon_queue_test.rb in pigeon-0.6.0
- old
+ new
@@ -11,21 +11,11 @@
def inspect
"<#{@tag}>"
end
end
-
- def setup
- @engine = Pigeon::Engine.new
- Pigeon::Engine.register_engine(@engine)
- end
-
- def teardown
- Pigeon::Engine.unregister_engine(@engine)
- end
-
def test_empty_state
queue = Pigeon::Queue.new
assert_equal 0, queue.length
assert_equal true, queue.empty?
@@ -34,172 +24,224 @@
assert_equal [ ], queue.processors
end
def test_cycling
- queue = Pigeon::Queue.new
+ engine do
+ queue = Pigeon::Queue.new
- task = Pigeon::Task.new
+ task = Pigeon::Task.new
- assert_equal task, queue << task
+ assert_equal task, queue << task
+
+ assert_eventually do
+ queue.peek == task
+ end
- assert queue.peek
- assert_equal 1, queue.length
- assert !queue.empty?
+ assert queue.peek
+ assert_equal 1, queue.length
+ assert !queue.empty?
- found_task = queue.pop
+ found_task = queue.pop
- assert_equal task, found_task
+ assert_equal task, found_task
- assert_equal 0, queue.length
- assert queue.empty?
+ assert_equal 0, queue.length
+ assert queue.empty?
+ end
end
def test_filtering
- queue = Pigeon::Queue.new
+ engine do
+ queue = Pigeon::Queue.new
- tasks = (0..9).to_a.collect do |n|
- queue << TaggedTask.new(n)
- end
+ tasks = (0..9).to_a.collect do |n|
+ queue << TaggedTask.new(n)
+ end
+
+ assert_eventually do
+ queue.length == 10
+ end
- assert_equal (0..9).to_a, tasks.to_a.collect(&:tag)
+ assert_equal (0..9).to_a, tasks.to_a.collect(&:tag)
- assert_equal tasks[0], queue.peek
+ assert_equal tasks[0], queue.peek
- selected_task = queue.peek do |task|
- task.tag > 0
- end
+ selected_task = queue.peek do |task|
+ task.tag > 0
+ end
- assert_equal tasks[1], selected_task
+ assert_equal tasks[1], selected_task
- queue.filter(:over_7) do |task|
- task.tag > 7
- end
+ queue.filter(:over_7) do |task|
+ task.tag > 7
+ end
- assert_equal tasks[8], queue.peek(:over_7)
- assert_equal 2, queue.length(:over_7)
+ assert_equal tasks[8], queue.peek(:over_7)
+ assert_equal 2, queue.length(:over_7)
- pulled_task = queue.pop(:over_7)
+ pulled_task = queue.pop(:over_7)
- assert_equal 9, queue.length
+ assert_equal 9, queue.length
- assert_equal tasks[9], queue.peek(:over_7)
- assert_equal 1, queue.length(:over_7)
+ assert_equal tasks[9], queue.peek(:over_7)
+ assert_equal 1, queue.length(:over_7)
- queue.pop(:over_7)
+ queue.pop(:over_7)
- assert_equal nil, queue.peek(:over_7)
- assert_equal 0, queue.length(:over_7)
- assert_equal true, queue.empty?(:over_7)
+ assert_equal nil, queue.peek(:over_7)
+ assert_equal 0, queue.length(:over_7)
+ assert_equal true, queue.empty?(:over_7)
- new_task = queue << TaggedTask.new(10)
+ new_task = queue << TaggedTask.new(10)
- assert_equal new_task, queue.peek(:over_7)
- assert_equal 1, queue.length(:over_7)
- assert_equal false, queue.empty?(:over_7)
+ assert_eventually do
+ queue.include?(new_task)
+ end
- queue.claim(new_task)
+ assert_equal new_task, queue.peek(:over_7)
+ assert_equal 1, queue.length(:over_7)
+ assert_equal false, queue.empty?(:over_7)
- assert_equal nil, queue.peek(:over_7)
- assert_equal 0, queue.length(:over_7)
- assert_equal true, queue.empty?(:over_7)
+ queue.claim(new_task)
+
+ assert_equal nil, queue.peek(:over_7)
+ assert_equal 0, queue.length(:over_7)
+ assert_equal true, queue.empty?(:over_7)
+ end
end
def test_observe
- queue = Pigeon::Queue.new
+ engine do
+ queue = Pigeon::Queue.new
- tasks = (0..9).to_a.collect do |n|
- queue << TaggedTask.new(n)
- end
+ tasks = (0..9).to_a.collect do |n|
+ queue << TaggedTask.new(n)
+ end
- queue.filter(:odd) do |task|
- task.tag % 2 == 1
- end
+ queue.filter(:odd) do |task|
+ task.tag % 2 == 1
+ end
+
+ assert_eventually(2) do
+ queue.length == 10
+ end
- assert_equal tasks[1], queue.peek(:odd)
- assert_equal 5, queue.length(:odd)
+ assert_equal tasks[1], queue.peek(:odd)
+ assert_equal 5, queue.length(:odd)
- assert_equal [ tasks[1], tasks[3], tasks[5], tasks[7], tasks[9] ], queue.pull(:odd)
+ assert_equal [ tasks[1], tasks[3], tasks[5], tasks[7], tasks[9] ], queue.pull(:odd)
- assert_equal 5, queue.length
- assert_equal 0, queue.length(:odd)
+ assert_equal 5, queue.length
+ assert_equal 0, queue.length(:odd)
- added_odd = nil
+ added_odd = nil
- queue.observe(:odd) do |task|
- added_odd = task
- end
+ queue.observe(:odd) do |task|
+ added_odd = task
+ end
- queue << TaggedTask.new(10)
+ new_task = queue << TaggedTask.new(10)
+
+ assert_eventually(2) do
+ queue.include?(new_task)
+ end
- assert_equal nil, added_odd
+ assert_equal nil, added_odd
- odd_1 = queue << TaggedTask.new(11)
+ odd_1 = queue << TaggedTask.new(11)
+
+ assert_eventually(2) do
+ queue.include?(odd_1)
+ end
- assert_equal odd_1, added_odd
+ assert_equal odd_1, added_odd
- claimed_task = nil
- has_run = false
+ claimed_task = nil
+ has_run = false
- queue.observe(:odd) do |task|
- claimed_task = queue.claim(task)
- has_run = true
- end
+ queue.observe(:odd) do |task|
+ claimed_task = queue.claim(task)
+ has_run = true
+ end
- # Observer callbacks are not triggered on existing data, only on new
- # insertions.
- assert_equal false, has_run
- assert_equal nil, claimed_task
- assert_equal 7, queue.length
- assert_equal 1, queue.length(:odd)
+ # Observer callbacks are not triggered on existing data, only on new
+ # insertions.
+ assert_equal false, has_run
+ assert_equal nil, claimed_task
+ assert_equal 7, queue.length
+ assert_equal 1, queue.length(:odd)
- queue << TaggedTask.new(12)
+ new_task = queue << TaggedTask.new(12)
+
+ assert_eventually(2) do
+ queue.include?(new_task)
+ end
- assert_equal nil, claimed_task
- assert_equal 8, queue.length
- assert_equal 1, queue.length(:odd)
+ assert_equal nil, claimed_task
+ assert_equal 8, queue.length
+ assert_equal 1, queue.length(:odd)
- odd_2 = queue << TaggedTask.new(13)
+ odd_2 = queue << TaggedTask.new(13)
+
+ assert_eventually(2) do
+ claimed_task == odd_2
+ end
- # Adding a task that matches the filter triggers the callback.
- assert_equal odd_2, claimed_task
- assert_equal true, has_run
+ # Adding a task that matches the filter triggers the callback.
+ assert_equal odd_2, claimed_task
+ assert_equal true, has_run
- # Clear out all of the odd entries.
- queue.pull(:odd)
+ # Clear out all of the odd entries.
+ queue.pull(:odd)
- claimed_task = nil
- has_run = false
+ claimed_task = nil
+ has_run = false
- queue << TaggedTask.new(14)
+ new_task = queue << TaggedTask.new(14)
+
+ assert_eventually(2) do
+ queue.include?(new_task)
+ end
- assert_equal nil, claimed_task
- assert_equal false, has_run
+ assert_equal nil, claimed_task
+ assert_equal false, has_run
- odd_2 = queue << TaggedTask.new(15)
+ odd_2 = queue << TaggedTask.new(15)
+
+ assert_eventually(2) do
+ odd_2 == claimed_task
+ end
- assert_equal odd_2, claimed_task
- assert_equal true, has_run
+ assert_equal odd_2, claimed_task
+ assert_equal true, has_run
- assert_equal 8, queue.length
- assert_equal 0, queue.length(:odd)
+ assert_equal 8, queue.length
+ assert_equal 0, queue.length(:odd)
+ end
end
def test_can_add_during_observe
- queue = Pigeon::Queue.new
+ engine do
+ queue = Pigeon::Queue.new
- queue.observe do |task|
- if (task.tag < 10)
- queue.claim(task)
+ queue.observe do |task|
+ if (task.tag < 10)
+ queue.claim(task)
- queue << TaggedTask.new(task.tag + 1)
+ queue << TaggedTask.new(task.tag + 1)
+ end
end
- end
- queue << TaggedTask.new(0)
+ new_task = queue << TaggedTask.new(0)
+
+ assert_eventually(2) do
+ queue.peek
+ end
- assert queue.peek
- assert_equal 10, queue.peek.tag
- assert_equal 1, queue.length
- assert queue.peek
+ assert queue.peek
+ assert_equal 10, queue.peek.tag
+ assert_equal 1, queue.length
+ assert queue.peek
+ end
end
end