Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Only one argument for has_remaining_performs_key?
  • Loading branch information
julienXX committed Feb 13, 2012
1 parent 9f07f29 commit 547dc07
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 9 deletions.
6 changes: 3 additions & 3 deletions lib/resque/plugins/waiting_room.rb
Expand Up @@ -17,7 +17,7 @@ def waiting_room_redis_key
def before_perform_waiting_room(*args)
key = waiting_room_redis_key

if has_remaining_performs_key?(key, @max_performs)
if has_remaining_performs_key?(key)
performs_left = Resque.redis.decrby(key, 1).to_i

if performs_left < 1
Expand All @@ -27,9 +27,9 @@ def before_perform_waiting_room(*args)
end
end

def has_remaining_performs_key?(key, number_of_performs)
def has_remaining_performs_key?(key)
# Redis SETNX: sets the keys if it doesn't exist, returns true if key was created
new_key = Resque.redis.setnx(key, number_of_performs - 1)
new_key = Resque.redis.setnx(key, @max_performs - 1)
Resque.redis.expire(key, @period) if new_key

return !new_key
Expand Down
15 changes: 9 additions & 6 deletions spec/resque/plugins/waiting_room_spec.rb
Expand Up @@ -56,30 +56,33 @@
context "has_remaining_performs_key?" do
it "should set a redis key" do
Resque.redis.should_receive(:setnx)
DummyJob.has_remaining_performs_key?(DummyJob.waiting_room_redis_key, 10)
DummyJob.has_remaining_performs_key?(DummyJob.waiting_room_redis_key)
end

it "should expire the redis key with period" do
it "should expire the redis key" do
Resque.redis.should_receive(:setnx).and_return(true)
Resque.redis.should_receive(:expire)
DummyJob.has_remaining_performs_key?(DummyJob.waiting_room_redis_key, 10)
DummyJob.has_remaining_performs_key?(DummyJob.waiting_room_redis_key)
end

it "should not re-expire the redis key if it is already created" do
Resque.redis.should_receive(:setnx).and_return(true)
Resque.redis.should_receive(:expire)
DummyJob.has_remaining_performs_key?(DummyJob.waiting_room_redis_key)
Resque.redis.should_receive(:setnx).and_return(false)
Resque.redis.should_not_receive(:expire)
DummyJob.has_remaining_performs_key?(DummyJob.waiting_room_redis_key, 10)
DummyJob.has_remaining_performs_key?(DummyJob.waiting_room_redis_key)
end

it "should return false if the key is new" do
Resque.redis.should_receive(:setnx).and_return(true)
Resque.redis.should_receive(:expire)
DummyJob.has_remaining_performs_key?(DummyJob.waiting_room_redis_key, 10).should == false
DummyJob.has_remaining_performs_key?(DummyJob.waiting_room_redis_key).should == false
end

it "should return true if the key was already created" do
Resque.redis.should_receive(:setnx).and_return(false)
DummyJob.has_remaining_performs_key?(DummyJob.waiting_room_redis_key, 10).should == true
DummyJob.has_remaining_performs_key?(DummyJob.waiting_room_redis_key).should == true
end
end

Expand Down

0 comments on commit 547dc07

Please sign in to comment.