sidekiq-cron 0.6.3 → 1.2.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/.travis.yml +5 -6
- data/Changes.md +32 -0
- data/Dockerfile +1 -1
- data/Gemfile +1 -1
- data/README.md +25 -12
- data/VERSION +1 -1
- data/docker-compose.yml +3 -1
- data/lib/sidekiq/cron/job.rb +82 -32
- data/lib/sidekiq/cron/launcher.rb +34 -40
- data/lib/sidekiq/cron/locales/de.yml +2 -2
- data/lib/sidekiq/cron/locales/en.yml +4 -2
- data/lib/sidekiq/cron/locales/ja.yml +18 -0
- data/lib/sidekiq/cron/locales/ru.yml +2 -2
- data/lib/sidekiq/cron/locales/zh-CN.yml +19 -0
- data/lib/sidekiq/cron/poller.rb +6 -4
- data/lib/sidekiq/cron/views/cron.erb +23 -19
- data/lib/sidekiq/cron/views/cron.slim +17 -15
- data/lib/sidekiq/cron/views/cron_show.erb +88 -0
- data/lib/sidekiq/cron/views/cron_show.slim +61 -0
- data/lib/sidekiq/cron/web_extension.rb +20 -3
- data/sidekiq-cron.gemspec +74 -70
- data/test/integration/performance_test.rb +7 -9
- data/test/test_helper.rb +17 -6
- data/test/unit/job_test.rb +67 -14
- data/test/unit/poller_test.rb +22 -23
- data/test/unit/web_extension_test.rb +22 -3
- metadata +12 -8
@@ -20,6 +20,23 @@ module Sidekiq
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
+
# display job detail + jid history
|
24
|
+
app.get '/cron/:name' do
|
25
|
+
view_path = File.join(File.expand_path("..", __FILE__), "views")
|
26
|
+
|
27
|
+
@job = Sidekiq::Cron::Job.find(route_params[:name])
|
28
|
+
if @job
|
29
|
+
#if Slim renderer exists and sidekiq has layout.slim in views
|
30
|
+
if defined?(Slim) && File.exists?(File.join(settings.views,"layout.slim"))
|
31
|
+
render(:slim, File.read(File.join(view_path, "cron_show.slim")))
|
32
|
+
else
|
33
|
+
render(:erb, File.read(File.join(view_path, "cron_show.erb")))
|
34
|
+
end
|
35
|
+
else
|
36
|
+
redirect "#{root_path}cron"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
23
40
|
#enque cron job
|
24
41
|
app.post '/cron/:name/enque' do
|
25
42
|
if route_params[:name] === '__all__'
|
@@ -27,7 +44,7 @@ module Sidekiq
|
|
27
44
|
elsif job = Sidekiq::Cron::Job.find(route_params[:name])
|
28
45
|
job.enque!
|
29
46
|
end
|
30
|
-
redirect "#{root_path}cron"
|
47
|
+
redirect params['redirect'] || "#{root_path}cron"
|
31
48
|
end
|
32
49
|
|
33
50
|
#delete schedule
|
@@ -47,7 +64,7 @@ module Sidekiq
|
|
47
64
|
elsif job = Sidekiq::Cron::Job.find(route_params[:name])
|
48
65
|
job.enable!
|
49
66
|
end
|
50
|
-
redirect "#{root_path}cron"
|
67
|
+
redirect params['redirect'] || "#{root_path}cron"
|
51
68
|
end
|
52
69
|
|
53
70
|
#disable job
|
@@ -57,7 +74,7 @@ module Sidekiq
|
|
57
74
|
elsif job = Sidekiq::Cron::Job.find(route_params[:name])
|
58
75
|
job.disable!
|
59
76
|
end
|
60
|
-
redirect "#{root_path}cron"
|
77
|
+
redirect params['redirect'] || "#{root_path}cron"
|
61
78
|
end
|
62
79
|
|
63
80
|
end
|
data/sidekiq-cron.gemspec
CHANGED
@@ -2,18 +2,18 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: sidekiq-cron
|
5
|
+
# stub: sidekiq-cron 1.2.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
|
-
s.name = "sidekiq-cron"
|
9
|
-
s.version = "
|
8
|
+
s.name = "sidekiq-cron".freeze
|
9
|
+
s.version = "1.2.0"
|
10
10
|
|
11
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
-
s.require_paths = ["lib"]
|
13
|
-
s.authors = ["Ondrej Bartas"]
|
14
|
-
s.date = "
|
15
|
-
s.description = "Enables to set jobs to be run in specified time (using CRON notation)"
|
16
|
-
s.email = "ondrej@bartas.cz"
|
11
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
|
+
s.require_paths = ["lib".freeze]
|
13
|
+
s.authors = ["Ondrej Bartas".freeze]
|
14
|
+
s.date = "2020-04-03"
|
15
|
+
s.description = "Enables to set jobs to be run in specified time (using CRON notation)".freeze
|
16
|
+
s.email = "ondrej@bartas.cz".freeze
|
17
17
|
s.extra_rdoc_files = [
|
18
18
|
"LICENSE.txt",
|
19
19
|
"README.md"
|
@@ -37,11 +37,15 @@ Gem::Specification.new do |s|
|
|
37
37
|
"lib/sidekiq/cron/launcher.rb",
|
38
38
|
"lib/sidekiq/cron/locales/de.yml",
|
39
39
|
"lib/sidekiq/cron/locales/en.yml",
|
40
|
+
"lib/sidekiq/cron/locales/ja.yml",
|
40
41
|
"lib/sidekiq/cron/locales/ru.yml",
|
42
|
+
"lib/sidekiq/cron/locales/zh-CN.yml",
|
41
43
|
"lib/sidekiq/cron/poller.rb",
|
42
44
|
"lib/sidekiq/cron/support.rb",
|
43
45
|
"lib/sidekiq/cron/views/cron.erb",
|
44
46
|
"lib/sidekiq/cron/views/cron.slim",
|
47
|
+
"lib/sidekiq/cron/views/cron_show.erb",
|
48
|
+
"lib/sidekiq/cron/views/cron_show.slim",
|
45
49
|
"lib/sidekiq/cron/web.rb",
|
46
50
|
"lib/sidekiq/cron/web_extension.rb",
|
47
51
|
"sidekiq-cron.gemspec",
|
@@ -51,75 +55,75 @@ Gem::Specification.new do |s|
|
|
51
55
|
"test/unit/poller_test.rb",
|
52
56
|
"test/unit/web_extension_test.rb"
|
53
57
|
]
|
54
|
-
s.homepage = "http://github.com/ondrejbartas/sidekiq-cron"
|
55
|
-
s.licenses = ["MIT"]
|
56
|
-
s.rubygems_version = "2.5.
|
57
|
-
s.summary = "Sidekiq Cron helps to add repeated scheduled jobs"
|
58
|
+
s.homepage = "http://github.com/ondrejbartas/sidekiq-cron".freeze
|
59
|
+
s.licenses = ["MIT".freeze]
|
60
|
+
s.rubygems_version = "2.5.2.3".freeze
|
61
|
+
s.summary = "Sidekiq Cron helps to add repeated scheduled jobs".freeze
|
58
62
|
|
59
63
|
if s.respond_to? :specification_version then
|
60
64
|
s.specification_version = 4
|
61
65
|
|
62
66
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
63
|
-
s.add_runtime_dependency(%q<sidekiq
|
64
|
-
s.add_runtime_dependency(%q<
|
65
|
-
s.add_development_dependency(%q<bundler
|
66
|
-
s.add_development_dependency(%q<simplecov
|
67
|
-
s.add_development_dependency(%q<redis-namespace
|
68
|
-
s.add_development_dependency(%q<shoulda-context
|
69
|
-
s.add_development_dependency(%q<rack
|
70
|
-
s.add_development_dependency(%q<rack-test
|
71
|
-
s.add_development_dependency(%q<jeweler
|
72
|
-
s.add_development_dependency(%q<minitest
|
73
|
-
s.add_development_dependency(%q<test-unit
|
74
|
-
s.add_development_dependency(%q<sdoc
|
75
|
-
s.add_development_dependency(%q<slim
|
76
|
-
s.add_development_dependency(%q<sinatra
|
77
|
-
s.add_development_dependency(%q<mocha
|
78
|
-
s.add_development_dependency(%q<coveralls
|
79
|
-
s.add_development_dependency(%q<shotgun
|
80
|
-
s.add_development_dependency(%q<guard
|
81
|
-
s.add_development_dependency(%q<guard-minitest
|
67
|
+
s.add_runtime_dependency(%q<sidekiq>.freeze, [">= 4.2.1"])
|
68
|
+
s.add_runtime_dependency(%q<fugit>.freeze, ["~> 1.1"])
|
69
|
+
s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
|
70
|
+
s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
|
71
|
+
s.add_development_dependency(%q<redis-namespace>.freeze, [">= 1.5.2"])
|
72
|
+
s.add_development_dependency(%q<shoulda-context>.freeze, [">= 0"])
|
73
|
+
s.add_development_dependency(%q<rack>.freeze, [">= 0"])
|
74
|
+
s.add_development_dependency(%q<rack-test>.freeze, [">= 0"])
|
75
|
+
s.add_development_dependency(%q<jeweler>.freeze, [">= 0"])
|
76
|
+
s.add_development_dependency(%q<minitest>.freeze, [">= 0"])
|
77
|
+
s.add_development_dependency(%q<test-unit>.freeze, [">= 0"])
|
78
|
+
s.add_development_dependency(%q<sdoc>.freeze, [">= 0"])
|
79
|
+
s.add_development_dependency(%q<slim>.freeze, [">= 0"])
|
80
|
+
s.add_development_dependency(%q<sinatra>.freeze, [">= 0"])
|
81
|
+
s.add_development_dependency(%q<mocha>.freeze, [">= 0"])
|
82
|
+
s.add_development_dependency(%q<coveralls>.freeze, [">= 0"])
|
83
|
+
s.add_development_dependency(%q<shotgun>.freeze, [">= 0"])
|
84
|
+
s.add_development_dependency(%q<guard>.freeze, [">= 0"])
|
85
|
+
s.add_development_dependency(%q<guard-minitest>.freeze, [">= 0"])
|
82
86
|
else
|
83
|
-
s.add_dependency(%q<sidekiq
|
84
|
-
s.add_dependency(%q<
|
85
|
-
s.add_dependency(%q<bundler
|
86
|
-
s.add_dependency(%q<simplecov
|
87
|
-
s.add_dependency(%q<redis-namespace
|
88
|
-
s.add_dependency(%q<shoulda-context
|
89
|
-
s.add_dependency(%q<rack
|
90
|
-
s.add_dependency(%q<rack-test
|
91
|
-
s.add_dependency(%q<jeweler
|
92
|
-
s.add_dependency(%q<minitest
|
93
|
-
s.add_dependency(%q<test-unit
|
94
|
-
s.add_dependency(%q<sdoc
|
95
|
-
s.add_dependency(%q<slim
|
96
|
-
s.add_dependency(%q<sinatra
|
97
|
-
s.add_dependency(%q<mocha
|
98
|
-
s.add_dependency(%q<coveralls
|
99
|
-
s.add_dependency(%q<shotgun
|
100
|
-
s.add_dependency(%q<guard
|
101
|
-
s.add_dependency(%q<guard-minitest
|
87
|
+
s.add_dependency(%q<sidekiq>.freeze, [">= 4.2.1"])
|
88
|
+
s.add_dependency(%q<fugit>.freeze, ["~> 1.1"])
|
89
|
+
s.add_dependency(%q<bundler>.freeze, [">= 0"])
|
90
|
+
s.add_dependency(%q<simplecov>.freeze, [">= 0"])
|
91
|
+
s.add_dependency(%q<redis-namespace>.freeze, [">= 1.5.2"])
|
92
|
+
s.add_dependency(%q<shoulda-context>.freeze, [">= 0"])
|
93
|
+
s.add_dependency(%q<rack>.freeze, [">= 0"])
|
94
|
+
s.add_dependency(%q<rack-test>.freeze, [">= 0"])
|
95
|
+
s.add_dependency(%q<jeweler>.freeze, [">= 0"])
|
96
|
+
s.add_dependency(%q<minitest>.freeze, [">= 0"])
|
97
|
+
s.add_dependency(%q<test-unit>.freeze, [">= 0"])
|
98
|
+
s.add_dependency(%q<sdoc>.freeze, [">= 0"])
|
99
|
+
s.add_dependency(%q<slim>.freeze, [">= 0"])
|
100
|
+
s.add_dependency(%q<sinatra>.freeze, [">= 0"])
|
101
|
+
s.add_dependency(%q<mocha>.freeze, [">= 0"])
|
102
|
+
s.add_dependency(%q<coveralls>.freeze, [">= 0"])
|
103
|
+
s.add_dependency(%q<shotgun>.freeze, [">= 0"])
|
104
|
+
s.add_dependency(%q<guard>.freeze, [">= 0"])
|
105
|
+
s.add_dependency(%q<guard-minitest>.freeze, [">= 0"])
|
102
106
|
end
|
103
107
|
else
|
104
|
-
s.add_dependency(%q<sidekiq
|
105
|
-
s.add_dependency(%q<
|
106
|
-
s.add_dependency(%q<bundler
|
107
|
-
s.add_dependency(%q<simplecov
|
108
|
-
s.add_dependency(%q<redis-namespace
|
109
|
-
s.add_dependency(%q<shoulda-context
|
110
|
-
s.add_dependency(%q<rack
|
111
|
-
s.add_dependency(%q<rack-test
|
112
|
-
s.add_dependency(%q<jeweler
|
113
|
-
s.add_dependency(%q<minitest
|
114
|
-
s.add_dependency(%q<test-unit
|
115
|
-
s.add_dependency(%q<sdoc
|
116
|
-
s.add_dependency(%q<slim
|
117
|
-
s.add_dependency(%q<sinatra
|
118
|
-
s.add_dependency(%q<mocha
|
119
|
-
s.add_dependency(%q<coveralls
|
120
|
-
s.add_dependency(%q<shotgun
|
121
|
-
s.add_dependency(%q<guard
|
122
|
-
s.add_dependency(%q<guard-minitest
|
108
|
+
s.add_dependency(%q<sidekiq>.freeze, [">= 4.2.1"])
|
109
|
+
s.add_dependency(%q<fugit>.freeze, ["~> 1.1"])
|
110
|
+
s.add_dependency(%q<bundler>.freeze, [">= 0"])
|
111
|
+
s.add_dependency(%q<simplecov>.freeze, [">= 0"])
|
112
|
+
s.add_dependency(%q<redis-namespace>.freeze, [">= 1.5.2"])
|
113
|
+
s.add_dependency(%q<shoulda-context>.freeze, [">= 0"])
|
114
|
+
s.add_dependency(%q<rack>.freeze, [">= 0"])
|
115
|
+
s.add_dependency(%q<rack-test>.freeze, [">= 0"])
|
116
|
+
s.add_dependency(%q<jeweler>.freeze, [">= 0"])
|
117
|
+
s.add_dependency(%q<minitest>.freeze, [">= 0"])
|
118
|
+
s.add_dependency(%q<test-unit>.freeze, [">= 0"])
|
119
|
+
s.add_dependency(%q<sdoc>.freeze, [">= 0"])
|
120
|
+
s.add_dependency(%q<slim>.freeze, [">= 0"])
|
121
|
+
s.add_dependency(%q<sinatra>.freeze, [">= 0"])
|
122
|
+
s.add_dependency(%q<mocha>.freeze, [">= 0"])
|
123
|
+
s.add_dependency(%q<coveralls>.freeze, [">= 0"])
|
124
|
+
s.add_dependency(%q<shotgun>.freeze, [">= 0"])
|
125
|
+
s.add_dependency(%q<guard>.freeze, [">= 0"])
|
126
|
+
s.add_dependency(%q<guard-minitest>.freeze, [">= 0"])
|
123
127
|
end
|
124
128
|
end
|
125
129
|
|
@@ -2,13 +2,11 @@
|
|
2
2
|
require './test/test_helper'
|
3
3
|
require 'benchmark'
|
4
4
|
|
5
|
-
describe '
|
5
|
+
describe 'Performance Poller' do
|
6
6
|
X = 10000
|
7
7
|
before do
|
8
8
|
Sidekiq.redis = REDIS
|
9
|
-
|
10
|
-
conn.flushdb
|
11
|
-
end
|
9
|
+
Redis.current.flushdb
|
12
10
|
|
13
11
|
#clear all previous saved data from redis
|
14
12
|
Sidekiq.redis do |conn|
|
@@ -28,12 +26,12 @@ describe 'Perfromance Poller' do
|
|
28
26
|
end
|
29
27
|
|
30
28
|
@poller = Sidekiq::Cron::Poller.new
|
31
|
-
now = Time.now.utc
|
32
|
-
enqueued_time = Time.new(now.year, now.month, now.day, now.hour
|
29
|
+
now = Time.now.utc + 3600
|
30
|
+
enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 10, 5)
|
33
31
|
Time.stubs(:now).returns(enqueued_time)
|
34
32
|
end
|
35
33
|
|
36
|
-
it 'should enqueue 10000 jobs in less than
|
34
|
+
it 'should enqueue 10000 jobs in less than 40s' do
|
37
35
|
Sidekiq.redis do |conn|
|
38
36
|
assert_equal 0, conn.llen("queue:default"), 'Queue should be empty'
|
39
37
|
end
|
@@ -46,7 +44,7 @@ describe 'Perfromance Poller' do
|
|
46
44
|
assert_equal X, conn.llen("queue:default"), 'Queue should be full'
|
47
45
|
end
|
48
46
|
|
49
|
-
puts "
|
50
|
-
assert_operator
|
47
|
+
puts "Performance test finished in #{bench.real}"
|
48
|
+
assert_operator bench.real, :<, 40
|
51
49
|
end
|
52
50
|
end
|
data/test/test_helper.rb
CHANGED
@@ -20,7 +20,7 @@ Coveralls.wear!
|
|
20
20
|
require "minitest/autorun"
|
21
21
|
require 'shoulda-context'
|
22
22
|
require "rack/test"
|
23
|
-
require
|
23
|
+
require 'mocha/minitest'
|
24
24
|
|
25
25
|
ENV['RACK_ENV'] = 'test'
|
26
26
|
|
@@ -66,6 +66,13 @@ end
|
|
66
66
|
|
67
67
|
module ActiveJob
|
68
68
|
class Base
|
69
|
+
attr_accessor *%i[job_class provider_job_id queue_name arguments]
|
70
|
+
|
71
|
+
def initialize
|
72
|
+
yield self if block_given?
|
73
|
+
self.provider_job_id ||= SecureRandom.hex(12)
|
74
|
+
end
|
75
|
+
|
69
76
|
def self.queue_name_prefix
|
70
77
|
@queue_name_prefix
|
71
78
|
end
|
@@ -80,12 +87,16 @@ module ActiveJob
|
|
80
87
|
self
|
81
88
|
end
|
82
89
|
|
90
|
+
def try(method, *args, &block)
|
91
|
+
send method, *args, &block if respond_to? method
|
92
|
+
end
|
93
|
+
|
83
94
|
def self.perform_later(*args)
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
95
|
+
new do |instance|
|
96
|
+
instance.job_class = self.class.name
|
97
|
+
instance.queue_name = @queue
|
98
|
+
instance.arguments = [*args]
|
99
|
+
end
|
89
100
|
end
|
90
101
|
end
|
91
102
|
end
|
data/test/unit/job_test.rb
CHANGED
@@ -131,6 +131,28 @@ describe "Cron Job" do
|
|
131
131
|
end
|
132
132
|
end
|
133
133
|
|
134
|
+
describe 'parse_enqueue_time' do
|
135
|
+
before do
|
136
|
+
@args = {
|
137
|
+
name: "Test",
|
138
|
+
cron: "* * * * *"
|
139
|
+
}
|
140
|
+
@job = Sidekiq::Cron::Job.new(@args)
|
141
|
+
end
|
142
|
+
|
143
|
+
it 'should correctly parse new format' do
|
144
|
+
assert_equal @job.send(:parse_enqueue_time, '2017-01-02 15:23:43 UTC'), Time.new(2017, 1, 2, 15, 23, 43, '+00:00')
|
145
|
+
end
|
146
|
+
|
147
|
+
it 'should correctly parse new format with different timezone' do
|
148
|
+
assert_equal @job.send(:parse_enqueue_time, '2017-01-02 15:23:43 +01:00'), Time.new(2017, 1, 2, 15, 23, 43, '+01:00')
|
149
|
+
end
|
150
|
+
|
151
|
+
it 'should correctly parse old format' do
|
152
|
+
assert_equal @job.send(:parse_enqueue_time, '2017-01-02 15:23:43'), Time.new(2017, 1, 2, 15, 23, 43, '+00:00')
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
134
156
|
describe 'formatted time' do
|
135
157
|
before do
|
136
158
|
@args = {
|
@@ -201,6 +223,34 @@ describe "Cron Job" do
|
|
201
223
|
"class"=>"CronTestClassWithQueue",
|
202
224
|
"args"=>[]}
|
203
225
|
end
|
226
|
+
|
227
|
+
it "be initialized with 'class' and date_as_argument" do
|
228
|
+
job = Sidekiq::Cron::Job.new('class' => 'CronTestClassWithQueue', "date_as_argument" => true)
|
229
|
+
|
230
|
+
job_message = job.message
|
231
|
+
job_args = job_message.delete("args")
|
232
|
+
assert_equal job_message, {"retry"=>false,
|
233
|
+
"queue"=>:super,
|
234
|
+
"backtrace"=>true,
|
235
|
+
"class"=>"CronTestClassWithQueue"}
|
236
|
+
assert job_args[-1].is_a?(Float)
|
237
|
+
assert job_args[-1].between?(Time.now.to_f - 1, Time.now.to_f)
|
238
|
+
end
|
239
|
+
|
240
|
+
it "be initialized with 'class', 2 arguments and date_as_argument" do
|
241
|
+
job = Sidekiq::Cron::Job.new('class' => 'CronTestClassWithQueue', "date_as_argument" => true, "args"=> ["arg1", :arg2])
|
242
|
+
|
243
|
+
job_message = job.message
|
244
|
+
job_args = job_message.delete("args")
|
245
|
+
assert_equal job_message, {"retry"=>false,
|
246
|
+
"queue"=>:super,
|
247
|
+
"backtrace"=>true,
|
248
|
+
"class"=>"CronTestClassWithQueue"}
|
249
|
+
assert job_args[-1].is_a?(Float)
|
250
|
+
assert job_args[-1].between?(Time.now.to_f - 1, Time.now.to_f)
|
251
|
+
assert_equal job_args[0..-2], ["arg1", :arg2]
|
252
|
+
end
|
253
|
+
|
204
254
|
end
|
205
255
|
|
206
256
|
describe "cron test" do
|
@@ -210,24 +260,24 @@ describe "Cron Job" do
|
|
210
260
|
|
211
261
|
it "return previous minute" do
|
212
262
|
@job.cron = "* * * * *"
|
213
|
-
time = Time.
|
263
|
+
time = Time.new(2018, 8, 10, 13, 24, 56).utc
|
214
264
|
assert_equal @job.last_time(time).strftime("%Y-%m-%d-%H-%M-%S"), time.strftime("%Y-%m-%d-%H-%M-00")
|
215
265
|
end
|
216
266
|
|
217
267
|
it "return previous hour" do
|
218
268
|
@job.cron = "1 * * * *"
|
219
|
-
time = Time.
|
269
|
+
time = Time.new(2018, 8, 10, 13, 24, 56).utc
|
220
270
|
assert_equal @job.last_time(time).strftime("%Y-%m-%d-%H-%M-%S"), time.strftime("%Y-%m-%d-%H-01-00")
|
221
271
|
end
|
222
272
|
|
223
273
|
it "return previous day" do
|
224
274
|
@job.cron = "1 2 * * * Etc/GMT"
|
225
|
-
time = Time.
|
275
|
+
time = Time.new(2018, 8, 10, 13, 24, 56).utc
|
226
276
|
|
227
277
|
if time.hour >= 2
|
228
278
|
assert_equal @job.last_time(time).strftime("%Y-%m-%d-%H-%M-%S"), time.strftime("%Y-%m-%d-02-01-00")
|
229
279
|
else
|
230
|
-
yesterday =
|
280
|
+
yesterday = time - 1.day
|
231
281
|
assert_equal @job.last_time(time).strftime("%Y-%m-%d-%H-%M-%S"), yesterday.strftime("%Y-%m-%d-02-01-00")
|
232
282
|
end
|
233
283
|
end
|
@@ -299,6 +349,7 @@ describe "Cron Job" do
|
|
299
349
|
it 'should return valid payload for Sidekiq::Client' do
|
300
350
|
payload = {
|
301
351
|
'class' => 'ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper',
|
352
|
+
'wrapped' => 'ActiveJobCronTestClass',
|
302
353
|
'queue' => 'super_queue',
|
303
354
|
'description' => nil,
|
304
355
|
'args' => [{
|
@@ -330,10 +381,11 @@ describe "Cron Job" do
|
|
330
381
|
|
331
382
|
it 'should return valid payload for Sidekiq::Client' do
|
332
383
|
payload = {
|
333
|
-
'class'
|
334
|
-
'
|
384
|
+
'class' => 'ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper',
|
385
|
+
'wrapped' => 'ActiveJobCronTestClass',
|
386
|
+
'queue' => 'prefix_super_queue',
|
335
387
|
'description' => nil,
|
336
|
-
'args'
|
388
|
+
'args' => [{
|
337
389
|
'job_class' => 'ActiveJobCronTestClass',
|
338
390
|
'job_id' => 'XYZ',
|
339
391
|
'queue_name' => 'prefix_super_queue',
|
@@ -357,7 +409,7 @@ describe "Cron Job" do
|
|
357
409
|
|
358
410
|
it 'pushes to queue active jobs message' do
|
359
411
|
@job.expects(:enqueue_active_job)
|
360
|
-
.returns(
|
412
|
+
.returns(ActiveJobCronTestClass.new)
|
361
413
|
@job.enque!
|
362
414
|
end
|
363
415
|
end
|
@@ -375,7 +427,7 @@ describe "Cron Job" do
|
|
375
427
|
|
376
428
|
it 'pushes to queue active jobs message with queue_name_prefix' do
|
377
429
|
@job.expects(:enqueue_active_job)
|
378
|
-
.returns(
|
430
|
+
.returns(ActiveJobCronTestClass.new)
|
379
431
|
@job.enque!
|
380
432
|
end
|
381
433
|
end
|
@@ -522,7 +574,6 @@ describe "Cron Job" do
|
|
522
574
|
assert @job.save
|
523
575
|
end
|
524
576
|
|
525
|
-
|
526
577
|
it "be saved and found by name" do
|
527
578
|
assert @job.save, "not saved"
|
528
579
|
assert Sidekiq::Cron::Job.find("Test").is_a?(Sidekiq::Cron::Job)
|
@@ -599,14 +650,15 @@ describe "Cron Job" do
|
|
599
650
|
|
600
651
|
it "last_enqueue_time shouldn't be rewritten after save" do
|
601
652
|
#adding last_enqueue_time to initialize is only for test purpose
|
602
|
-
last_enqueue_time = '2013-01-01 23:59:59'
|
653
|
+
last_enqueue_time = '2013-01-01 23:59:59 +0000'
|
654
|
+
expected_enqueue_time = DateTime.parse(last_enqueue_time).to_time.utc
|
603
655
|
Sidekiq::Cron::Job.create(@args.merge('last_enqueue_time' => last_enqueue_time))
|
604
656
|
job = Sidekiq::Cron::Job.find(@args)
|
605
|
-
assert_equal job.last_enqueue_time,
|
657
|
+
assert_equal job.last_enqueue_time, expected_enqueue_time
|
606
658
|
|
607
659
|
Sidekiq::Cron::Job.create(@args)
|
608
660
|
job = Sidekiq::Cron::Job.find(@args)
|
609
|
-
assert_equal job.last_enqueue_time,
|
661
|
+
assert_equal job.last_enqueue_time, expected_enqueue_time, "after second create should have same time"
|
610
662
|
end
|
611
663
|
end
|
612
664
|
|
@@ -883,7 +935,8 @@ describe "Cron Job" do
|
|
883
935
|
@jobs_hash['name_of_job']['cron'] = "bad cron"
|
884
936
|
out = Sidekiq::Cron::Job.load_from_hash @jobs_hash
|
885
937
|
assert_equal 1, out.size, "should have 1 error"
|
886
|
-
|
938
|
+
assert_includes out['name_of_job'].first, "bad cron"
|
939
|
+
assert_includes out['name_of_job'].first, "ArgumentError:"
|
887
940
|
assert_equal 1, Sidekiq::Cron::Job.all.size, "Should have only 1 job after load"
|
888
941
|
end
|
889
942
|
|