sidekiq 4.2.7 → 5.2.8

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 (108) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +61 -0
  3. data/.github/issue_template.md +8 -1
  4. data/.gitignore +3 -0
  5. data/.travis.yml +5 -6
  6. data/5.0-Upgrade.md +56 -0
  7. data/COMM-LICENSE +12 -10
  8. data/Changes.md +187 -0
  9. data/Ent-Changes.md +84 -3
  10. data/Gemfile +14 -20
  11. data/LICENSE +1 -1
  12. data/Pro-4.0-Upgrade.md +35 -0
  13. data/Pro-Changes.md +172 -3
  14. data/README.md +8 -6
  15. data/Rakefile +2 -5
  16. data/bin/sidekiqctl +13 -92
  17. data/bin/sidekiqload +16 -21
  18. data/lib/generators/sidekiq/templates/worker_spec.rb.erb +1 -1
  19. data/lib/generators/sidekiq/templates/worker_test.rb.erb +1 -1
  20. data/lib/sidekiq/api.rb +163 -67
  21. data/lib/sidekiq/cli.rb +121 -78
  22. data/lib/sidekiq/client.rb +25 -18
  23. data/lib/sidekiq/core_ext.rb +1 -119
  24. data/lib/sidekiq/ctl.rb +221 -0
  25. data/lib/sidekiq/delay.rb +42 -0
  26. data/lib/sidekiq/exception_handler.rb +2 -4
  27. data/lib/sidekiq/extensions/generic_proxy.rb +7 -1
  28. data/lib/sidekiq/fetch.rb +1 -1
  29. data/lib/sidekiq/job_logger.rb +25 -0
  30. data/lib/sidekiq/job_retry.rb +262 -0
  31. data/lib/sidekiq/launcher.rb +19 -19
  32. data/lib/sidekiq/logging.rb +18 -2
  33. data/lib/sidekiq/manager.rb +6 -7
  34. data/lib/sidekiq/middleware/server/active_record.rb +10 -0
  35. data/lib/sidekiq/processor.rb +126 -39
  36. data/lib/sidekiq/rails.rb +16 -77
  37. data/lib/sidekiq/redis_connection.rb +50 -5
  38. data/lib/sidekiq/scheduled.rb +35 -8
  39. data/lib/sidekiq/testing.rb +21 -6
  40. data/lib/sidekiq/util.rb +6 -2
  41. data/lib/sidekiq/version.rb +1 -1
  42. data/lib/sidekiq/web/action.rb +2 -6
  43. data/lib/sidekiq/web/application.rb +34 -17
  44. data/lib/sidekiq/web/helpers.rb +72 -23
  45. data/lib/sidekiq/web/router.rb +10 -10
  46. data/lib/sidekiq/web.rb +4 -4
  47. data/lib/sidekiq/worker.rb +118 -19
  48. data/lib/sidekiq.rb +27 -27
  49. data/sidekiq.gemspec +8 -13
  50. data/web/assets/javascripts/application.js +0 -0
  51. data/web/assets/javascripts/dashboard.js +33 -18
  52. data/web/assets/stylesheets/application-rtl.css +246 -0
  53. data/web/assets/stylesheets/application.css +371 -6
  54. data/web/assets/stylesheets/bootstrap-rtl.min.css +9 -0
  55. data/web/assets/stylesheets/bootstrap.css +2 -2
  56. data/web/locales/ar.yml +81 -0
  57. data/web/locales/en.yml +2 -0
  58. data/web/locales/es.yml +4 -3
  59. data/web/locales/fa.yml +80 -0
  60. data/web/locales/he.yml +79 -0
  61. data/web/locales/ja.yml +5 -3
  62. data/web/locales/ur.yml +80 -0
  63. data/web/views/_footer.erb +5 -2
  64. data/web/views/_job_info.erb +1 -1
  65. data/web/views/_nav.erb +4 -18
  66. data/web/views/_paging.erb +1 -1
  67. data/web/views/busy.erb +9 -5
  68. data/web/views/dashboard.erb +3 -3
  69. data/web/views/layout.erb +11 -2
  70. data/web/views/morgue.erb +6 -4
  71. data/web/views/queue.erb +11 -10
  72. data/web/views/queues.erb +4 -2
  73. data/web/views/retries.erb +9 -5
  74. data/web/views/retry.erb +1 -1
  75. data/web/views/scheduled.erb +2 -2
  76. metadata +33 -151
  77. data/lib/sidekiq/middleware/server/logging.rb +0 -40
  78. data/lib/sidekiq/middleware/server/retry_jobs.rb +0 -205
  79. data/test/config.yml +0 -9
  80. data/test/env_based_config.yml +0 -11
  81. data/test/fake_env.rb +0 -1
  82. data/test/fixtures/en.yml +0 -2
  83. data/test/helper.rb +0 -75
  84. data/test/test_actors.rb +0 -138
  85. data/test/test_api.rb +0 -528
  86. data/test/test_cli.rb +0 -418
  87. data/test/test_client.rb +0 -266
  88. data/test/test_exception_handler.rb +0 -56
  89. data/test/test_extensions.rb +0 -129
  90. data/test/test_fetch.rb +0 -50
  91. data/test/test_launcher.rb +0 -92
  92. data/test/test_logging.rb +0 -35
  93. data/test/test_manager.rb +0 -50
  94. data/test/test_middleware.rb +0 -158
  95. data/test/test_processor.rb +0 -249
  96. data/test/test_rails.rb +0 -22
  97. data/test/test_redis_connection.rb +0 -132
  98. data/test/test_retry.rb +0 -326
  99. data/test/test_retry_exhausted.rb +0 -149
  100. data/test/test_scheduled.rb +0 -115
  101. data/test/test_scheduling.rb +0 -58
  102. data/test/test_sidekiq.rb +0 -107
  103. data/test/test_testing.rb +0 -143
  104. data/test/test_testing_fake.rb +0 -359
  105. data/test/test_testing_inline.rb +0 -94
  106. data/test/test_util.rb +0 -13
  107. data/test/test_web.rb +0 -679
  108. data/test/test_web_helpers.rb +0 -54
