sidekiq-scheduler 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -48,8 +48,8 @@ module SidekiqScheduler
48
48
  loop do
49
49
  break logger.debug("Finished processing queue for timestamp #{timestamp}") unless msg = redis { |r| r.lpop("delayed:#{timestamp}") }
50
50
  item = MultiJson.decode(msg)
51
- queue = item.delete('queue')
52
- Sidekiq::Client.push(queue, item)
51
+ item['class'] = constantize(item['class']) # Sidekiq expects the class to be constantized.
52
+ Sidekiq::Client.push(item)
53
53
  end
54
54
  Sidekiq::Client.remove_scheduler_queue(timestamp)
55
55
  end
@@ -1,3 +1,3 @@
1
1
  module SidekiqScheduler
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
data/test/client_test.rb CHANGED
@@ -4,8 +4,8 @@ require 'timecop'
4
4
  class ClientTest < MiniTest::Unit::TestCase
5
5
  describe 'with real redis' do
6
6
  before do
7
- Sidekiq.redis = { :url => 'redis://localhost/sidekiq_test' }
8
- Sidekiq.redis.flushdb
7
+ Sidekiq.redis = REDIS
8
+ Sidekiq.redis {|c| c.flushdb }
9
9
  end
10
10
 
11
11
  it 'removes scheduled messages and returns count' do
@@ -46,21 +46,21 @@ class ClientTest < MiniTest::Unit::TestCase
46
46
  Sidekiq::Client.delayed_push(1331284491, 'class' => 'Foo', 'args' => [1, 2])
47
47
  Sidekiq::Client.delayed_push(1331284492, 'class' => 'Foo', 'args' => [1, 2])
48
48
  assert_equal 1, Sidekiq::Client.remove_delayed(1331284491, 'Foo', 1, 2)
49
- assert_equal 1, Sidekiq.redis.llen('delayed:1331284492')
49
+ assert_equal 1, Sidekiq.redis { |c| c.llen('delayed:1331284492') }
50
50
  end
51
51
 
52
52
  it 'removes messages from a worker for a specified timestamp' do
53
53
  Sidekiq::Client.delayed_push(1331284491, 'class' => 'MyWorker', 'args' => [1, 2])
54
54
  Sidekiq::Client.delayed_push(1331284492, 'class' => 'MyWorker', 'args' => [1, 2])
55
55
  assert_equal 1, MyWorker.remove_delayed_from_timestamp(1331284491, 1, 2)
56
- assert_equal 1, Sidekiq.redis.llen('delayed:1331284492')
56
+ assert_equal 1, Sidekiq.redis { |c| c.llen('delayed:1331284492') }
57
57
  end
58
58
 
59
59
  it 'removes messages for a queue from specified timestamp' do
60
60
  Sidekiq::Client.delayed_push('foo', 1331284491, 'class' => 'Foo', 'args' => [1, 2])
61
61
  Sidekiq::Client.delayed_push('foo', 1331284492, 'class' => 'Foo', 'args' => [1, 2])
62
62
  assert_equal 1, Sidekiq::Client.remove_delayed_from_queue('foo', 1331284491, 'Foo', 1, 2)
63
- assert_equal 1, Sidekiq.redis.llen('delayed:1331284492')
63
+ assert_equal 1, Sidekiq.redis { |c| c.llen('delayed:1331284492') }
64
64
  end
65
65
 
66
66
  it 'removes nothing if no message is found' do
@@ -71,14 +71,14 @@ class ClientTest < MiniTest::Unit::TestCase
71
71
  Sidekiq::Client.delayed_push(1331284491, 'class' => 'Foo', 'args' => [1, 2])
72
72
  Sidekiq::Client.delayed_push(1331284491, 'class' => 'Foo', 'args' => [3, 2])
73
73
  assert_equal 0, Sidekiq::Client.remove_delayed(1331284491, 'Foo', 3, 4)
74
- assert_equal 2, Sidekiq.redis.llen('delayed:1331284491')
74
+ assert_equal 2, Sidekiq.redis { |c| c.llen('delayed:1331284491') }
75
75
  end
76
76
 
77
77
  it 'removes empty scheduler queues' do
78
78
  Sidekiq::Client.delayed_push(1331284491, 'class' => 'Foo', 'args' => [1, 2])
79
79
  assert_equal 1, Sidekiq::Client.remove_delayed(1331284491, 'Foo', 1, 2)
80
- assert !Sidekiq.redis.exists('delayed:1331284491')
81
- assert_equal 0, Sidekiq.redis.zcard('delayed_scheduler_queue')
80
+ assert !Sidekiq.redis { |c| c.exists('delayed:1331284491') }
81
+ assert_equal 0, Sidekiq.redis { |c| c.zcard('delayed_scheduler_queue') }
82
82
  end
83
83
  end
84
84
 
data/test/manager_test.rb CHANGED
@@ -5,10 +5,9 @@ require 'sidekiq/manager'
5
5
  class ManagerTest < MiniTest::Unit::TestCase
6
6
  describe 'with redis' do
7
7
  before do
8
- Sidekiq.redis = { :url => 'redis://localhost/sidekiq_test' }
8
+ Sidekiq.redis = REDIS
9
+ Sidekiq.redis {|c| c.flushdb }
9
10
  @scheduler = SidekiqScheduler::Manager.new
