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.

Files changed (54) hide show
  1. data/Changes.md +24 -0
  2. data/README.md +6 -3
  3. data/lib/sidekiq.rb +8 -0
  4. data/lib/sidekiq/api.rb +1 -1
  5. data/lib/sidekiq/cli.rb +1 -1
  6. data/lib/sidekiq/client.rb +24 -2
  7. data/lib/sidekiq/exception_handler.rb +2 -2
  8. data/lib/sidekiq/launcher.rb +38 -9
  9. data/lib/sidekiq/manager.rb +0 -3
  10. data/lib/sidekiq/testing.rb +65 -4
  11. data/lib/sidekiq/testing/inline.rb +27 -40
  12. data/lib/sidekiq/util.rb +1 -0
  13. data/lib/sidekiq/version.rb +1 -1
  14. data/lib/sidekiq/web.rb +16 -3
  15. data/lib/sidekiq/worker.rb +6 -8
  16. data/sidekiq.gemspec +4 -4
  17. data/test/helper.rb +8 -0
  18. data/test/test_api.rb +1 -1
  19. data/test/test_cli.rb +1 -1
  20. data/test/test_client.rb +23 -2
  21. data/test/test_exception_handler.rb +1 -1
  22. data/test/test_extensions.rb +1 -1
  23. data/test/test_fetch.rb +1 -1
  24. data/test/test_manager.rb +11 -18
  25. data/test/test_middleware.rb +1 -1
  26. data/test/test_processor.rb +1 -1
  27. data/test/test_redis_connection.rb +3 -3
  28. data/test/test_retry.rb +1 -1
  29. data/test/test_scheduled.rb +1 -1
  30. data/test/test_scheduling.rb +10 -2
  31. data/test/test_sidekiq.rb +2 -2
  32. data/test/test_testing.rb +43 -230
  33. data/test/test_testing_fake.rb +265 -0
  34. data/test/test_testing_inline.rb +4 -7
  35. data/test/test_util.rb +1 -1
  36. data/test/test_web.rb +1 -1
  37. data/web/assets/javascripts/dashboard.js +3 -1
  38. data/web/assets/stylesheets/application.css +84 -21
  39. data/web/assets/stylesheets/bootstrap.css +4 -15
  40. data/web/views/_nav.erb +12 -2
  41. data/web/views/_poll.erb +14 -0
  42. data/web/views/_status.erb +1 -1
  43. data/web/views/_summary.erb +23 -15
  44. data/web/views/_workers.erb +1 -1
  45. data/web/views/dashboard.erb +37 -34
  46. data/web/views/index.erb +2 -2
  47. data/web/views/layout.erb +3 -23
  48. data/web/views/queue.erb +4 -4
  49. data/web/views/queues.erb +1 -1
  50. data/web/views/retries.erb +10 -6
  51. data/web/views/retry.erb +1 -1
  52. data/web/views/scheduled.erb +2 -2
  53. data/web/views/scheduled_job_info.erb +1 -1
  54. metadata +13 -10
@@ -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.14.1'
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', '~> 5'
23
+ gem.add_development_dependency 'minitest', '~> 4.2'
24
24
  gem.add_development_dependency 'rake'
25
- gem.add_development_dependency 'actionmailer', '>= 3.0.0'
26
- gem.add_development_dependency 'activerecord', '>= 3.0.0'
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
@@ -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
@@ -1,6 +1,6 @@
1
1
  require 'helper'
2
2
 
3
- class TestApi < Minitest::Test
3
+ class TestApi < Sidekiq::Test
4
4
  describe "stats" do
5
5
  before do
6
6
  Sidekiq.redis {|c| c.flushdb }
@@ -11,7 +11,7 @@ def cli.valid?
11
11
  !@code
12
12
  end
13
13
 
14
- class TestCli < Minitest::Test
14
+ class TestCli < Sidekiq::Test
15
15
  describe 'with cli' do
16
16
 
17
17
  before do
@@ -2,7 +2,7 @@ require 'helper'
2
2
  require 'sidekiq/client'
3
3
  require 'sidekiq/worker'
4
4
 
5
- class TestClient < Minitest::Test
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::Worker::ClassMethods::DEFAULT_OPTIONS, MyWorker.get_sidekiq_options
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
@@ -17,7 +17,7 @@ class Component
17
17
  end
18
18
  end
19
19
 
20
- class TestExceptionHandler < Minitest::Test
20
+ class TestExceptionHandler < Sidekiq::Test
21
21
  describe "with mock logger" do
22
22
  before do
23
23
  @old_logger = Sidekiq.logger
@@ -8,7 +8,7 @@ require 'sidekiq/rails'
8
8
 
