sidekiq-cron 1.10.1 → 1.11.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.
@@ -1,33 +0,0 @@
1
- require './test/test_helper'
2
-
3
- describe 'Cron launcher' do
4
- describe 'initialization' do
5
- before do
6
- Sidekiq::Options[: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.respond_to?(:default_configuration) ? Sidekiq.default_configuration : 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::Options[:cron_poll_interval] = 99
23
- Sidekiq::Launcher.new(Sidekiq.respond_to?(:default_configuration) ? Sidekiq.default_configuration : 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::Options[:cron_poll_interval] = 0
30
- Sidekiq::Launcher.new(Sidekiq.respond_to?(:default_configuration) ? Sidekiq.default_configuration : Sidekiq)
31
- end
32
- end
33
- end
@@ -1,144 +0,0 @@
1
- require './test/test_helper'
2
-
3
- describe 'Cron Poller' do
4
- before do
5
- # Clear all previous saved data from Redis.
6
- Sidekiq.redis do |conn|
7
- conn.flushdb
8
- end
9
-
10
- @args = {
11
- name: "Test",
12
- cron: "*/2 * * * *",
13
- klass: "CronTestClass"
14
- }
15
- @args2 = @args.merge(name: 'with_queue', klass: 'CronTestClassWithQueue', cron: "*/10 * * * *")
16
-
17
- @poller = Sidekiq::Cron::Poller.new(Sidekiq.const_defined?(:Config) ? Sidekiq::Config.new : {})
18
- end
19
-
20
- it 'not enqueue any job - new jobs' do
21
- now = Time.now.utc + 3600
22
- enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 5, 1)
23
- Time.stubs(:now).returns(enqueued_time)
24
-
25
- Sidekiq::Cron::Job.create(@args)
26
- Sidekiq::Cron::Job.create(@args2)
27
-
28
- @poller.enqueue
29
-
30
- Sidekiq.redis do |conn|
31
- assert_equal 0, conn.llen("queue:default")
32
- assert_equal 0, conn.llen("queue:super")
33
- end
34
-
35
- # 30 seconds after!
36
- enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 5, 30)
37
- Time.stubs(:now).returns(enqueued_time)
38
-
39
- @poller.enqueue
40
-
41
- Sidekiq.redis do |conn|
42
- assert_equal 0, conn.llen("queue:default")
43
- assert_equal 0, conn.llen("queue:super")
44
- end
45
- end
46
-
47
- it 'should enqueue only job with cron */2' do
48
- now = Time.now.utc + 3600
49
- enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 5, 1)
50
- Time.stubs(:now).returns(enqueued_time)
51
-
52
- Sidekiq::Cron::Job.create(@args)
53
- Sidekiq::Cron::Job.create(@args2)
54
-
55
- @poller.enqueue
56
-
57
- Sidekiq.redis do |conn|
58
- assert_equal 0, conn.llen("queue:default")
59
- assert_equal 0, conn.llen("queue:super")
60
- end
61
-
62
- enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 6, 1)
63
- Time.stubs(:now).returns(enqueued_time)
64
- @poller.enqueue
65
-
66
- Sidekiq.redis do |conn|
67
- assert_equal 1, conn.llen("queue:default")
68
- assert_equal 0, conn.llen("queue:super")
69
- end
70
- end
71
-
72
- it 'should enqueue both jobs' do
73
- now = Time.now.utc + 3600
74
- enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 8, 1)
75
- Time.stubs(:now).returns(enqueued_time)
76
-
77
- Sidekiq::Cron::Job.create(@args)
78
- Sidekiq::Cron::Job.create(@args2)
79
-
80
- @poller.enqueue
81
-
82
- Sidekiq.redis do |conn|
83
- assert_equal 0, conn.llen("queue:default")
84
- assert_equal 0, conn.llen("queue:super")
85
- end
86
-
87
- enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 10, 5)
88
- Time.stubs(:now).returns(enqueued_time)
89
- @poller.enqueue
90
-
91
- Sidekiq.redis do |conn|
92
- assert_equal 1, conn.llen("queue:default")
93
- assert_equal 1, conn.llen("queue:super")
94
- end
95
- end
96
-
97
- it 'should enqueue both jobs but only one time each' do
98
- now = Time.now.utc + 3600
99
- enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 8, 1)
100
- Time.stubs(:now).returns(enqueued_time)
101
-
102
- Sidekiq::Cron::Job.create(@args)
103
- Sidekiq::Cron::Job.create(@args2)
104
-
105
- @poller.enqueue
106
-
107
- Sidekiq.redis do |conn|
108
- assert_equal 0, conn.llen("queue:default")
109
- assert_equal 0, conn.llen("queue:super")
110
- end
111
-
112
- enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 20, 1)
113
- Time.stubs(:now).returns(enqueued_time)
114
- @poller.enqueue
115
- Sidekiq.redis do |conn|
116
- assert_equal 1, conn.llen("queue:default")
117
- assert_equal 1, conn.llen("queue:super")
118
- end
119
-
120
- enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 20, 2)
121
- Time.stubs(:now).returns(enqueued_time)
122
- @poller.enqueue
123
- Sidekiq.redis do |conn|
124
- assert_equal 1, conn.llen("queue:default")
125
- assert_equal 1, conn.llen("queue:super")
126
- end
127
-
128
- enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 20, 20)
129
- Time.stubs(:now).returns(enqueued_time)
130
- @poller.enqueue
131
- Sidekiq.redis do |conn|
132
- assert_equal 1, conn.llen("queue:default")
133
- assert_equal 1, conn.llen("queue:super")
134
- end
135
-
136
- enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 20, 50)
137
- Time.stubs(:now).returns(enqueued_time)
138
- @poller.enqueue
139
- Sidekiq.redis do |conn|
140
- assert_equal 1, conn.llen("queue:default")
141
- assert_equal 1, conn.llen("queue:super")
142
- end
143
- end
144
- end
@@ -1,58 +0,0 @@
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
-
46
- describe 'Schedule is defined using ERB' do
47
- it 'properly parses the schedule file' do
48
- Sidekiq::Options[:cron_schedule_file] = 'test/unit/fixtures/schedule_erb.yml'
49
- load 'sidekiq/cron/schedule_loader.rb'
50
-
51
- Sidekiq::Options[:lifecycle_events][:startup].first.call
52
-
53
- job = Sidekiq::Cron::Job.find("daily_job")
54
- assert_equal job.klass, "DailyJob"
55
- assert_equal job.cron, "every day at 5 pm"
56
- end
57
- end
58
- end
@@ -1,155 +0,0 @@
1
- require './test/test_helper'
2
-
3
- describe 'Cron web' do
4
- include Rack::Test::Methods
5
-
6
- TOKEN = SecureRandom.base64(32).freeze
7
-
8
- def app
9
- Sidekiq::Web
10
- end
11
-
12
- before do
13
- env 'rack.session', { csrf: TOKEN }
14
- env 'HTTP_X_CSRF_TOKEN', TOKEN
15
- Sidekiq.redis { |c| c.flushdb }
16
- end
17
-
18
- let(:job_name) { "TestNameOfCronJob" }
19
- let(:cron_job_name) { "TesQueueNameOfCronJob" }
20
-
21
- let(:args) do
22
- {
23
- name: job_name,
24
- cron: "*/2 * * * *",
25
- klass: "CronTestClass"
26
- }
27
- end
28
-
29
- let(:cron_args) do
30
- {
31
- name: cron_job_name,
32
- cron: "*/2 * * * *",
33
- klass: "CronQueueTestClass",
34
- queue: "cron"
35
- }
36
- end
37
-
38
- it 'display cron web' do
39
- get '/cron'
40
- assert_equal 200, last_response.status
41
- end
42
-
43
- it 'display cron web with message - no cron jobs' do
44
- get '/cron'
45
- assert last_response.body.include?('No cron jobs were found')
46
- end
47
-
48
- it 'display cron web with cron jobs table' do
49
- Sidekiq::Cron::Job.create(args)
50
-
51
- get '/cron'
52
- assert_equal 200, last_response.status
53
- refute last_response.body.include?('No cron jobs were found')
54
- assert last_response.body.include?('table')
55
- assert last_response.body.include?("TestNameOfCronJob")
56
- end
57
-
58
- describe "work with cron job" do
59
- before do
60
- @job = Sidekiq::Cron::Job.new(args.merge(status: "enabled"))
61
- assert @job.save
62
-
63
- @cron_job = Sidekiq::Cron::Job.new(cron_args.merge(status: "enabled"))
64
- assert @cron_job.save
65
- end
66
-
67
- it 'shows history of a cron job' do
68
- @job.enque!
69
- get "/cron/#{job_name}"
70
-
71
- jid =
72
- Sidekiq.redis do |conn|
73
- history = conn.lrange Sidekiq::Cron::Job.jid_history_key(job_name), 0, -1
74
- Sidekiq.load_json(history.last)['jid']
75
- end
76
-
77
- assert jid
78
- assert last_response.body.include?(jid)
79
- end
80
-
81
- it 'redirects to cron path when name not found' do
82
- get '/cron/some-fake-name'
83
-
84
- assert_match %r{\/cron\z}, last_response['Location']
85
- end
86
-
87
- it "disable and enable all cron jobs" do
88
- post "/cron/__all__/disable"
89
- assert_equal Sidekiq::Cron::Job.find(job_name).status, "disabled"
90
-
91
- post "/cron/__all__/enable"
92
- assert_equal Sidekiq::Cron::Job.find(job_name).status, "enabled"
93
- end
94
-
95
- it "disable and enable cron job" do
96
- post "/cron/#{job_name}/disable"
97
- assert_equal Sidekiq::Cron::Job.find(job_name).status, "disabled"
98
-
99
- post "/cron/#{job_name}/enable"
100
- assert_equal Sidekiq::Cron::Job.find(job_name).status, "enabled"
101
- end
102
-
103
- it "enqueue all jobs" do
104
- Sidekiq.redis do |conn|
105
- assert_equal 0, conn.llen("queue:default"), "Queue should have no jobs"
106
- end
107
-
108
- post "/cron/__all__/enque"
109
-
110
- Sidekiq.redis do |conn|
111
- assert_equal 1, conn.llen("queue:default"), "Queue should have 1 job in default"
112
- assert_equal 1, conn.llen("queue:cron"), "Queue should have 1 job in cron"
113
- end
114
- end
115
-
116
- it "enqueue job" do
117
- Sidekiq.redis do |conn|
118
- assert_equal 0, conn.llen("queue:default"), "Queue should have no jobs"
119
- end
120
-
121
- post "/cron/#{job_name}/enque"
122
-
123
- Sidekiq.redis do |conn|
124
- assert_equal 1, conn.llen("queue:default"), "Queue should have 1 job"
125
- end
126
-
127
- # Should enqueue more times.
128
- post "/cron/#{job_name}/enque"
129
-
130
- Sidekiq.redis do |conn|
131
- assert_equal 2, conn.llen("queue:default"), "Queue should have 2 job"
132
- end
133
-
134
- # Should enqueue to cron job queue.
135
- post "/cron/#{cron_job_name}/enque"
136
-
137
- Sidekiq.redis do |conn|
138
- assert_equal 1, conn.llen("queue:cron"), "Queue should have 1 cron job"
139
- end
140
- end
141
-
142
- it "destroy job" do
143
- assert_equal Sidekiq::Cron::Job.all.size, 2, "Should have 2 job"
144
- post "/cron/#{job_name}/delete"
145
- post "/cron/#{cron_job_name}/delete"
146
- assert_equal Sidekiq::Cron::Job.all.size, 0, "Should have zero jobs"
147
- end
148
-
149
- it "destroy all jobs" do
150
- assert_equal Sidekiq::Cron::Job.all.size, 2, "Should have 2 job"
151
- post "/cron/__all__/delete"
152
- assert_equal Sidekiq::Cron::Job.all.size, 0, "Should have zero jobs"
153
- end
154
- end
155
- end