sidekiq-cron 1.9.1 → 1.12.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|