1
0
Fork 0
mirror of https://github.com/mperham/sidekiq.git synced 2022-11-09 13:52:34 -05:00

Implement Sidekiq::Stats.size

Useful for other libraries, like hirefire.
Implemented specifically to clean up a6de8329.
Will close #386 when merged.
This commit is contained in:
jc00ke 2012-09-03 12:36:38 -07:00
parent 0b2a6e9e2d
commit c93a75802c
2 changed files with 20 additions and 0 deletions

View file

@ -22,5 +22,14 @@ module Sidekiq
def backlog def backlog
queues_with_sizes.map {|_, size| size }.inject(0) {|memo, val| memo + val } queues_with_sizes.map {|_, size| size }.inject(0) {|memo, val| memo + val }
end end
def size(*queues)
return backlog if queues.empty?
queues.
map(&:to_s).
inject(0) { |memo, queue|
memo += Sidekiq.redis { |conn| conn.llen("queue:#{queue}") }
}
end
end end
end end

View file

@ -76,16 +76,27 @@ class TestStats < MiniTest::Unit::TestCase
conn.sadd 'queues', 'bar' conn.sadd 'queues', 'bar'
end end
end end
describe "queues_with_counts" do describe "queues_with_counts" do
it "returns queue names and corresponding job counts" do it "returns queue names and corresponding job counts" do
assert_equal [["foo", 1], ["bar", 2]], Sidekiq::Stats.queues_with_sizes assert_equal [["foo", 1], ["bar", 2]], Sidekiq::Stats.queues_with_sizes
end end
end end
describe "backlog" do describe "backlog" do
it "returns count of all jobs yet to be processed" do it "returns count of all jobs yet to be processed" do
assert_equal 3, Sidekiq::Stats.backlog assert_equal 3, Sidekiq::Stats.backlog
end end
end end
describe "size" do
it "returns size of queues" do
assert_equal 1, Sidekiq::Stats.size(:foo)
assert_equal 1, Sidekiq::Stats.size("foo")
assert_equal 3, Sidekiq::Stats.size("foo", "bar")
assert_equal 3, Sidekiq::Stats.size
end
end
end end
end end