sidekiq-cron 1.5.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 +161 -0
- data/Gemfile +3 -0
- data/README.md +74 -66
- data/lib/sidekiq/cron/job.rb +191 -132
- data/lib/sidekiq/cron/launcher.rb +17 -15
- data/lib/sidekiq/cron/locales/it.yml +23 -0
- data/lib/sidekiq/cron/poller.rb +14 -18
- data/lib/sidekiq/cron/schedule_loader.rb +20 -0
- data/lib/sidekiq/cron/support.rb +8 -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/cron.rb +1 -0
- data/lib/sidekiq/options.rb +29 -0
- data/sidekiq-cron.gemspec +12 -13
- metadata +45 -32
- data/Changes.md +0 -111
- data/test/integration/performance_test.rb +0 -49
- data/test/test_helper.rb +0 -92
- data/test/unit/job_test.rb +0 -1124
- data/test/unit/poller_test.rb +0 -150
- data/test/unit/web_extension_test.rb +0 -156
@@ -1,49 +0,0 @@
|
|
1
|
-
require './test/test_helper'
|
2
|
-
require 'benchmark'
|
3
|
-
|
4
|
-
describe 'Performance Poller' do
|
5
|
-
X = 10000
|
6
|
-
before do
|
7
|
-
REDIS.with { |c| c.respond_to?(:redis) ? c.redis.flushdb : c.flushdb }
|
8
|
-
Sidekiq.redis = REDIS
|
9
|
-
|
10
|
-
#clear all previous saved data from redis
|
11
|
-
Sidekiq.redis do |conn|
|
12
|
-
conn.keys("cron_job*").each do |key|
|
13
|
-
conn.del(key)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
args = {
|
18
|
-
queue: "default",
|
19
|
-
cron: "*/2 * * * *",
|
20
|
-
klass: "CronTestClass"
|
21
|
-
}
|
22
|
-
|
23
|
-
X.times do |i|
|
24
|
-
Sidekiq::Cron::Job.create(args.merge(name: "Test#{i}"))
|
25
|
-
end
|
26
|
-
|
27
|
-
@poller = Sidekiq::Cron::Poller.new
|
28
|
-
now = Time.now.utc + 3600
|
29
|
-
enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 10, 5)
|
30
|
-
Time.stubs(:now).returns(enqueued_time)
|
31
|
-
end
|
32
|
-
|
33
|
-
it 'should enqueue 10000 jobs in less than 50s' do
|
34
|
-
Sidekiq.redis do |conn|
|
35
|
-
assert_equal 0, conn.llen("queue:default"), 'Queue should be empty'
|
36
|
-
end
|
37
|
-
|
38
|
-
bench = Benchmark.measure {
|
39
|
-
@poller.enqueue
|
40
|
-
}
|
41
|
-
|
42
|
-
Sidekiq.redis do |conn|
|
43
|
-
assert_equal X, conn.llen("queue:default"), 'Queue should be full'
|
44
|
-
end
|
45
|
-
|
46
|
-
puts "Performance test finished in #{bench.real}"
|
47
|
-
assert_operator bench.real, :<, 50
|
48
|
-
end
|
49
|
-
end
|
data/test/test_helper.rb
DELETED
@@ -1,92 +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 'SidekiqCron', 'lib/'
|
8
|
-
end
|
9
|
-
|
10
|
-
require "minitest/autorun"
|
11
|
-
require "rack/test"
|
12
|
-
require 'mocha/minitest'
|
13
|
-
require 'sidekiq'
|
14
|
-
require "sidekiq-pro" if ENV['SIDEKIQ_PRO_VERSION']
|
15
|
-
require 'sidekiq/web'
|
16
|
-
|
17
|
-
Sidekiq.logger.level = Logger::ERROR
|
18
|
-
|
19
|
-
redis_url = ENV['REDIS_URL'] || 'redis://0.0.0.0:6379'
|
20
|
-
REDIS = Sidekiq::RedisConnection.create(:url => redis_url, :namespace => 'testy')
|
21
|
-
|
22
|
-
Sidekiq.configure_client do |config|
|
23
|
-
config.redis = { :url => redis_url, :namespace => 'testy' }
|
24
|
-
end
|
25
|
-
|
26
|
-
require 'sidekiq-cron'
|
27
|
-
require 'sidekiq/cron/web'
|
28
|
-
|
29
|
-
# For testing os symbilize args!
|
30
|
-
class Hash
|
31
|
-
def symbolize_keys
|
32
|
-
transform_keys { |key| key.to_sym rescue key }
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
class CronTestClass
|
37
|
-
include Sidekiq::Worker
|
38
|
-
sidekiq_options retry: true
|
39
|
-
|
40
|
-
def perform args = {}
|
41
|
-
puts "super croned job #{args}"
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
class CronTestClassWithQueue
|
46
|
-
include Sidekiq::Worker
|
47
|
-
sidekiq_options queue: :super, retry: false, backtrace: true
|
48
|
-
|
49
|
-
def perform args = {}
|
50
|
-
puts "super croned job #{args}"
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
module ActiveJob
|
55
|
-
class Base
|
56
|
-
attr_accessor *%i[job_class provider_job_id queue_name arguments]
|
57
|
-
|
58
|
-
def initialize
|
59
|
-
yield self if block_given?
|
60
|
-
self.provider_job_id ||= SecureRandom.hex(12)
|
61
|
-
end
|
62
|
-
|
63
|
-
def self.queue_name_prefix
|
64
|
-
@queue_name_prefix
|
65
|
-
end
|
66
|
-
|
67
|
-
def self.queue_name_prefix=(queue_name_prefix)
|
68
|
-
@queue_name_prefix = queue_name_prefix
|
69
|
-
end
|
70
|
-
|
71
|
-
def self.set(options)
|
72
|
-
@queue = options['queue']
|
73
|
-
|
74
|
-
self
|
75
|
-
end
|
76
|
-
|
77
|
-
def try(method, *args, &block)
|
78
|
-
send method, *args, &block if respond_to? method
|
79
|
-
end
|
80
|
-
|
81
|
-
def self.perform_later(*args)
|
82
|
-
new do |instance|
|
83
|
-
instance.job_class = self.class.name
|
84
|
-
instance.queue_name = @queue
|
85
|
-
instance.arguments = [*args]
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
class ActiveJobCronTestClass < ActiveJob::Base
|
92
|
-
end
|