9
9
  Sidekiq.hook_rails!
10
10
 
11
- class TestExtensions < Minitest::Test
11
+ class TestExtensions < Sidekiq::Test
12
12
  describe 'sidekiq extensions' do
13
13
  before do
14
14
  Sidekiq.redis = REDIS
@@ -1,7 +1,7 @@
1
1
  require 'helper'
2
2
  require 'sidekiq/fetch'
3
3
 
4
- class TestFetcher < Minitest::Test
4
+ class TestFetcher < Sidekiq::Test
5
5
  describe 'fetcher' do
6
6
  before do
7
7
  Sidekiq.redis = { :namespace => 'fuzzy' }
@@ -1,29 +1,13 @@
1
1
  require 'helper'
2
2
  require 'sidekiq/manager'
3
3
 
4
- class TestManager < Minitest::Test
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
@@ -2,7 +2,7 @@ require 'helper'
2
2
  require 'sidekiq/middleware/chain'
3
3
  require 'sidekiq/processor'
4
4
 
5
- class TestMiddleware < Minitest::Test
5
+ class TestMiddleware < Sidekiq::Test
6
6
  describe 'middleware chain' do
7
7
  before do
8
8
  $errors = []
@@ -1,7 +1,7 @@
1
1
  require 'helper'
2
2
  require 'sidekiq/processor'
3
3
 
4
- class TestProcessor < Minitest::Test
4
+ class TestProcessor < Sidekiq::Test
5
5
  TestException = Class.new(StandardError)
6
6
  TEST_EXCEPTION = TestException.new("kerboom!")
7
7
 
@@ -1,7 +1,7 @@
1
1
  require 'helper'
2
2
  require 'sidekiq/redis_connection'
3
3
 
4
- class TestRedisConnection < Minitest::Test
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
 
@@ -2,7 +2,7 @@ require 'helper'
2
2
  require 'sidekiq/scheduled'
3
3
  require 'sidekiq/middleware/server/retry_jobs'
4
4
 
5
- class TestRetry < Minitest::Test
5
+ class TestRetry < Sidekiq::Test
6
6
  describe 'middleware' do
7
7
  before do
8
8
  @redis = Minitest::Mock.new
@@ -1,7 +1,7 @@
1
1
  require 'helper'
2
2
  require 'sidekiq/scheduled'
3
3
 
4
- class TestScheduled < Minitest::Test
4
+ class TestScheduled < Sidekiq::Test
5
5
  class ScheduledWorker
6
6
  include Sidekiq::Worker
7
7
  def perform(x)
@@ -1,18 +1,19 @@
1
1
  require 'helper'
2
2
  require 'sidekiq/scheduled'
3
3
 
4
- class TestScheduling < Minitest::Test
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)
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
  require 'helper'
3
3
 
4
- class TestSidekiq < Minitest::Test
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
@@ -9,261 +9,74 @@ require 'sidekiq/extensions/active_record'
9
9
 
10
10
  Sidekiq.hook_rails!
11
11
 
12
- class TestTesting < Minitest::Test
12
+ class TestTesting < Sidekiq::Test
13
13
  describe 'sidekiq testing' do
14
- class PerformError < RuntimeError; end
15
-
16
- class DirectWorker
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
- class FooModel < ActiveRecord::Base
44
- def bar(str)
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
- after do
56
- # Undo override
57
- (class << Sidekiq::Client; self; end).class_eval do
58
- remove_method :raw_push
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
- it 'stubs the delay call on mailers' do
76
- assert_equal 0, Sidekiq::Extensions::DelayedMailer.jobs.size
77
- FooMailer.delay.bar('hello!')
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
- class Something
82
- def self.foo(x)
83
- end
84
- end
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
- assert_equal 2, StoredWorker.jobs.size
109
- assert_raises PerformError do
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
- class SpecificJidWorker
117
- include Sidekiq::Worker
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
- it 'execute only jobs with assigned JID' do
127
- 4.times do |i|
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
- SpecificJidWorker.drain
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
- class FirstWorker
172
- include Sidekiq::Worker
173
- class_attribute :count
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
- class SecondWorker
181
- include Sidekiq::Worker
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
- class ThirdWorker
190
- include Sidekiq::Worker
191
- class_attribute :count
192
- def perform
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
- assert_equal 1, FirstWorker.jobs.size
210
- assert_equal 1, SecondWorker.jobs.size
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
- it 'drains jobs across all workers' do
222
- Sidekiq::Worker.jobs.clear
223
- FirstWorker.count = 0
224
- SecondWorker.count = 0
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
- assert_equal 1, FirstWorker.count
266
- assert_equal 1, SecondWorker.count
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