sidekiq-cron 1.6.0 → 1.8.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +21 -7
- data/README.md +20 -10
- data/lib/sidekiq/cron/job.rb +104 -91
- data/lib/sidekiq/cron/launcher.rb +15 -13
- data/lib/sidekiq/cron/locales/it.yml +23 -0
- data/lib/sidekiq/cron/poller.rb +14 -18
- data/lib/sidekiq/cron/schedule_loader.rb +12 -4
- data/lib/sidekiq/cron/support.rb +0 -1
- data/lib/sidekiq/cron/version.rb +1 -1
- data/lib/sidekiq/cron/views/cron.erb +1 -1
- data/lib/sidekiq/cron/web_extension.rb +6 -9
- data/lib/sidekiq/options.rb +18 -0
- data/sidekiq-cron.gemspec +5 -7
- data/test/integration/performance_test.rb +1 -1
- data/test/test_helper.rb +1 -0
- data/test/unit/fixtures/schedule_array.yml +13 -0
- data/test/unit/fixtures/schedule_hash.yml +12 -0
- data/test/unit/fixtures/schedule_string.yml +1 -0
- data/test/unit/job_test.rb +115 -21
- data/test/unit/launcher_test.rb +33 -0
- data/test/unit/poller_test.rb +6 -6
- data/test/unit/schedule_loader_test.rb +45 -0
- data/test/unit/web_extension_test.rb +2 -2
- metadata +13 -5
@@ -0,0 +1,33 @@
|
|
1
|
+
require './test/test_helper'
|
2
|
+
|
3
|
+
describe 'Cron launcher' do
|
4
|
+
describe 'initialization' do
|
5
|
+
before do
|
6
|
+
Sidekiq[:cron_poll_interval] = nil
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'initializes poller with default poll interval when not configured' do
|
10
|
+
Sidekiq::Cron::Poller.expects(:new).with do |options|
|
11
|
+
assert_equal Sidekiq::Cron::Launcher::DEFAULT_POLL_INTERVAL, options[:cron_poll_interval]
|
12
|
+
end
|
13
|
+
|
14
|
+
Sidekiq::Launcher.new(Sidekiq)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'initializes poller with the configured poll interval' do
|
18
|
+
Sidekiq::Cron::Poller.expects(:new).with do |options|
|
19
|
+
assert_equal 99, options[:cron_poll_interval]
|
20
|
+
end
|
21
|
+
|
22
|
+
Sidekiq[:cron_poll_interval] = 99
|
23
|
+
Sidekiq::Launcher.new(Sidekiq)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'does not initialize the poller when interval is 0' do
|
27
|
+
Sidekiq::Cron::Poller.expects(:new).never
|
28
|
+
|
29
|
+
Sidekiq[:cron_poll_interval] = 0
|
30
|
+
Sidekiq::Launcher.new(Sidekiq)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/test/unit/poller_test.rb
CHANGED
@@ -5,7 +5,7 @@ describe 'Cron Poller' do
|
|
5
5
|
REDIS.with { |c| c.respond_to?(:redis) ? c.redis.flushdb : c.flushdb }
|
6
6
|
Sidekiq.redis = REDIS
|
7
7
|
|
8
|
-
#
|
8
|
+
# Clear all previous saved data from Redis.
|
9
9
|
Sidekiq.redis do |conn|
|
10
10
|
conn.keys("cron_job*").each do |key|
|
11
11
|
conn.del(key)
|
@@ -27,7 +27,7 @@ describe 'Cron Poller' do
|
|
27
27
|
now = Time.now.utc + 3600
|
28
28
|
enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 5, 1)
|
29
29
|
Time.stubs(:now).returns(enqueued_time)
|
30
|
-
|
30
|
+
|
31
31
|
Sidekiq::Cron::Job.create(@args)
|
32
32
|
Sidekiq::Cron::Job.create(@args2)
|
33
33
|
|
@@ -38,7 +38,7 @@ describe 'Cron Poller' do
|
|
38
38
|
assert_equal 0, conn.llen("queue:super")
|
39
39
|
end
|
40
40
|
|
41
|
-
#30 seconds after!
|
41
|
+
# 30 seconds after!
|
42
42
|
enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 5, 30)
|
43
43
|
Time.stubs(:now).returns(enqueued_time)
|
44
44
|
|
@@ -54,7 +54,7 @@ describe 'Cron Poller' do
|
|
54
54
|
now = Time.now.utc + 3600
|
55
55
|
enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 5, 1)
|
56
56
|
Time.stubs(:now).returns(enqueued_time)
|
57
|
-
|
57
|
+
|
58
58
|
Sidekiq::Cron::Job.create(@args)
|
59
59
|
Sidekiq::Cron::Job.create(@args2)
|
60
60
|
|
@@ -79,7 +79,7 @@ describe 'Cron Poller' do
|
|
79
79
|
now = Time.now.utc + 3600
|
80
80
|
enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 8, 1)
|
81
81
|
Time.stubs(:now).returns(enqueued_time)
|
82
|
-
|
82
|
+
|
83
83
|
Sidekiq::Cron::Job.create(@args)
|
84
84
|
Sidekiq::Cron::Job.create(@args2)
|
85
85
|
|
@@ -104,7 +104,7 @@ describe 'Cron Poller' do
|
|
104
104
|
now = Time.now.utc + 3600
|
105
105
|
enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 8, 1)
|
106
106
|
Time.stubs(:now).returns(enqueued_time)
|
107
|
-
|
107
|
+
|
108
108
|
Sidekiq::Cron::Job.create(@args)
|
109
109
|
Sidekiq::Cron::Job.create(@args2)
|
110
110
|
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require './test/test_helper'
|
2
|
+
|
3
|
+
describe 'ScheduleLoader' do
|
4
|
+
before do
|
5
|
+
Sidekiq.options[:lifecycle_events][:startup].clear
|
6
|
+
end
|
7
|
+
|
8
|
+
describe 'Schedule is defined in hash' do
|
9
|
+
before do
|
10
|
+
Sidekiq::Options[:cron_schedule_file] = 'test/unit/fixtures/schedule_hash.yml'
|
11
|
+
load 'sidekiq/cron/schedule_loader.rb'
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'calls Sidekiq::Cron::Job.load_from_hash' do
|
15
|
+
Sidekiq::Cron::Job.expects(:load_from_hash)
|
16
|
+
Sidekiq.options[:lifecycle_events][:startup].first.call
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe 'Schedule is defined in array' do
|
21
|
+
before do
|
22
|
+
Sidekiq::Options[:cron_schedule_file] = 'test/unit/fixtures/schedule_array.yml'
|
23
|
+
load 'sidekiq/cron/schedule_loader.rb'
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'calls Sidekiq::Cron::Job.load_from_array' do
|
27
|
+
Sidekiq::Cron::Job.expects(:load_from_array)
|
28
|
+
Sidekiq.options[:lifecycle_events][:startup].first.call
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe 'Schedule is not defined in hash nor array' do
|
33
|
+
before do
|
34
|
+
Sidekiq::Options[:cron_schedule_file] = 'test/unit/fixtures/schedule_string.yml'
|
35
|
+
load 'sidekiq/cron/schedule_loader.rb'
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'raises an error' do
|
39
|
+
e = assert_raises StandardError do
|
40
|
+
Sidekiq.options[:lifecycle_events][:startup].first.call
|
41
|
+
end
|
42
|
+
assert_equal 'Not supported schedule format. Confirm your test/unit/fixtures/schedule_string.yml', e.message
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -125,14 +125,14 @@ describe 'Cron web' do
|
|
125
125
|
assert_equal 1, conn.llen("queue:default"), "Queue should have 1 job"
|
126
126
|
end
|
127
127
|
|
128
|
-
#
|
128
|
+
# Should enqueue more times.
|
129
129
|
post "/cron/#{job_name}/enque"
|
130
130
|
|
131
131
|
Sidekiq.redis do |conn|
|
132
132
|
assert_equal 2, conn.llen("queue:default"), "Queue should have 2 job"
|
133
133
|
end
|
134
134
|
|
135
|
-
#
|
135
|
+
# Should enqueue to cron job queue.
|
136
136
|
post "/cron/#{cron_job_name}/enque"
|
137
137
|
|
138
138
|
Sidekiq.redis do |conn|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-cron
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ondrej Bartas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fugit
|
@@ -136,7 +136,8 @@ dependencies:
|
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0.21'
|
139
|
-
description: Enables to set jobs to be run in specified time (using CRON notation
|
139
|
+
description: Enables to set jobs to be run in specified time (using CRON notation
|
140
|
+
or natural language)
|
140
141
|
email: ondrej@bartas.cz
|
141
142
|
executables: []
|
142
143
|
extensions: []
|
@@ -155,6 +156,7 @@ files:
|
|
155
156
|
- lib/sidekiq/cron/launcher.rb
|
156
157
|
- lib/sidekiq/cron/locales/de.yml
|
157
158
|
- lib/sidekiq/cron/locales/en.yml
|
159
|
+
- lib/sidekiq/cron/locales/it.yml
|
158
160
|
- lib/sidekiq/cron/locales/ja.yml
|
159
161
|
- lib/sidekiq/cron/locales/pt.yml
|
160
162
|
- lib/sidekiq/cron/locales/ru.yml
|
@@ -167,11 +169,17 @@ files:
|
|
167
169
|
- lib/sidekiq/cron/views/cron_show.erb
|
168
170
|
- lib/sidekiq/cron/web.rb
|
169
171
|
- lib/sidekiq/cron/web_extension.rb
|
172
|
+
- lib/sidekiq/options.rb
|
170
173
|
- sidekiq-cron.gemspec
|
171
174
|
- test/integration/performance_test.rb
|
172
175
|
- test/test_helper.rb
|
176
|
+
- test/unit/fixtures/schedule_array.yml
|
177
|
+
- test/unit/fixtures/schedule_hash.yml
|
178
|
+
- test/unit/fixtures/schedule_string.yml
|
173
179
|
- test/unit/job_test.rb
|
180
|
+
- test/unit/launcher_test.rb
|
174
181
|
- test/unit/poller_test.rb
|
182
|
+
- test/unit/schedule_loader_test.rb
|
175
183
|
- test/unit/web_extension_test.rb
|
176
184
|
homepage: https://github.com/ondrejbartas/sidekiq-cron
|
177
185
|
licenses:
|
@@ -192,8 +200,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
192
200
|
- !ruby/object:Gem::Version
|
193
201
|
version: '0'
|
194
202
|
requirements: []
|
195
|
-
rubygems_version: 3.1.
|
203
|
+
rubygems_version: 3.1.6
|
196
204
|
signing_key:
|
197
205
|
specification_version: 4
|
198
|
-
summary:
|
206
|
+
summary: Scheduler/Cron for Sidekiq jobs
|
199
207
|
test_files: []
|