10
- @redis = Sidekiq.redis
11
- @redis.flushdb
12
11
  $processed = 0
13
12
  $mutex = Mutex.new
14
13
  end
@@ -25,29 +24,29 @@ class ManagerTest < MiniTest::Unit::TestCase
25
24
  end
26
25
 
27
26
  it 'detects an empty schedule run' do
28
- assert_nil @scheduler.send(:find_next_timestamp)
27
+ assert_nil @scheduler.wrapped_object.send(:find_next_timestamp)
29
28
  end
30
29
 
31
30
  it 'processes only jobs that are due' do
32
31
  timestamp = Time.now + 600
33
32
  Sidekiq::Client.delayed_push(:foo, timestamp, 'class' => IntegrationWorker, 'args' => [1,2])
34
- assert_nil @scheduler.send(:find_next_timestamp)
33
+ assert_nil @scheduler.wrapped_object.send(:find_next_timestamp)
35
34
  end
36
35
 
37
36
  it 'processes queues in the right order' do
38
37
  Sidekiq::Client.delayed_push(:foo, 1331284491, 'class' => IntegrationWorker, 'args' => [1,2])
39
38
  Sidekiq::Client.delayed_push(:foo, 1331284492, 'class' => IntegrationWorker, 'args' => [1,2])
40
39
 
41
- assert_equal 1331284491, @scheduler.send(:find_next_timestamp)
40
+ assert_equal 1331284491, @scheduler.wrapped_object.send(:find_next_timestamp)
42
41
  end
43
42
 
44
43
  it 'moves jobs from the scheduler queues to the worker queues' do
45
44
  Sidekiq::Client.delayed_push(:foo, 1331284491, 'class' => IntegrationWorker, 'args' => [1,2])
46
45
 
47
- @scheduler.send(:find_scheduled_work, 1331284491)
46
+ @scheduler.wrapped_object.send(:find_scheduled_work, 1331284491)
48
47
 
49
- assert_equal 0, @redis.llen("delayed:1331284491")
50
- assert_equal 1, @redis.llen("queue:foo")
48
+ assert_equal 0, Sidekiq.redis {|c| c.llen("delayed:1331284491") }
49
+ assert_equal 1, Sidekiq.redis {|c| c.llen("queue:foo") }
51
50
  end
52
51
 
53
52
  it 'resets the scheduler queue' do
@@ -57,10 +56,10 @@ class ManagerTest < MiniTest::Unit::TestCase
57
56
 
58
57
  @scheduler.reset
59
58
 
60
- assert_equal 0, @redis.zcard('delayed_queue_schedule')
61
- assert !@redis.exists('delayed:1331284491')
62
- assert !@redis.exists('delayed:1331284492')
63
- assert !@redis.exists('delayed:1331284493')
59
+ assert_equal 0, Sidekiq.redis {|c| c.zcard('delayed_queue_schedule') }
60
+ assert !Sidekiq.redis {|c| c.exists('delayed:1331284491') }
61
+ assert !Sidekiq.redis {|c| c.exists('delayed:1331284492') }
62
+ assert !Sidekiq.redis {|c| c.exists('delayed:1331284493') }
64
63
  end
65
64
  end
66
65
  end
data/test/test_helper.rb CHANGED
@@ -3,9 +3,12 @@ require 'minitest/pride'
3
3
  require 'minitest/autorun'
4
4
  require 'sidekiq-scheduler'
5
5
 
6
+ require 'sidekiq'
6
7
  require 'sidekiq/util'
7
8
  Sidekiq::Util.logger.level = Logger::ERROR
8
9
 
9
10
  # Load support files
10
11
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
11
12
 
13
+ require 'sidekiq/redis_connection'
14
+ REDIS = Sidekiq::RedisConnection.create(:url => "redis://localhost/15", :namespace => 'testy')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-scheduler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-27 00:00:00.000000000 Z
12
+ date: 2012-04-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sidekiq
16
- requirement: &70168657500700 !ruby/object:Gem::Requirement
16
+ requirement: &70158192951040 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 0.9.0
21
+ version: 1.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70168657500700
24
+ version_requirements: *70158192951040
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70168657500140 !ruby/object:Gem::Requirement
27
+ requirement: &70158192949660 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70168657500140
35
+ version_requirements: *70158192949660
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: timecop
38
- requirement: &70168657499520 !ruby/object:Gem::Requirement
38
+ requirement: &70158192948960 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70168657499520
46
+ version_requirements: *70158192948960
47
47
  description: Light weight job scheduling extension for Sidekiq that adds support for
48
48
  queueing items in the future.
49
49
  email:
@@ -88,7 +88,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
88
88
  version: '0'
89
89
  segments:
90
90
  - 0
91
- hash: 2753182575090064012
91
+ hash: 1710824919291637304
92
92
  required_rubygems_version: !ruby/object:Gem::Requirement
93
93
  none: false
94
94
  requirements:
@@ -97,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
97
  version: '0'
98
98
  segments:
99
99
  - 0
100
- hash: 2753182575090064012
100
+ hash: 1710824919291637304
101
101
  requirements: []
102
102
  rubyforge_project:
103
103
  rubygems_version: 1.8.17