data/test/test_sidekiq.rb DELETED
@@ -1,107 +0,0 @@
1
- # encoding: utf-8
2
- # frozen_string_literal: true
3
- require_relative 'helper'
4
-
5
- class TestSidekiq < Sidekiq::Test
6
- describe 'json processing' do
7
- it 'handles json' do
8
- assert_equal({"foo" => "bar"}, Sidekiq.load_json("{\"foo\":\"bar\"}"))
9
- assert_equal "{\"foo\":\"bar\"}", Sidekiq.dump_json({ "foo" => "bar" })
10
- end
11
- end
12
-
13
- describe "redis connection" do
14
- it "returns error without creating a connection if block is not given" do
15
- assert_raises(ArgumentError) do
16
- Sidekiq.redis
17
- end
18
- end
19
- end
20
-
21
- describe "❨╯°□°❩╯︵┻━┻" do
22
- before { $stdout = StringIO.new }
23
- after { $stdout = STDOUT }
24
-
25
- it "allows angry developers to express their emotional constitution and remedies it" do
26
- Sidekiq.❨╯°□°❩╯︵┻━┻
27
- assert_equal "Calm down, yo.\n", $stdout.string
28
- end
29
- end
30
-
31
- describe 'lifecycle events' do
32
- it 'handles invalid input' do
33
- Sidekiq.options[:lifecycle_events][:startup].clear
34
-
35
- e = assert_raises ArgumentError do
36
- Sidekiq.on(:startp)
37
- end
38
- assert_match(/Invalid event name/, e.message)
39
- e = assert_raises ArgumentError do
40
- Sidekiq.on('startup')
41
- end
42
- assert_match(/Symbols only/, e.message)
43
- Sidekiq.on(:startup) do
44
- 1 + 1
45
- end
46
-
47
- assert_equal 2, Sidekiq.options[:lifecycle_events][:startup].first.call
48
- end
49
- end
50
-
51
- describe 'default_worker_options' do
52
- it 'stringifies keys' do
53
- @old_options = Sidekiq.default_worker_options
54
- begin
55
- Sidekiq.default_worker_options = { queue: 'cat'}
56
- assert_equal 'cat', Sidekiq.default_worker_options['queue']
57
- ensure
58
- Sidekiq.default_worker_options = @old_options
59
- end
60
- end
61
- end
62
-
63
- describe 'error handling' do
64
- it 'deals with user-specified error handlers which raise errors' do
65
- output = capture_logging do
66
- begin
67
- Sidekiq.error_handlers << proc {|x, hash|
68
- raise 'boom'
69
- }
70
- cli = Sidekiq::CLI.new
71
- cli.handle_exception(RuntimeError.new("hello"))
72
- ensure
73
- Sidekiq.error_handlers.pop
74
- end
75
- end
76
- assert_includes output, "boom"
77
- assert_includes output, "ERROR"
78
- end
79
- end
80
-
81
- describe 'redis connection' do
82
- it 'does not continually retry' do
83
- assert_raises Redis::CommandError do
84
- Sidekiq.redis do |c|
85
- raise Redis::CommandError, "READONLY You can't write against a read only slave."
86
- end
87
- end
88
- end
89
-
90
- it 'reconnects if connection is flagged as readonly' do
91
- counts = []
92
- Sidekiq.redis do |c|
93
- counts << c.info['total_connections_received'].to_i
94
- raise Redis::CommandError, "READONLY You can't write against a read only slave." if counts.size == 1
95
- end
96
- assert_equal 2, counts.size
97
- assert_equal counts[0] + 1, counts[1]
98
- end
99
- end
100
-
101
- describe 'redis info' do
102
- it 'calls the INFO command which returns at least redis_version' do
103
- output = Sidekiq.redis_info
104
- assert_includes output.keys, "redis_version"
105
- end
106
- end
107
- end
data/test/test_testing.rb DELETED
@@ -1,143 +0,0 @@
1
- # frozen_string_literal: true
2
- require_relative 'helper'
3
-
4
- require 'active_record'
5
- require 'action_mailer'
6
- require 'sidekiq/rails'
7
- require 'sidekiq/extensions/action_mailer'
8
- require 'sidekiq/extensions/active_record'
9
-
10
- Sidekiq.hook_rails!
11
-
12
- class TestTesting < Sidekiq::Test
13
- describe 'sidekiq testing' do
14
- describe 'require/load sidekiq/testing.rb' do
15
- before do
16
- require 'sidekiq/testing'
17
- end
18
-
19
- after do
20
- Sidekiq::Testing.disable!
21
- end
22
-
23
- it 'enables fake testing' do
24
- Sidekiq::Testing.fake!
25
- assert Sidekiq::Testing.enabled?
26
- assert Sidekiq::Testing.fake?
27
- refute Sidekiq::Testing.inline?
28
- end
29
-
30
- it 'enables fake testing in a block' do
31
- Sidekiq::Testing.disable!
32
- assert Sidekiq::Testing.disabled?
33
- refute Sidekiq::Testing.fake?
34
-
35
- Sidekiq::Testing.fake! do
36
- assert Sidekiq::Testing.enabled?
37
- assert Sidekiq::Testing.fake?
38
- refute Sidekiq::Testing.inline?
39
- end
40
-
41
- refute Sidekiq::Testing.enabled?
42
- refute Sidekiq::Testing.fake?
43
- end
44
-
45
- it 'disables testing in a block' do
46
- Sidekiq::Testing.fake!
47
- assert Sidekiq::Testing.fake?
48
-
49
- Sidekiq::Testing.disable! do
50
- refute Sidekiq::Testing.fake?
51
- assert Sidekiq::Testing.disabled?
52
- end
53
-
54
- assert Sidekiq::Testing.fake?
55
- assert Sidekiq::Testing.enabled?
56
- end
57
- end
58
-
59
- describe 'require/load sidekiq/testing/inline.rb' do
60
- before do
61
- require 'sidekiq/testing/inline'
62
- end
63
-
64
- after do
65
- Sidekiq::Testing.disable!
66
- end
67
-
68
- it 'enables inline testing' do
69
- Sidekiq::Testing.inline!
70
- assert Sidekiq::Testing.enabled?
71
- assert Sidekiq::Testing.inline?
72
- refute Sidekiq::Testing.fake?
73
- end
74
-
75
- it 'enables inline testing in a block' do
76
- Sidekiq::Testing.disable!
77
- assert Sidekiq::Testing.disabled?
78
- refute Sidekiq::Testing.fake?
79
-
80
- Sidekiq::Testing.inline! do
81
- assert Sidekiq::Testing.enabled?
82
- assert Sidekiq::Testing.inline?
83
- end
84
-
85
- refute Sidekiq::Testing.enabled?
86
- refute Sidekiq::Testing.inline?
87
- refute Sidekiq::Testing.fake?
88
- end
89
- end
90
- end
91
-
92
- describe 'with middleware' do
93
- before do
94
- require 'sidekiq/testing'
95
- end
96
-
97
- after do
98
- Sidekiq::Testing.disable!
99
- end
100
-
101
- class AttributeWorker
102
- include Sidekiq::Worker
103
- class_attribute :count
104
- self.count = 0
105
- attr_accessor :foo
106
-
107
- def perform
108
- self.class.count += 1 if foo == :bar
109
- end
110
- end
111
-
112
- class AttributeMiddleware
113
- def call(worker, msg, queue)
114
- worker.foo = :bar if worker.respond_to?(:foo=)
115
- yield
116
- end
117
- end
118
-
119
- it 'wraps the inlined worker with middleware' do
120
- Sidekiq::Testing.server_middleware do |chain|
121
- chain.add AttributeMiddleware
122
- end
123
-
124
- begin
125
- Sidekiq::Testing.fake! do
126
- AttributeWorker.perform_async
127
- assert_equal 0, AttributeWorker.count
128
- end
129
-
130
- AttributeWorker.perform_one
131
- assert_equal 1, AttributeWorker.count
132
-
133
- Sidekiq::Testing.inline! do
134
- AttributeWorker.perform_async
135
- assert_equal 2, AttributeWorker.count
136
- end
137
- ensure
138
- Sidekiq::Testing.server_middleware.clear
139
- end
140
- end
141
- end
142
-
143
- end
@@ -1,359 +0,0 @@
1
- # frozen_string_literal: true
2
- require_relative 'helper'
3
-
4
- require 'active_record'
5
- require 'action_mailer'
6
- require 'sidekiq/rails'
7
- require 'sidekiq/extensions/action_mailer'
8
- require 'sidekiq/extensions/active_record'
9
-
10
- Sidekiq.hook_rails!
11
-
12
- class TestTesting < Sidekiq::Test
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
40
- end
41
- end
42
-
43
- class FooModel < ActiveRecord::Base
44
- def bar(str)
45
- str
46
- end
47
- end
48
-
49
- before do
50
- require 'sidekiq/testing'
51
- Sidekiq::Testing.fake!
52
- EnqueuedWorker.jobs.clear
53
- DirectWorker.jobs.clear
54
- end
55
-
56
- after do
57
- Sidekiq::Testing.disable!
58
- Sidekiq::Queues.clear_all
59
- end
60
-
61
- it 'stubs the async call' do
62
- assert_equal 0, DirectWorker.jobs.size
63
- assert DirectWorker.perform_async(1, 2)
64
- assert_in_delta Time.now.to_f, DirectWorker.jobs.last['enqueued_at'], 0.01
65
- assert_equal 1, DirectWorker.jobs.size
66
- assert DirectWorker.perform_in(10, 1, 2)
67
- refute DirectWorker.jobs.last['enqueued_at']
68
- assert_equal 2, DirectWorker.jobs.size
69
- assert DirectWorker.perform_at(10, 1, 2)
70
- assert_equal 3, DirectWorker.jobs.size
71
- assert_in_delta 10.seconds.from_now.to_f, DirectWorker.jobs.last['at'], 0.01
72
- end
73
-
74
- it 'stubs the delay call on mailers' do
75
- assert_equal 0, Sidekiq::Extensions::DelayedMailer.jobs.size
76
- FooMailer.delay.bar('hello!')
77
- assert_equal 1, Sidekiq::Extensions::DelayedMailer.jobs.size
78
- end
79
-
80
- class Something
81
- def self.foo(x)
82
- end
83
- end
84
-
85
- it 'stubs the delay call on models' do
86
- assert_equal 0, Sidekiq::Extensions::DelayedClass.jobs.size
87
- Something.delay.foo(Date.today)
88
- assert_equal 1, Sidekiq::Extensions::DelayedClass.jobs.size
89
- end
90
-
91
- it 'stubs the enqueue call' do
92
- assert_equal 0, EnqueuedWorker.jobs.size
93
- assert Sidekiq::Client.enqueue(EnqueuedWorker, 1, 2)
94
- assert_equal 1, EnqueuedWorker.jobs.size
95
- end
96
-
97
- it 'stubs the enqueue_to call' do
98
- assert_equal 0, EnqueuedWorker.jobs.size
99
- assert Sidekiq::Client.enqueue_to('someq', EnqueuedWorker, 1, 2)
100
- assert_equal 1, Sidekiq::Queues['someq'].size
101
- end
102
-
103
- it 'executes all stored jobs' do
104
- assert StoredWorker.perform_async(false)
105
- assert StoredWorker.perform_async(true)
106
-
107
- assert_equal 2, StoredWorker.jobs.size
108
- assert_raises PerformError do
109
- StoredWorker.drain
110
- end
111
- assert_equal 0, StoredWorker.jobs.size
112
- end
113
-
114
- class SpecificJidWorker
115
- include Sidekiq::Worker
116
- class_attribute :count
117
- self.count = 0
118
- def perform(worker_jid)
119
- return unless worker_jid == self.jid
120
- self.class.count += 1
121
- end
122
- end
123
-
124
- it 'execute only jobs with assigned JID' do
125
- 4.times do |i|
126
- jid = SpecificJidWorker.perform_async(nil)
127
- if i % 2 == 0
128
- SpecificJidWorker.jobs[-1]["args"] = ["wrong_jid"]
129
- else
130
- SpecificJidWorker.jobs[-1]["args"] = [jid]
131
- end
132
- end
133
-
134
- SpecificJidWorker.perform_one
135
- assert_equal 0, SpecificJidWorker.count
136
-
137
- SpecificJidWorker.perform_one
138
- assert_equal 1, SpecificJidWorker.count
139
-
140
- SpecificJidWorker.drain
141
- assert_equal 2, SpecificJidWorker.count
142
- end
143
-
144
- it 'round trip serializes the job arguments' do
145
- assert StoredWorker.perform_async(:mike)
146
- job = StoredWorker.jobs.first
147
- assert_equal "mike", job['args'].first
148
- StoredWorker.clear
149
- end
150
-
151
- it 'perform_one runs only one job' do
152
- DirectWorker.perform_async(1, 2)
153
- DirectWorker.perform_async(3, 4)
154
- assert_equal 2, DirectWorker.jobs.size
155
-
156
- DirectWorker.perform_one
157
- assert_equal 1, DirectWorker.jobs.size
158
-
159
- DirectWorker.clear
160
- end
161
-
162
- it 'perform_one raise error upon empty queue' do
163
- DirectWorker.clear
164
- assert_raises Sidekiq::EmptyQueueError do
165
- DirectWorker.perform_one
166
- end
167
- end
168
-
169
- class FirstWorker
170
- include Sidekiq::Worker
171
- class_attribute :count
172
- self.count = 0
173
- def perform
174
- self.class.count += 1
175
- end
176
- end
177
-
178
- class SecondWorker
179
- include Sidekiq::Worker
180
- class_attribute :count
181
- self.count = 0
182
- def perform
183
- self.class.count += 1
184
- end
185
- end
186
-
187
- class ThirdWorker
188
- include Sidekiq::Worker
189
- class_attribute :count
190
- def perform
191
- FirstWorker.perform_async
192
- SecondWorker.perform_async
193
- end
194
- end
195
-
196
- it 'clears jobs across all workers' do
197
- Sidekiq::Worker.jobs.clear
198
- FirstWorker.count = 0
199
- SecondWorker.count = 0
200
-
201
- assert_equal 0, FirstWorker.jobs.size
202
- assert_equal 0, SecondWorker.jobs.size
203
-
204
- FirstWorker.perform_async
205
- SecondWorker.perform_async
206
-
207
- assert_equal 1, FirstWorker.jobs.size
208
- assert_equal 1, SecondWorker.jobs.size
209
-
210
- Sidekiq::Worker.clear_all
211
-
212
- assert_equal 0, FirstWorker.jobs.size
213
- assert_equal 0, SecondWorker.jobs.size
214
-
215
- assert_equal 0, FirstWorker.count
216
- assert_equal 0, SecondWorker.count
217
- end
218
-
219
- it 'drains jobs across all workers' do
220
- Sidekiq::Worker.jobs.clear
221
- FirstWorker.count = 0
222
- SecondWorker.count = 0
223
-
224
- assert_equal 0, FirstWorker.jobs.size
225
- assert_equal 0, SecondWorker.jobs.size
226
-
227
- assert_equal 0, FirstWorker.count
228
- assert_equal 0, SecondWorker.count
229
-
230
- FirstWorker.perform_async
231
- SecondWorker.perform_async
232
-
233
- assert_equal 1, FirstWorker.jobs.size
234
- assert_equal 1, SecondWorker.jobs.size
235
-
236
- Sidekiq::Worker.drain_all
237
-
238
- assert_equal 0, FirstWorker.jobs.size
239
- assert_equal 0, SecondWorker.jobs.size
240
-
241
- assert_equal 1, FirstWorker.count
242
- assert_equal 1, SecondWorker.count
243
- end
244
-
245
- it 'drains jobs across all workers even when workers create new jobs' do
246
- Sidekiq::Worker.jobs.clear
247
- FirstWorker.count = 0
248
- SecondWorker.count = 0
249
-
250
- assert_equal 0, ThirdWorker.jobs.size
251
-
252
- assert_equal 0, FirstWorker.count
253
- assert_equal 0, SecondWorker.count
254
-
255
- ThirdWorker.perform_async
256
-
257
- assert_equal 1, ThirdWorker.jobs.size
258
-
259
- Sidekiq::Worker.drain_all
260
-
261
- assert_equal 0, ThirdWorker.jobs.size
262
-
263
- assert_equal 1, FirstWorker.count
264
- assert_equal 1, SecondWorker.count
265
- end
266
-
267
- it 'drains jobs of workers with symbolized queue names' do
268
- Sidekiq::Worker.jobs.clear
269
-
270
- AltQueueWorker.perform_async(5,6)
271
- assert_equal 1, AltQueueWorker.jobs.size
272
-
273
- Sidekiq::Worker.drain_all
274
- assert_equal 0, AltQueueWorker.jobs.size
275
- end
276
-
277
- it 'can execute a job' do
278
- DirectWorker.execute_job(DirectWorker.new, [2, 3])
279
- end
280
- end
281
-
282
- describe 'queue testing' do
283
- before do
284
- require 'sidekiq/testing'
285
- Sidekiq::Testing.fake!
286
- end
287
-
288
- after do
289
- Sidekiq::Testing.disable!
290
- Sidekiq::Queues.clear_all
291
- end
292
-
293
- class QueueWorker
294
- include Sidekiq::Worker
295
- def perform(a, b)
296
- a + b
297
- end
298
- end
299
-
300
- class AltQueueWorker
301
- include Sidekiq::Worker
302
- sidekiq_options queue: :alt
303
- def perform(a, b)
304
- a + b
305
- end
306
- end
307
-
308
- it 'finds enqueued jobs' do
309
- assert_equal 0, Sidekiq::Queues["default"].size
310
-
311
- QueueWorker.perform_async(1, 2)
312
- QueueWorker.perform_async(1, 2)
313
- AltQueueWorker.perform_async(1, 2)
314
-
315
- assert_equal 2, Sidekiq::Queues["default"].size
316
- assert_equal [1, 2], Sidekiq::Queues["default"].first["args"]
317
-
318
- assert_equal 1, Sidekiq::Queues["alt"].size
319
- end
320
-
321
- it 'clears out all queues' do
322
- assert_equal 0, Sidekiq::Queues["default"].size
323
-
324
- QueueWorker.perform_async(1, 2)
325
- QueueWorker.perform_async(1, 2)
326
- AltQueueWorker.perform_async(1, 2)
327
-
328
- Sidekiq::Queues.clear_all
329
-
330
- assert_equal 0, Sidekiq::Queues["default"].size
331
- assert_equal 0, QueueWorker.jobs.size
332
- assert_equal 0, Sidekiq::Queues["alt"].size
333
- assert_equal 0, AltQueueWorker.jobs.size
334
- end
335
-
336
- it 'finds jobs enqueued by client' do
337
- Sidekiq::Client.push(
338
- 'class' => 'NonExistentWorker',
339
- 'queue' => 'missing',
340
- 'args' => [1]
341
- )
342
-
343
- assert_equal 1, Sidekiq::Queues["missing"].size
344
- end
345
-
346
- it 'respects underlying array changes' do
347
- # Rspec expect change() syntax saves a reference to
348
- # an underlying array. When the array containing jobs is
349
- # derived, Rspec test using `change(QueueWorker.jobs, :size).by(1)`
350
- # won't pass. This attempts to recreate that scenario
351
- # by saving a reference to the jobs array and ensuring
352
- # it changes properly on enqueueing
353
- jobs = QueueWorker.jobs
354
- assert_equal 0, jobs.size
355
- QueueWorker.perform_async(1, 2)
356
- assert_equal 1, jobs.size
357
- end
358
- end
359
- end
@@ -1,94 +0,0 @@
1
- # frozen_string_literal: true
2
- require_relative 'helper'
3
-
4
- require 'active_record'
5
- require 'action_mailer'
6
- require 'sidekiq/rails'
7
- require 'sidekiq/extensions/action_mailer'
8
- require 'sidekiq/extensions/active_record'
9
-
10
- Sidekiq.hook_rails!
11
-
12
- class TestInline < Sidekiq::Test
13
- describe 'sidekiq inline testing' do
14
- class InlineError < RuntimeError; end
15
- class ParameterIsNotString < RuntimeError; end
16
-
17
- class InlineWorker
18
- include Sidekiq::Worker
19
- def perform(pass)
20
- raise ArgumentError, "no jid" unless jid
21
- raise InlineError unless pass
22
- end
23
- end
24
-
25
- class InlineWorkerWithTimeParam
26
- include Sidekiq::Worker
27
- def perform(time)
28
- raise ParameterIsNotString unless time.is_a?(String) || time.is_a?(Numeric)
29
- end
30
- end
31
-
32
- class InlineFooMailer < ActionMailer::Base
33
- def bar(str)
34
- raise InlineError
35
- end
36
- end
37
-
38
- class InlineFooModel < ActiveRecord::Base
39
- def self.bar(str)
40
- raise InlineError
41
- end
42
- end
43
-
44
- before do
45
- require 'sidekiq/testing/inline'
46
- Sidekiq::Testing.inline!
47
- end
48
-
49
- after do
50
- Sidekiq::Testing.disable!
51
- end
52
-
53
- it 'stubs the async call when in testing mode' do
54
- assert InlineWorker.perform_async(true)
55
-
56
- assert_raises InlineError do
57
- InlineWorker.perform_async(false)
58
- end
59
- end
60
-
61
- it 'stubs the delay call on mailers' do
62
- assert_raises InlineError do
63
- InlineFooMailer.delay.bar('three')
64
- end
65
- end
66
-
67
- it 'stubs the delay call on models' do
68
- assert_raises InlineError do
69
- InlineFooModel.delay.bar('three')
70
- end
71
- end
72
-
73
- it 'stubs the enqueue call when in testing mode' do
74
- assert Sidekiq::Client.enqueue(InlineWorker, true)
75
-
76
- assert_raises InlineError do
77
- Sidekiq::Client.enqueue(InlineWorker, false)
78
- end
79
- end
80
-
81
- it 'stubs the push_bulk call when in testing mode' do
82
- assert Sidekiq::Client.push_bulk({'class' => InlineWorker, 'args' => [[true], [true]]})
83
-
84
- assert_raises InlineError do
85
- Sidekiq::Client.push_bulk({'class' => InlineWorker, 'args' => [[true], [false]]})
86
- end
87
- end
88
-
89
- it 'should relay parameters through json' do
90
- assert Sidekiq::Client.enqueue(InlineWorkerWithTimeParam, Time.now.to_f)
91
- end
92
-
93
- end
94
- end
data/test/test_util.rb DELETED
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
- require_relative 'helper'
3
-
4
- class TestUtil < Sidekiq::Test
5
-
6
- class Helpers
7
- include Sidekiq::Util
8
- end
9
-
10
- def test_nothing_atm
11
- assert true
12
- end
13
- end