Fix Redis 3.x API issues
This commit is contained in:
parent
9bea41fb10
commit
b486fcf6e0
|
@ -28,6 +28,9 @@ I want to specially thank @yabawock for his work on sidekiq-scheduler.
|
|||
His extension for Sidekiq 1.x filled an obvious functional gap that I now think is
|
||||
useful enough to implement in Sidekiq proper.
|
||||
|
||||
- Fixed issues due to Redis 3.x API changes. Sidekiq now requires
|
||||
the Redis 3.x client.
|
||||
|
||||
1.2.1
|
||||
-----------
|
||||
|
||||
|
|
|
@ -60,16 +60,17 @@ module Sidekiq
|
|||
end
|
||||
|
||||
def retries(count=50)
|
||||
Sidekiq.redis do |conn|
|
||||
results = conn.zrange('retry', 0, count, :withscores => true)
|
||||
results.each_slice(2).map { |msg, score| [Sidekiq.load_json(msg), Float(score)] }
|
||||
end
|
||||
zcontents('retry', count)
|
||||
end
|
||||
|
||||
def scheduled(count=50)
|
||||
zcontents('schedule', count)
|
||||
end
|
||||
|
||||
def zcontents(name, count)
|
||||
Sidekiq.redis do |conn|
|
||||
results = conn.zrange('schedule', 0, count, :withscores => true)
|
||||
results.each_slice(2).map { |msg, score| [Sidekiq.load_json(msg), Float(score)] }
|
||||
results = conn.zrange(name, 0, count, :withscores => true)
|
||||
results.map { |msg, score| [Sidekiq.load_json(msg), score] }
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ Gem::Specification.new do |gem|
|
|||
gem.name = "sidekiq"
|
||||
gem.require_paths = ["lib"]
|
||||
gem.version = Sidekiq::VERSION
|
||||
gem.add_dependency 'redis'
|
||||
gem.add_dependency 'redis', '~> 3'
|
||||
gem.add_dependency 'redis-namespace'
|
||||
gem.add_dependency 'connection_pool', '~> 0.9.0'
|
||||
gem.add_dependency 'celluloid', '~> 0.10.0'
|
||||
|
|
|
@ -112,6 +112,7 @@ class TestRetry < MiniTest::Unit::TestCase
|
|||
it 'should poll like a bad mother...SHUT YO MOUTH' do
|
||||
fake_msg = Sidekiq.dump_json({ 'class' => 'Bob', 'args' => [1,2], 'queue' => 'someq' })
|
||||
@redis.expect :multi, [[fake_msg], 1], []
|
||||
@redis.expect :multi, [[], nil], []
|
||||
@redis.expect :rpush, 1, ['queue:someq', fake_msg]
|
||||
|
||||
inst = Sidekiq::Scheduled::Poller.new
|
||||
|
|
|
@ -80,6 +80,20 @@ class TestWeb < MiniTest::Unit::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
it 'can display scheduled' do
|
||||
get '/scheduled'
|
||||
assert_equal 200, last_response.status
|
||||
assert_match /found/, last_response.body
|
||||
refute_match /HardWorker/, last_response.body
|
||||
|
||||
add_scheduled
|
||||
|
||||
get '/scheduled'
|
||||
assert_equal 200, last_response.status
|
||||
refute_match /found/, last_response.body
|
||||
assert_match /HardWorker/, last_response.body
|
||||
end
|
||||
|
||||
it 'can display retries' do
|
||||
get '/retries'
|
||||
assert_equal 200, last_response.status
|
||||
|
@ -104,6 +118,17 @@ class TestWeb < MiniTest::Unit::TestCase
|
|||
assert_match /HardWorker/, last_response.body
|
||||
end
|
||||
|
||||
def add_scheduled
|
||||
msg = { 'class' => 'HardWorker',
|
||||
'args' => ['bob', 1, Time.now.to_f],
|
||||
'at' => Time.now.to_f }
|
||||
score = Time.now.to_f
|
||||
Sidekiq.redis do |conn|
|
||||
conn.zadd('schedule', score, Sidekiq.dump_json(msg))
|
||||
end
|
||||
[msg, score]
|
||||
end
|
||||
|
||||
def add_retry
|
||||
msg = { 'class' => 'HardWorker',
|
||||
'args' => ['bob', 1, Time.now.to_f],
|
||||
|
|
Loading…
Reference in New Issue