sidekiq 2.14.1 → 2.15.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sidekiq might be problematic. Click here for more details.
- data/Changes.md +24 -0
- data/README.md +6 -3
- data/lib/sidekiq.rb +8 -0
- data/lib/sidekiq/api.rb +1 -1
- data/lib/sidekiq/cli.rb +1 -1
- data/lib/sidekiq/client.rb +24 -2
- data/lib/sidekiq/exception_handler.rb +2 -2
- data/lib/sidekiq/launcher.rb +38 -9
- data/lib/sidekiq/manager.rb +0 -3
- data/lib/sidekiq/testing.rb +65 -4
- data/lib/sidekiq/testing/inline.rb +27 -40
- data/lib/sidekiq/util.rb +1 -0
- data/lib/sidekiq/version.rb +1 -1
- data/lib/sidekiq/web.rb +16 -3
- data/lib/sidekiq/worker.rb +6 -8
- data/sidekiq.gemspec +4 -4
- data/test/helper.rb +8 -0
- data/test/test_api.rb +1 -1
- data/test/test_cli.rb +1 -1
- data/test/test_client.rb +23 -2
- data/test/test_exception_handler.rb +1 -1
- data/test/test_extensions.rb +1 -1
- data/test/test_fetch.rb +1 -1
- data/test/test_manager.rb +11 -18
- data/test/test_middleware.rb +1 -1
- data/test/test_processor.rb +1 -1
- data/test/test_redis_connection.rb +3 -3
- data/test/test_retry.rb +1 -1
- data/test/test_scheduled.rb +1 -1
- data/test/test_scheduling.rb +10 -2
- data/test/test_sidekiq.rb +2 -2
- data/test/test_testing.rb +43 -230
- data/test/test_testing_fake.rb +265 -0
- data/test/test_testing_inline.rb +4 -7
- data/test/test_util.rb +1 -1
- data/test/test_web.rb +1 -1
- data/web/assets/javascripts/dashboard.js +3 -1
- data/web/assets/stylesheets/application.css +84 -21
- data/web/assets/stylesheets/bootstrap.css +4 -15
- data/web/views/_nav.erb +12 -2
- data/web/views/_poll.erb +14 -0
- data/web/views/_status.erb +1 -1
- data/web/views/_summary.erb +23 -15
- data/web/views/_workers.erb +1 -1
- data/web/views/dashboard.erb +37 -34
- data/web/views/index.erb +2 -2
- data/web/views/layout.erb +3 -23
- data/web/views/queue.erb +4 -4
- data/web/views/queues.erb +1 -1
- data/web/views/retries.erb +10 -6
- data/web/views/retry.erb +1 -1
- data/web/views/scheduled.erb +2 -2
- data/web/views/scheduled_job_info.erb +1 -1
- metadata +13 -10
data/sidekiq.gemspec
CHANGED
@@ -17,12 +17,12 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.add_dependency 'redis', '>= 3.0.4'
|
18
18
|
gem.add_dependency 'redis-namespace', '>= 1.3.1'
|
19
19
|
gem.add_dependency 'connection_pool', '>= 1.0.0'
|
20
|
-
gem.add_dependency 'celluloid', '>= 0.
|
20
|
+
gem.add_dependency 'celluloid', '>= 0.15.1'
|
21
21
|
gem.add_dependency 'json'
|
22
22
|
gem.add_development_dependency 'sinatra'
|
23
|
-
gem.add_development_dependency 'minitest', '~>
|
23
|
+
gem.add_development_dependency 'minitest', '~> 4.2'
|
24
24
|
gem.add_development_dependency 'rake'
|
25
|
-
gem.add_development_dependency 'actionmailer', '>=
|
26
|
-
gem.add_development_dependency 'activerecord', '>=
|
25
|
+
gem.add_development_dependency 'actionmailer', '>= 4.0.0'
|
26
|
+
gem.add_development_dependency 'activerecord', '>= 4.0.0'
|
27
27
|
gem.add_development_dependency 'coveralls'
|
28
28
|
end
|
data/test/helper.rb
CHANGED
@@ -25,6 +25,8 @@ require 'sidekiq'
|
|
25
25
|
require 'sidekiq/util'
|
26
26
|
Sidekiq.logger.level = Logger::ERROR
|
27
27
|
|
28
|
+
Sidekiq::Test = MiniTest::Unit::TestCase
|
29
|
+
|
28
30
|
require 'sidekiq/redis_connection'
|
29
31
|
redis_url = ENV['REDIS_URL'] || 'redis://localhost/15'
|
30
32
|
REDIS = Sidekiq::RedisConnection.create(:url => redis_url, :namespace => 'testy')
|
@@ -32,3 +34,9 @@ REDIS = Sidekiq::RedisConnection.create(:url => redis_url, :namespace => 'testy'
|
|
32
34
|
Sidekiq.configure_client do |config|
|
33
35
|
config.redis = { :url => redis_url, :namespace => 'testy' }
|
34
36
|
end
|
37
|
+
|
38
|
+
Celluloid.class_eval do
|
39
|
+
def self.shutdown
|
40
|
+
$stderr.puts "Celluloid shutdown disabled"
|
41
|
+
end
|
42
|
+
end
|
data/test/test_api.rb
CHANGED
data/test/test_cli.rb
CHANGED
data/test/test_client.rb
CHANGED
@@ -2,7 +2,7 @@ require 'helper'
|
|
2
2
|
require 'sidekiq/client'
|
3
3
|
require 'sidekiq/worker'
|
4
4
|
|
5
|
-
class TestClient <
|
5
|
+
class TestClient < Sidekiq::Test
|
6
6
|
describe 'with mock redis' do
|
7
7
|
before do
|
8
8
|
@redis = Minitest::Mock.new
|
@@ -70,7 +70,7 @@ class TestClient < Minitest::Test
|
|
70
70
|
end
|
71
71
|
|
72
72
|
it 'has default options' do
|
73
|
-
assert_equal Sidekiq
|
73
|
+
assert_equal Sidekiq.default_worker_options, MyWorker.get_sidekiq_options
|
74
74
|
end
|
75
75
|
|
76
76
|
it 'handles perform_async' do
|
@@ -101,6 +101,27 @@ class TestClient < Minitest::Test
|
|
101
101
|
@redis.verify
|
102
102
|
end
|
103
103
|
|
104
|
+
it 'enqueues messages to redis (delayed, custom queue)' do
|
105
|
+
@redis.expect :zadd, 1, ['schedule', Array]
|
106
|
+
pushed = Sidekiq::Client.enqueue_to_in(:custom_queue, 3.minutes, MyWorker, 1, 2)
|
107
|
+
assert pushed
|
108
|
+
@redis.verify
|
109
|
+
end
|
110
|
+
|
111
|
+
it 'enqueues messages to redis (delayed into past, custom queue)' do
|
112
|
+
@redis.expect :lpush, 1, ['queue:custom_queue', Array]
|
113
|
+
pushed = Sidekiq::Client.enqueue_to_in(:custom_queue, -3.minutes, MyWorker, 1, 2)
|
114
|
+
assert pushed
|
115
|
+
@redis.verify
|
116
|
+
end
|
117
|
+
|
118
|
+
it 'enqueues messages to redis (delayed)' do
|
119
|
+
@redis.expect :zadd, 1, ['schedule', Array]
|
120
|
+
pushed = Sidekiq::Client.enqueue_in(3.minutes, MyWorker, 1, 2)
|
121
|
+
assert pushed
|
122
|
+
@redis.verify
|
123
|
+
end
|
124
|
+
|
104
125
|
class QueuedWorker
|
105
126
|
include Sidekiq::Worker
|
106
127
|
sidekiq_options :queue => :flimflam
|
data/test/test_extensions.rb
CHANGED
data/test/test_fetch.rb
CHANGED
data/test/test_manager.rb
CHANGED
@@ -1,29 +1,13 @@
|
|
1
1
|
require 'helper'
|
2
2
|
require 'sidekiq/manager'
|
3
3
|
|
4
|
-
class TestManager <
|
4
|
+
class TestManager < Sidekiq::Test
|
5
5
|
|
6
6
|
describe 'manager' do
|
7
7
|
it 'creates N processor instances' do
|
8
8
|
mgr = Sidekiq::Manager.new(options)
|
9
9
|
assert_equal options[:concurrency], mgr.ready.size
|
10
10
|
assert_equal [], mgr.busy
|
11
|
-
assert mgr.fetcher
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'fetches upon start' do
|
15
|
-
mgr = Sidekiq::Manager.new(options)
|
16
|
-
count = options[:concurrency]
|
17
|
-
|
18
|
-
fetch_mock = Minitest::Mock.new
|
19
|
-
count.times { fetch_mock.expect(:fetch, nil, []) }
|
20
|
-
async_mock = Minitest::Mock.new
|
21
|
-
count.times { async_mock.expect(:async, fetch_mock, []) }
|
22
|
-
mgr.fetcher = async_mock
|
23
|
-
mgr.start
|
24
|
-
|
25
|
-
fetch_mock.verify
|
26
|
-
async_mock.verify
|
27
11
|
end
|
28
12
|
|
29
13
|
it 'assigns work to a processor' do
|
@@ -56,11 +40,14 @@ class TestManager < Minitest::Test
|
|
56
40
|
|
57
41
|
assert mgr.busy.empty?
|
58
42
|
assert mgr.ready.empty?
|
59
|
-
refute mgr.fetcher.alive?
|
60
43
|
end
|
61
44
|
|
62
45
|
it 'returns finished processors to the ready pool' do
|
46
|
+
fetcher = MiniTest::Mock.new
|
47
|
+
fetcher.expect :async, fetcher, []
|
48
|
+
fetcher.expect :fetch, nil, []
|
63
49
|
mgr = Sidekiq::Manager.new(options)
|
50
|
+
mgr.fetcher = fetcher
|
64
51
|
init_size = mgr.ready.size
|
65
52
|
processor = mgr.ready.pop
|
66
53
|
mgr.busy << processor
|
@@ -68,10 +55,15 @@ class TestManager < Minitest::Test
|
|
68
55
|
|
69
56
|
assert_equal 0, mgr.busy.size
|
70
57
|
assert_equal init_size, mgr.ready.size
|
58
|
+
fetcher.verify
|
71
59
|
end
|
72
60
|
|
73
61
|
it 'throws away dead processors' do
|
62
|
+
fetcher = MiniTest::Mock.new
|
63
|
+
fetcher.expect :async, fetcher, []
|
64
|
+
fetcher.expect :fetch, nil, []
|
74
65
|
mgr = Sidekiq::Manager.new(options)
|
66
|
+
mgr.fetcher = fetcher
|
75
67
|
init_size = mgr.ready.size
|
76
68
|
processor = mgr.ready.pop
|
77
69
|
mgr.busy << processor
|
@@ -80,6 +72,7 @@ class TestManager < Minitest::Test
|
|
80
72
|
assert_equal 0, mgr.busy.size
|
81
73
|
assert_equal init_size, mgr.ready.size
|
82
74
|
refute mgr.ready.include?(processor)
|
75
|
+
fetcher.verify
|
83
76
|
end
|
84
77
|
|
85
78
|
def options
|
data/test/test_middleware.rb
CHANGED
data/test/test_processor.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'helper'
|
2
2
|
require 'sidekiq/redis_connection'
|
3
3
|
|
4
|
-
class TestRedisConnection <
|
4
|
+
class TestRedisConnection < Sidekiq::Test
|
5
5
|
|
6
6
|
describe ".create" do
|
7
7
|
|
@@ -14,7 +14,7 @@ class TestRedisConnection < Minitest::Test
|
|
14
14
|
it "sets a custom network_timeout if specified" do
|
15
15
|
pool = Sidekiq::RedisConnection.create(:network_timeout => 8)
|
16
16
|
redis = pool.checkout
|
17
|
-
|
17
|
+
|
18
18
|
assert_equal 8, redis.client.timeout
|
19
19
|
end
|
20
20
|
|
@@ -42,7 +42,7 @@ class TestRedisConnection < Minitest::Test
|
|
42
42
|
describe "pool_timeout" do
|
43
43
|
it "uses a given :timeout over the default of 1" do
|
44
44
|
pool = Sidekiq::RedisConnection.create(:pool_timeout => 5)
|
45
|
-
|
45
|
+
|
46
46
|
assert_equal 5, pool.instance_eval{ @timeout }
|
47
47
|
end
|
48
48
|
|
data/test/test_retry.rb
CHANGED
data/test/test_scheduled.rb
CHANGED
data/test/test_scheduling.rb
CHANGED
@@ -1,18 +1,19 @@
|
|
1
1
|
require 'helper'
|
2
2
|
require 'sidekiq/scheduled'
|
3
3
|
|
4
|
-
class TestScheduling <
|
4
|
+
class TestScheduling < Sidekiq::Test
|
5
5
|
describe 'middleware' do
|
6
6
|
before do
|
7
7
|
@redis = Minitest::Mock.new
|
8
8
|
# Ugh, this is terrible.
|
9
9
|
Sidekiq.instance_variable_set(:@redis, @redis)
|
10
|
-
|
10
|
+
def @redis.multi; [yield] * 2 if block_given?; end
|
11
11
|
def @redis.with; yield self; end
|
12
12
|
end
|
13
13
|
|
14
14
|
class ScheduledWorker
|
15
15
|
include Sidekiq::Worker
|
16
|
+
sidekiq_options :queue => :custom_queue
|
16
17
|
def perform(x)
|
17
18
|
end
|
18
19
|
end
|
@@ -29,6 +30,13 @@ class TestScheduling < Minitest::Test
|
|
29
30
|
@redis.verify
|
30
31
|
end
|
31
32
|
|
33
|
+
it 'schedules job right away on negative timestamp/interval' do
|
34
|
+
@redis.expect :sadd, true, ['queues', :custom_queue]
|
35
|
+
@redis.expect :lpush, true, ['queue:custom_queue', Array]
|
36
|
+
assert ScheduledWorker.perform_in(-300, 'mike')
|
37
|
+
@redis.verify
|
38
|
+
end
|
39
|
+
|
32
40
|
it 'schedules multiple jobs at once' do
|
33
41
|
@redis.expect :zadd, true, ['schedule', Array]
|
34
42
|
assert Sidekiq::Client.push_bulk('class' => ScheduledWorker, 'args' => [['mike'], ['mike']], 'at' => 600)
|
data/test/test_sidekiq.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'helper'
|
3
3
|
|
4
|
-
class TestSidekiq <
|
4
|
+
class TestSidekiq < Sidekiq::Test
|
5
5
|
describe 'json processing' do
|
6
6
|
it 'loads json' do
|
7
7
|
assert_equal ({"foo" => "bar"}), Sidekiq.load_json("{\"foo\":\"bar\"}")
|
@@ -34,4 +34,4 @@ class TestSidekiq < Minitest::Test
|
|
34
34
|
assert_equal "Calm down, bro\n", $stdout.string
|
35
35
|
end
|
36
36
|
end
|
37
|
-
end
|
37
|
+
end
|
data/test/test_testing.rb
CHANGED
@@ -9,261 +9,74 @@ require 'sidekiq/extensions/active_record'
|
|
9
9
|
|
10
10
|
Sidekiq.hook_rails!
|
11
11
|
|
12
|
-
class TestTesting <
|
12
|
+
class TestTesting < Sidekiq::Test
|
13
13
|
describe 'sidekiq testing' do
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
include Sidekiq::Worker
|
18
|
-
def perform(a, b)
|
19
|
-
a + b
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
class EnqueuedWorker
|
24
|
-
include Sidekiq::Worker
|
25
|
-
def perform(a, b)
|
26
|
-
a + b
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
class StoredWorker
|
31
|
-
include Sidekiq::Worker
|
32
|
-
def perform(error)
|
33
|
-
raise PerformError if error
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
class FooMailer < ActionMailer::Base
|
38
|
-
def bar(str)
|
39
|
-
str
|
14
|
+
describe 'require/load sidekiq/testing.rb' do
|
15
|
+
before do
|
16
|
+
require 'sidekiq/testing.rb'
|
40
17
|
end
|
41
|
-
end
|
42
18
|
|
43
|
-
|
44
|
-
|
45
|
-
str
|
19
|
+
after do
|
20
|
+
Sidekiq::Testing.disable!
|
46
21
|
end
|
47
|
-
end
|
48
|
-
|
49
|
-
before do
|
50
|
-
load 'sidekiq/testing.rb'
|
51
|
-
EnqueuedWorker.jobs.clear
|
52
|
-
DirectWorker.jobs.clear
|
53
|
-
end
|
54
22
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
alias_method :raw_push, :raw_push_old
|
60
|
-
remove_method :raw_push_old
|
23
|
+
it 'enables fake testing' do
|
24
|
+
Sidekiq::Testing.fake!
|
25
|
+
assert_equal true, Sidekiq::Testing.enabled?
|
26
|
+
assert_equal true, Sidekiq::Testing.fake?
|
61
27
|
end
|
62
|
-
end
|
63
|
-
|
64
|
-
it 'stubs the async call' do
|
65
|
-
assert_equal 0, DirectWorker.jobs.size
|
66
|
-
assert DirectWorker.perform_async(1, 2)
|
67
|
-
assert_equal 1, DirectWorker.jobs.size
|
68
|
-
assert DirectWorker.perform_in(10, 1, 2)
|
69
|
-
assert_equal 2, DirectWorker.jobs.size
|
70
|
-
assert DirectWorker.perform_at(10, 1, 2)
|
71
|
-
assert_equal 3, DirectWorker.jobs.size
|
72
|
-
assert_in_delta 10.seconds.from_now.to_f, DirectWorker.jobs.last['at'], 0.01
|
73
|
-
end
|
74
28
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
assert_equal 1, Sidekiq::Extensions::DelayedMailer.jobs.size
|
79
|
-
end
|
29
|
+
it 'enables fake testing in a block' do
|
30
|
+
Sidekiq::Testing.disable!
|
31
|
+
assert_equal true, Sidekiq::Testing.disabled?
|
80
32
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
it 'stubs the delay call on models' do
|
87
|
-
assert_equal 0, Sidekiq::Extensions::DelayedClass.jobs.size
|
88
|
-
Something.delay.foo(Date.today)
|
89
|
-
assert_equal 1, Sidekiq::Extensions::DelayedClass.jobs.size
|
90
|
-
end
|
91
|
-
|
92
|
-
it 'stubs the enqueue call' do
|
93
|
-
assert_equal 0, EnqueuedWorker.jobs.size
|
94
|
-
assert Sidekiq::Client.enqueue(EnqueuedWorker, 1, 2)
|
95
|
-
assert_equal 1, EnqueuedWorker.jobs.size
|
96
|
-
end
|
97
|
-
|
98
|
-
it 'stubs the enqueue_to call' do
|
99
|
-
assert_equal 0, EnqueuedWorker.jobs.size
|
100
|
-
assert Sidekiq::Client.enqueue_to('someq', EnqueuedWorker, 1, 2)
|
101
|
-
assert_equal 1, EnqueuedWorker.jobs.size
|
102
|
-
end
|
103
|
-
|
104
|
-
it 'executes all stored jobs' do
|
105
|
-
assert StoredWorker.perform_async(false)
|
106
|
-
assert StoredWorker.perform_async(true)
|
33
|
+
Sidekiq::Testing.fake! do
|
34
|
+
assert_equal true, Sidekiq::Testing.enabled?
|
35
|
+
assert_equal true, Sidekiq::Testing.fake?
|
36
|
+
end
|
107
37
|
|
108
|
-
|
109
|
-
|
110
|
-
StoredWorker.drain
|
38
|
+
assert_equal false, Sidekiq::Testing.enabled?
|
39
|
+
assert_equal false, Sidekiq::Testing.fake?
|
111
40
|
end
|
112
|
-
assert_equal 0, StoredWorker.jobs.size
|
113
|
-
|
114
|
-
end
|
115
41
|
|
116
|
-
|
117
|
-
|
118
|
-
class_attribute :count
|
119
|
-
self.count = 0
|
120
|
-
def perform(worker_jid)
|
121
|
-
return unless worker_jid == self.jid
|
122
|
-
self.class.count += 1
|
123
|
-
end
|
124
|
-
end
|
42
|
+
it 'disables testing in a block' do
|
43
|
+
Sidekiq::Testing.fake!
|
125
44
|
|
126
|
-
|
127
|
-
|
128
|
-
jid = SpecificJidWorker.perform_async(nil)
|
129
|
-
if i % 2 == 0
|
130
|
-
SpecificJidWorker.jobs[-1]["args"] = ["wrong_jid"]
|
131
|
-
else
|
132
|
-
SpecificJidWorker.jobs[-1]["args"] = [jid]
|
45
|
+
Sidekiq::Testing.disable! do
|
46
|
+
assert_equal true, Sidekiq::Testing.disabled?
|
133
47
|
end
|
134
|
-
end
|
135
|
-
|
136
|
-
SpecificJidWorker.perform_one
|
137
|
-
assert_equal 0, SpecificJidWorker.count
|
138
|
-
|
139
|
-
SpecificJidWorker.perform_one
|
140
|
-
assert_equal 1, SpecificJidWorker.count
|
141
48
|
|
142
|
-
|
143
|
-
assert_equal 2, SpecificJidWorker.count
|
144
|
-
end
|
145
|
-
|
146
|
-
it 'round trip serializes the job arguments' do
|
147
|
-
assert StoredWorker.perform_async(:mike)
|
148
|
-
job = StoredWorker.jobs.first
|
149
|
-
assert_equal "mike", job['args'].first
|
150
|
-
StoredWorker.clear
|
151
|
-
end
|
152
|
-
|
153
|
-
it 'perform_one runs only one job' do
|
154
|
-
DirectWorker.perform_async(1, 2)
|
155
|
-
DirectWorker.perform_async(3, 4)
|
156
|
-
assert_equal 2, DirectWorker.jobs.size
|
157
|
-
|
158
|
-
DirectWorker.perform_one
|
159
|
-
assert_equal 1, DirectWorker.jobs.size
|
160
|
-
|
161
|
-
DirectWorker.clear
|
162
|
-
end
|
163
|
-
|
164
|
-
it 'perform_one raise error upon empty queue' do
|
165
|
-
DirectWorker.clear
|
166
|
-
assert_raises Sidekiq::EmptyQueueError do
|
167
|
-
DirectWorker.perform_one
|
49
|
+
assert_equal true, Sidekiq::Testing.enabled?
|
168
50
|
end
|
169
51
|
end
|
170
52
|
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
self.count = 0
|
175
|
-
def perform
|
176
|
-
self.class.count += 1
|
53
|
+
describe 'require/load sidekiq/testing/inline.rb' do
|
54
|
+
before do
|
55
|
+
require 'sidekiq/testing/inline.rb'
|
177
56
|
end
|
178
|
-
end
|
179
57
|
|
180
|
-
|
181
|
-
|
182
|
-
class_attribute :count
|
183
|
-
self.count = 0
|
184
|
-
def perform
|
185
|
-
self.class.count += 1
|
58
|
+
after do
|
59
|
+
Sidekiq::Testing.disable!
|
186
60
|
end
|
187
|
-
end
|
188
61
|
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
FirstWorker.perform_async
|
194
|
-
SecondWorker.perform_async
|
62
|
+
it 'enables inline testing' do
|
63
|
+
Sidekiq::Testing.inline!
|
64
|
+
assert_equal true, Sidekiq::Testing.enabled?
|
65
|
+
assert_equal true, Sidekiq::Testing.inline?
|
195
66
|
end
|
196
|
-
end
|
197
|
-
|
198
|
-
it 'clears jobs across all workers' do
|
199
|
-
Sidekiq::Worker.jobs.clear
|
200
|
-
FirstWorker.count = 0
|
201
|
-
SecondWorker.count = 0
|
202
|
-
|
203
|
-
assert_equal 0, FirstWorker.jobs.size
|
204
|
-
assert_equal 0, SecondWorker.jobs.size
|
205
|
-
|
206
|
-
FirstWorker.perform_async
|
207
|
-
SecondWorker.perform_async
|
208
67
|
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
Sidekiq::Worker.clear_all
|
213
|
-
|
214
|
-
assert_equal 0, FirstWorker.jobs.size
|
215
|
-
assert_equal 0, SecondWorker.jobs.size
|
216
|
-
|
217
|
-
assert_equal 0, FirstWorker.count
|
218
|
-
assert_equal 0, SecondWorker.count
|
219
|
-
end
|
68
|
+
it 'enables inline testing in a block' do
|
69
|
+
Sidekiq::Testing.disable!
|
70
|
+
assert_equal true, Sidekiq::Testing.disabled?
|
220
71
|
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
assert_equal 0, FirstWorker.jobs.size
|
227
|
-
assert_equal 0, SecondWorker.jobs.size
|
228
|
-
|
229
|
-
assert_equal 0, FirstWorker.count
|
230
|
-
assert_equal 0, SecondWorker.count
|
231
|
-
|
232
|
-
FirstWorker.perform_async
|
233
|
-
SecondWorker.perform_async
|
234
|
-
|
235
|
-
assert_equal 1, FirstWorker.jobs.size
|
236
|
-
assert_equal 1, SecondWorker.jobs.size
|
237
|
-
|
238
|
-
Sidekiq::Worker.drain_all
|
239
|
-
|
240
|
-
assert_equal 0, FirstWorker.jobs.size
|
241
|
-
assert_equal 0, SecondWorker.jobs.size
|
242
|
-
|
243
|
-
assert_equal 1, FirstWorker.count
|
244
|
-
assert_equal 1, SecondWorker.count
|
245
|
-
end
|
246
|
-
|
247
|
-
it 'drains jobs across all workers even when workers create new jobs' do
|
248
|
-
Sidekiq::Worker.jobs.clear
|
249
|
-
FirstWorker.count = 0
|
250
|
-
SecondWorker.count = 0
|
251
|
-
|
252
|
-
assert_equal 0, ThirdWorker.jobs.size
|
253
|
-
|
254
|
-
assert_equal 0, FirstWorker.count
|
255
|
-
assert_equal 0, SecondWorker.count
|
256
|
-
|
257
|
-
ThirdWorker.perform_async
|
258
|
-
|
259
|
-
assert_equal 1, ThirdWorker.jobs.size
|
260
|
-
|
261
|
-
Sidekiq::Worker.drain_all
|
262
|
-
|
263
|
-
assert_equal 0, ThirdWorker.jobs.size
|
72
|
+
Sidekiq::Testing.inline! do
|
73
|
+
assert_equal true, Sidekiq::Testing.enabled?
|
74
|
+
assert_equal true, Sidekiq::Testing.inline?
|
75
|
+
end
|
264
76
|
|
265
|
-
|
266
|
-
|
77
|
+
assert_equal false, Sidekiq::Testing.enabled?
|
78
|
+
assert_equal false, Sidekiq::Testing.inline?
|
79
|
+
end
|
267
80
|
end
|
268
81
|
end
|
269
82
|
end
|