From b9bb5b7699a2631d1269493581dd47472c3d1ca9 Mon Sep 17 00:00:00 2001 From: Mike Perham Date: Fri, 10 Feb 2012 23:32:42 -0800 Subject: [PATCH] Fix issue with workers stat set --- lib/sidekiq/processor.rb | 5 ++--- test/test_stats.rb | 18 ++++++++++++++---- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/lib/sidekiq/processor.rb b/lib/sidekiq/processor.rb index c09bfe0d..cb5b583e 100644 --- a/lib/sidekiq/processor.rb +++ b/lib/sidekiq/processor.rb @@ -27,7 +27,7 @@ module Sidekiq def initialize(boss) @boss = boss - redis.sadd(:workers, self) + redis.sadd('workers', self) end def process(msg, queue) @@ -54,7 +54,6 @@ module Sidekiq def stats(worker, msg, queue) redis.multi do - redis.sadd("worker", self) redis.set("worker:#{self}:started", Time.now.to_s) redis.set("worker:#{self}", MultiJson.encode(:queue => queue, :payload => msg, :run_at => Time.now.strftime("%Y/%m/%d %H:%M:%S %Z"))) @@ -69,7 +68,7 @@ module Sidekiq redis.multi do redis.incrby("stat:failed", 1) redis.del("stat:processed:#{self}") - redis.srem("worker", self) + redis.srem("workers", self) end raise ensure diff --git a/test/test_stats.rb b/test/test_stats.rb index fc722476..1db66e92 100644 --- a/test/test_stats.rb +++ b/test/test_stats.rb @@ -20,10 +20,18 @@ class TestStats < MiniTest::Unit::TestCase it 'updates global stats in the success case' do msg = { 'class' => DumbWorker.to_s, 'args' => [@redis] } boss = MiniTest::Mock.new + + set = @redis.smembers('workers') + assert_equal 0, set.size + processor = Sidekiq::Processor.new(boss) boss.expect(:processor_done!, nil, [processor]) - assert_equal [], @redis.smembers('worker') + # adds to the workers set upon initialize + set = @redis.smembers('workers') + assert_equal 1, set.size + assert_match(/#{Regexp.escape(`hostname`.strip)}/, set.first) + assert_equal 0, @redis.get('stat:failed').to_i assert_equal 0, @redis.get('stat:processed').to_i assert_equal 0, @redis.get("stat:processed:#{processor}").to_i @@ -32,7 +40,7 @@ class TestStats < MiniTest::Unit::TestCase processor.process(msg, 'xyzzy') processor.process(msg, 'xyzzy') - set = @redis.smembers('worker') + set = @redis.smembers('workers') assert_equal 1, set.size assert_match(/#{Regexp.escape(`hostname`.strip)}/, set.first) assert_equal 0, @redis.get('stat:failed').to_i @@ -44,17 +52,19 @@ class TestStats < MiniTest::Unit::TestCase msg = { 'class' => DumbWorker.to_s, 'args' => [nil] } boss = MiniTest::Mock.new - assert_equal [], @redis.smembers('worker') + assert_equal [], @redis.smembers('workers') assert_equal 0, @redis.get('stat:failed').to_i assert_equal 0, @redis.get('stat:processed').to_i processor = Sidekiq::Processor.new(boss) + assert_equal 1, @redis.smembers('workers').size + pstr = processor.to_s assert_raises RuntimeError do processor.process(msg, 'xyzzy') end - set = @redis.smembers('worker') + set = @redis.smembers('workers') assert_equal 0, set.size assert_equal 1, @redis.get('stat:failed').to_i assert_equal 1, @redis.get('stat:processed').to_i