sidekiq-scheduler 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/sidekiq-scheduler/manager.rb +2 -2
- data/lib/sidekiq-scheduler/version.rb +1 -1
- data/test/client_test.rb +8 -8
- data/test/manager_test.rb +12 -13
- data/test/test_helper.rb +3 -0
- metadata +12 -12
@@ -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
|
-
|
52
|
-
Sidekiq::Client.push(
|
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
|
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 =
|
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 =
|
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,
|
50
|
-
assert_equal 1,
|
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,
|
61
|
-
assert
|
62
|
-
assert
|
63
|
-
assert
|
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.
|
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-
|
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: &
|
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.
|
21
|
+
version: 1.0.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70158192951040
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
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: *
|
35
|
+
version_requirements: *70158192949660
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: timecop
|
38
|
-
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: *
|
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:
|
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:
|
100
|
+
hash: 1710824919291637304
|
101
101
|
requirements: []
|
102
102
|
rubyforge_project:
|
103
103
|
rubygems_version: 1.8.17
|