From c93a75802c8ab997ac4fb996951699ff7b77f0db Mon Sep 17 00:00:00 2001 From: jc00ke Date: Mon, 3 Sep 2012 12:36:38 -0700 Subject: [PATCH] Implement Sidekiq::Stats.size Useful for other libraries, like hirefire. Implemented specifically to clean up a6de8329. Will close #386 when merged. --- lib/sidekiq/stats.rb | 9 +++++++++ test/test_stats.rb | 11 +++++++++++ 2 files changed, 20 insertions(+) diff --git a/lib/sidekiq/stats.rb b/lib/sidekiq/stats.rb index a39011d7..29288155 100644 --- a/lib/sidekiq/stats.rb +++ b/lib/sidekiq/stats.rb @@ -22,5 +22,14 @@ module Sidekiq def backlog queues_with_sizes.map {|_, size| size }.inject(0) {|memo, val| memo + val } 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 diff --git a/test/test_stats.rb b/test/test_stats.rb index 16477656..3c9932b5 100644 --- a/test/test_stats.rb +++ b/test/test_stats.rb @@ -76,16 +76,27 @@ class TestStats < MiniTest::Unit::TestCase conn.sadd 'queues', 'bar' end end + describe "queues_with_counts" do it "returns queue names and corresponding job counts" do assert_equal [["foo", 1], ["bar", 2]], Sidekiq::Stats.queues_with_sizes end end + describe "backlog" do it "returns count of all jobs yet to be processed" do assert_equal 3, Sidekiq::Stats.backlog 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