sidekiq-cron 1.9.1 → 1.12.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 +27 -1
- data/Gemfile +3 -0
- data/README.md +42 -13
- data/lib/sidekiq/cron/job.rb +94 -28
- data/lib/sidekiq/cron/launcher.rb +1 -1
- data/lib/sidekiq/cron/schedule_loader.rb +11 -13
- data/lib/sidekiq/cron/version.rb +1 -1
- data/lib/sidekiq/options.rb +6 -2
- data/sidekiq-cron.gemspec +6 -4
- metadata +36 -19
- data/test/integration/performance_test.rb +0 -46
- data/test/test_helper.rb +0 -87
- data/test/unit/fixtures/schedule_array.yml +0 -13
- data/test/unit/fixtures/schedule_erb.yml +0 -6
- data/test/unit/fixtures/schedule_hash.yml +0 -12
- data/test/unit/fixtures/schedule_string.yml +0 -1
- data/test/unit/job_test.rb +0 -1258
- data/test/unit/launcher_test.rb +0 -33
- data/test/unit/poller_test.rb +0 -144
- data/test/unit/schedule_loader_test.rb +0 -58
- data/test/unit/web_extension_test.rb +0 -155
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.12.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:
|
11
|
+
date: 2023-12-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fugit
|
@@ -30,14 +30,28 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: '6'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: '6'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: globalid
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.0.1
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.0.1
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: minitest
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,14 +72,14 @@ dependencies:
|
|
58
72
|
requirements:
|
59
73
|
- - "~>"
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version: '1
|
75
|
+
version: '2.1'
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
80
|
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version: '1
|
82
|
+
version: '2.1'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rack
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,6 +136,20 @@ dependencies:
|
|
122
136
|
- - "~>"
|
123
137
|
- !ruby/object:Gem::Version
|
124
138
|
version: '0.21'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: simplecov-cobertura
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '2.1'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '2.1'
|
125
153
|
description: Enables to set jobs to be run in specified time (using CRON notation
|
126
154
|
or natural language)
|
127
155
|
email: ondrej@bartas.cz
|
@@ -157,17 +185,6 @@ files:
|
|
157
185
|
- lib/sidekiq/cron/web_extension.rb
|
158
186
|
- lib/sidekiq/options.rb
|
159
187
|
- sidekiq-cron.gemspec
|
160
|
-
- test/integration/performance_test.rb
|
161
|
-
- test/test_helper.rb
|
162
|
-
- test/unit/fixtures/schedule_array.yml
|
163
|
-
- test/unit/fixtures/schedule_erb.yml
|
164
|
-
- test/unit/fixtures/schedule_hash.yml
|
165
|
-
- test/unit/fixtures/schedule_string.yml
|
166
|
-
- test/unit/job_test.rb
|
167
|
-
- test/unit/launcher_test.rb
|
168
|
-
- test/unit/poller_test.rb
|
169
|
-
- test/unit/schedule_loader_test.rb
|
170
|
-
- test/unit/web_extension_test.rb
|
171
188
|
homepage: https://github.com/sidekiq-cron/sidekiq-cron
|
172
189
|
licenses:
|
173
190
|
- MIT
|
@@ -180,14 +197,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
180
197
|
requirements:
|
181
198
|
- - ">="
|
182
199
|
- !ruby/object:Gem::Version
|
183
|
-
version: '2.
|
200
|
+
version: '2.7'
|
184
201
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
185
202
|
requirements:
|
186
203
|
- - ">="
|
187
204
|
- !ruby/object:Gem::Version
|
188
205
|
version: '0'
|
189
206
|
requirements: []
|
190
|
-
rubygems_version: 3.
|
207
|
+
rubygems_version: 3.4.10
|
191
208
|
signing_key:
|
192
209
|
specification_version: 4
|
193
210
|
summary: Scheduler/Cron for Sidekiq jobs
|
@@ -1,46 +0,0 @@
|
|
1
|
-
require './test/test_helper'
|
2
|
-
require 'benchmark'
|
3
|
-
|
4
|
-
describe 'Performance Poller' do
|
5
|
-
JOBS_NUMBER = 10_000
|
6
|
-
MAX_SECONDS = 60
|
7
|
-
|
8
|
-
before do
|
9
|
-
# Clear all previous saved data from Redis.
|
10
|
-
Sidekiq.redis do |conn|
|
11
|
-
conn.flushdb
|
12
|
-
end
|
13
|
-
|
14
|
-
args = {
|
15
|
-
queue: "default",
|
16
|
-
cron: "*/2 * * * *",
|
17
|
-
klass: "CronTestClass"
|
18
|
-
}
|
19
|
-
|
20
|
-
JOBS_NUMBER.times do |i|
|
21
|
-
Sidekiq::Cron::Job.create(args.merge(name: "Test#{i}"))
|
22
|
-
end
|
23
|
-
|
24
|
-
@poller = Sidekiq::Cron::Poller.new(Sidekiq.const_defined?(:Config) ? Sidekiq::Config.new : {})
|
25
|
-
now = Time.now.utc + 3600
|
26
|
-
enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 10, 5)
|
27
|
-
Time.stubs(:now).returns(enqueued_time)
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should enqueue #{JOBS_NUMBER} jobs in less than #{MAX_SECONDS}s" do
|
31
|
-
Sidekiq.redis do |conn|
|
32
|
-
assert_equal 0, conn.llen("queue:default"), 'Queue should be empty'
|
33
|
-
end
|
34
|
-
|
35
|
-
bench = Benchmark.measure {
|
36
|
-
@poller.enqueue
|
37
|
-
}
|
38
|
-
|
39
|
-
Sidekiq.redis do |conn|
|
40
|
-
assert_equal JOBS_NUMBER, conn.llen("queue:default"), 'Queue should be full'
|
41
|
-
end
|
42
|
-
|
43
|
-
puts "Performance test finished in #{bench.real}"
|
44
|
-
assert_operator bench.real, :<, MAX_SECONDS
|
45
|
-
end
|
46
|
-
end
|
data/test/test_helper.rb
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
$TESTING = true
|
2
|
-
ENV['RACK_ENV'] = 'test'
|
3
|
-
|
4
|
-
require 'simplecov'
|
5
|
-
SimpleCov.start do
|
6
|
-
add_filter "test/"
|
7
|
-
add_group 'Sidekiq-Cron', 'lib/'
|
8
|
-
end
|
9
|
-
|
10
|
-
require "minitest/autorun"
|
11
|
-
require "rack/test"
|
12
|
-
require 'mocha/minitest'
|
13
|
-
require 'sidekiq'
|
14
|
-
require 'sidekiq/web'
|
15
|
-
require "sidekiq/cli"
|
16
|
-
require 'sidekiq-cron'
|
17
|
-
require 'sidekiq/cron/web'
|
18
|
-
|
19
|
-
Sidekiq.logger.level = Logger::ERROR
|
20
|
-
Sidekiq.configure_client do |config|
|
21
|
-
config.redis = { url: ENV['REDIS_URL'] || 'redis://0.0.0.0:6379' }
|
22
|
-
end
|
23
|
-
|
24
|
-
# For testing symbolize args
|
25
|
-
class Hash
|
26
|
-
def symbolize_keys
|
27
|
-
transform_keys { |key| key.to_sym rescue key }
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
class CronTestClass
|
32
|
-
include Sidekiq::Worker
|
33
|
-
sidekiq_options retry: true
|
34
|
-
|
35
|
-
def perform args = {}
|
36
|
-
puts "super croned job #{args}"
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
class CronTestClassWithQueue
|
41
|
-
include Sidekiq::Worker
|
42
|
-
sidekiq_options queue: :super, retry: false, backtrace: true
|
43
|
-
|
44
|
-
def perform args = {}
|
45
|
-
puts "super croned job #{args}"
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
module ActiveJob
|
50
|
-
class Base
|
51
|
-
attr_accessor *%i[job_class provider_job_id queue_name arguments]
|
52
|
-
|
53
|
-
def initialize
|
54
|
-
yield self if block_given?
|
55
|
-
self.provider_job_id ||= SecureRandom.hex(12)
|
56
|
-
end
|
57
|
-
|
58
|
-
def self.queue_name_prefix
|
59
|
-
@queue_name_prefix
|
60
|
-
end
|
61
|
-
|
62
|
-
def self.queue_name_prefix=(queue_name_prefix)
|
63
|
-
@queue_name_prefix = queue_name_prefix
|
64
|
-
end
|
65
|
-
|
66
|
-
def self.set(options)
|
67
|
-
@queue = options['queue']
|
68
|
-
|
69
|
-
self
|
70
|
-
end
|
71
|
-
|
72
|
-
def try(method, *args, &block)
|
73
|
-
send method, *args, &block if respond_to? method
|
74
|
-
end
|
75
|
-
|
76
|
-
def self.perform_later(*args)
|
77
|
-
new do |instance|
|
78
|
-
instance.job_class = self.class.name
|
79
|
-
instance.queue_name = @queue
|
80
|
-
instance.arguments = [*args]
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
class ActiveJobCronTestClass < ActiveJob::Base
|
87
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
--- string
|