sidekiq 4.1.4 → 4.2.10

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 (134) hide show
  1. checksums.yaml +4 -4
  2. data/.github/issue_template.md +6 -1
  3. data/.travis.yml +9 -9
  4. data/Changes.md +100 -0
  5. data/Ent-Changes.md +51 -1
  6. data/Gemfile +6 -6
  7. data/Pro-Changes.md +69 -0
  8. data/README.md +4 -3
  9. data/Rakefile +5 -2
  10. data/bin/sidekiqload +11 -24
  11. data/lib/generators/sidekiq/templates/worker_test.rb.erb +1 -1
  12. data/lib/sidekiq/api.rb +21 -13
  13. data/lib/sidekiq/cli.rb +19 -5
  14. data/lib/sidekiq/core_ext.rb +13 -0
  15. data/lib/sidekiq/launcher.rb +36 -23
  16. data/lib/sidekiq/manager.rb +3 -2
  17. data/lib/sidekiq/middleware/server/logging.rb +8 -17
  18. data/lib/sidekiq/middleware/server/retry_jobs.rb +1 -1
  19. data/lib/sidekiq/processor.rb +31 -16
  20. data/lib/sidekiq/rails.rb +84 -0
  21. data/lib/sidekiq/redis_connection.rb +8 -1
  22. data/lib/sidekiq/scheduled.rb +1 -0
  23. data/lib/sidekiq/testing.rb +10 -2
  24. data/lib/sidekiq/util.rb +2 -1
  25. data/lib/sidekiq/version.rb +1 -1
  26. data/lib/sidekiq/web/action.rb +93 -0
  27. data/lib/sidekiq/web/application.rb +336 -0
  28. data/lib/sidekiq/{web_helpers.rb → web/helpers.rb} +39 -16
  29. data/lib/sidekiq/web/router.rb +100 -0
  30. data/lib/sidekiq/web.rb +119 -184
  31. data/lib/sidekiq/worker.rb +3 -3
  32. data/lib/sidekiq.rb +7 -7
  33. data/sidekiq.gemspec +11 -5
  34. data/web/assets/images/{status-sd8051fd480.png → status.png} +0 -0
  35. data/web/assets/javascripts/application.js +24 -20
  36. data/web/assets/javascripts/dashboard.js +1 -1
  37. data/web/assets/stylesheets/application.css +26 -1
  38. data/web/assets/stylesheets/bootstrap.css +4 -8
  39. data/web/locales/de.yml +1 -1
  40. data/web/locales/fa.yml +79 -0
  41. data/web/views/_footer.erb +1 -1
  42. data/web/views/_job_info.erb +1 -1
  43. data/web/views/busy.erb +2 -2
  44. data/web/views/dashboard.erb +4 -4
  45. data/web/views/dead.erb +1 -1
  46. data/web/views/layout.erb +3 -4
  47. data/web/views/morgue.erb +14 -10
  48. data/web/views/queue.erb +6 -6
  49. data/web/views/queues.erb +3 -3
  50. data/web/views/retries.erb +12 -10
  51. data/web/views/retry.erb +2 -2
  52. data/web/views/scheduled.erb +2 -2
  53. data/web/views/scheduled_job_info.erb +1 -1
  54. metadata +86 -129
  55. data/test/config.yml +0 -9
  56. data/test/env_based_config.yml +0 -11
  57. data/test/fake_env.rb +0 -1
  58. data/test/fixtures/en.yml +0 -2
  59. data/test/helper.rb +0 -75
  60. data/test/test_actors.rb +0 -138
  61. data/test/test_api.rb +0 -528
  62. data/test/test_cli.rb +0 -406
  63. data/test/test_client.rb +0 -266
  64. data/test/test_exception_handler.rb +0 -56
  65. data/test/test_extensions.rb +0 -127
  66. data/test/test_fetch.rb +0 -50
  67. data/test/test_launcher.rb +0 -85
  68. data/test/test_logging.rb +0 -35
  69. data/test/test_manager.rb +0 -50
  70. data/test/test_middleware.rb +0 -158
  71. data/test/test_processor.rb +0 -201
  72. data/test/test_rails.rb +0 -22
  73. data/test/test_redis_connection.rb +0 -132
  74. data/test/test_retry.rb +0 -326
  75. data/test/test_retry_exhausted.rb +0 -149
  76. data/test/test_scheduled.rb +0 -115
  77. data/test/test_scheduling.rb +0 -50
  78. data/test/test_sidekiq.rb +0 -107
  79. data/test/test_testing.rb +0 -143
  80. data/test/test_testing_fake.rb +0 -357
  81. data/test/test_testing_inline.rb +0 -94
  82. data/test/test_util.rb +0 -13
  83. data/test/test_web.rb +0 -614
  84. data/test/test_web_helpers.rb +0 -54
  85. data/web/assets/images/bootstrap/glyphicons-halflings-white.png +0 -0
  86. data/web/assets/images/bootstrap/glyphicons-halflings.png +0 -0
  87. data/web/assets/images/status/active.png +0 -0
  88. data/web/assets/images/status/idle.png +0 -0
  89. data/web/assets/javascripts/locales/README.md +0 -27
  90. data/web/assets/javascripts/locales/jquery.timeago.ar.js +0 -96
  91. data/web/assets/javascripts/locales/jquery.timeago.bg.js +0 -18
  92. data/web/assets/javascripts/locales/jquery.timeago.bs.js +0 -49
  93. data/web/assets/javascripts/locales/jquery.timeago.ca.js +0 -18
  94. data/web/assets/javascripts/locales/jquery.timeago.cs.js +0 -18
  95. data/web/assets/javascripts/locales/jquery.timeago.cy.js +0 -20
  96. data/web/assets/javascripts/locales/jquery.timeago.da.js +0 -18
  97. data/web/assets/javascripts/locales/jquery.timeago.de.js +0 -18
  98. data/web/assets/javascripts/locales/jquery.timeago.el.js +0 -18
  99. data/web/assets/javascripts/locales/jquery.timeago.en-short.js +0 -20
  100. data/web/assets/javascripts/locales/jquery.timeago.en.js +0 -20
  101. data/web/assets/javascripts/locales/jquery.timeago.es.js +0 -18
  102. data/web/assets/javascripts/locales/jquery.timeago.et.js +0 -18
  103. data/web/assets/javascripts/locales/jquery.timeago.fa.js +0 -22
  104. data/web/assets/javascripts/locales/jquery.timeago.fi.js +0 -28
  105. data/web/assets/javascripts/locales/jquery.timeago.fr-short.js +0 -16
  106. data/web/assets/javascripts/locales/jquery.timeago.fr.js +0 -17
  107. data/web/assets/javascripts/locales/jquery.timeago.he.js +0 -18
  108. data/web/assets/javascripts/locales/jquery.timeago.hr.js +0 -49
  109. data/web/assets/javascripts/locales/jquery.timeago.hu.js +0 -18
  110. data/web/assets/javascripts/locales/jquery.timeago.hy.js +0 -18
  111. data/web/assets/javascripts/locales/jquery.timeago.id.js +0 -18
  112. data/web/assets/javascripts/locales/jquery.timeago.it.js +0 -16
  113. data/web/assets/javascripts/locales/jquery.timeago.ja.js +0 -19
  114. data/web/assets/javascripts/locales/jquery.timeago.ko.js +0 -17
  115. data/web/assets/javascripts/locales/jquery.timeago.lt.js +0 -20
  116. data/web/assets/javascripts/locales/jquery.timeago.mk.js +0 -20
  117. data/web/assets/javascripts/locales/jquery.timeago.nb.js +0 -18
  118. data/web/assets/javascripts/locales/jquery.timeago.nl.js +0 -20
  119. data/web/assets/javascripts/locales/jquery.timeago.pl.js +0 -31
  120. data/web/assets/javascripts/locales/jquery.timeago.pt-br.js +0 -16
  121. data/web/assets/javascripts/locales/jquery.timeago.pt.js +0 -16
  122. data/web/assets/javascripts/locales/jquery.timeago.ro.js +0 -18
  123. data/web/assets/javascripts/locales/jquery.timeago.rs.js +0 -49
  124. data/web/assets/javascripts/locales/jquery.timeago.ru.js +0 -34
  125. data/web/assets/javascripts/locales/jquery.timeago.sk.js +0 -18
  126. data/web/assets/javascripts/locales/jquery.timeago.sl.js +0 -44
  127. data/web/assets/javascripts/locales/jquery.timeago.sv.js +0 -18
  128. data/web/assets/javascripts/locales/jquery.timeago.th.js +0 -20
  129. data/web/assets/javascripts/locales/jquery.timeago.tr.js +0 -16
  130. data/web/assets/javascripts/locales/jquery.timeago.uk.js +0 -34
  131. data/web/assets/javascripts/locales/jquery.timeago.uz.js +0 -19
  132. data/web/assets/javascripts/locales/jquery.timeago.zh-cn.js +0 -20
  133. data/web/assets/javascripts/locales/jquery.timeago.zh-tw.js +0 -20
  134. data/web/views/_poll_js.erb +0 -5
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.4
4
+ version: 4.2.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Perham
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-01 00:00:00.000000000 Z
11
+ date: 2017-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis
@@ -65,19 +65,19 @@ dependencies:
65
65
  - !ruby/object:Gem::Version
66
66
  version: '1.0'
67
67
  - !ruby/object:Gem::Dependency
68
- name: sinatra
68
+ name: rack-protection
69
69
  requirement: !ruby/object:Gem::Requirement
70
70
  requirements:
71
71
  - - ">="
72
72
  - !ruby/object:Gem::Version
73
- version: 1.4.7
73
+ version: 1.5.0
74
74
  type: :runtime
75
75
  prerelease: false
76
76
  version_requirements: !ruby/object:Gem::Requirement
77
77
  requirements:
78
78
  - - ">="
79
79
  - !ruby/object:Gem::Version
80
- version: 1.4.7
80
+ version: 1.5.0
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: redis-namespace
83
83
  requirement: !ruby/object:Gem::Requirement
@@ -104,20 +104,20 @@ dependencies:
104
104
  requirements:
105
105
  - - "~>"
106
106
  - !ruby/object:Gem::Version
107
- version: '5.7'
107
+ version: '5.10'
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: 5.7.0
110
+ version: 5.10.1
111
111
  type: :development
112
112
  prerelease: false
113
113
  version_requirements: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '5.7'
117
+ version: '5.10'
118
118
  - - ">="
119
119
  - !ruby/object:Gem::Version
120
- version: 5.7.0
120
+ version: 5.10.1
121
121
  - !ruby/object:Gem::Dependency
122
122
  name: rake
123
123
  requirement: !ruby/object:Gem::Requirement
@@ -136,22 +136,86 @@ dependencies:
136
136
  name: rails
137
137
  requirement: !ruby/object:Gem::Requirement
138
138
  requirements:
139
- - - "~>"
139
+ - - ">="
140
140
  - !ruby/object:Gem::Version
141
- version: '4'
141
+ version: 3.2.0
142
+ type: :development
143
+ prerelease: false
144
+ version_requirements: !ruby/object:Gem::Requirement
145
+ requirements:
142
146
  - - ">="
143
147
  - !ruby/object:Gem::Version
144
148
  version: 3.2.0
149
+ - !ruby/object:Gem::Dependency
150
+ name: capybara
151
+ requirement: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - "~>"
154
+ - !ruby/object:Gem::Version
155
+ version: '2.11'
145
156
  type: :development
146
157
  prerelease: false
147
158
  version_requirements: !ruby/object:Gem::Requirement
148
159
  requirements:
149
160
  - - "~>"
150
161
  - !ruby/object:Gem::Version
151
- version: '4'
152
- - - ">="
162
+ version: '2.11'
163
+ - !ruby/object:Gem::Dependency
164
+ name: poltergeist
165
+ requirement: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - "~>"
153
168
  - !ruby/object:Gem::Version
154
- version: 3.2.0
169
+ version: '1.12'
170
+ type: :development
171
+ prerelease: false
172
+ version_requirements: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - "~>"
175
+ - !ruby/object:Gem::Version
176
+ version: '1.12'
177
+ - !ruby/object:Gem::Dependency
178
+ name: percy-capybara
179
+ requirement: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - "~>"
182
+ - !ruby/object:Gem::Version
183
+ version: '2.3'
184
+ type: :development
185
+ prerelease: false
186
+ version_requirements: !ruby/object:Gem::Requirement
187
+ requirements:
188
+ - - "~>"
189
+ - !ruby/object:Gem::Version
190
+ version: '2.3'
191
+ - !ruby/object:Gem::Dependency
192
+ name: timecop
193
+ requirement: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - "~>"
196
+ - !ruby/object:Gem::Version
197
+ version: '0.8'
198
+ type: :development
199
+ prerelease: false
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - "~>"
203
+ - !ruby/object:Gem::Version
204
+ version: '0.8'
205
+ - !ruby/object:Gem::Dependency
206
+ name: mocha
207
+ requirement: !ruby/object:Gem::Requirement
208
+ requirements:
209
+ - - "~>"
210
+ - !ruby/object:Gem::Version
211
+ version: '1.1'
212
+ type: :development
213
+ prerelease: false
214
+ version_requirements: !ruby/object:Gem::Requirement
215
+ requirements:
216
+ - - "~>"
217
+ - !ruby/object:Gem::Version
218
+ version: '1.1'
155
219
  description: Simple, efficient background processing for Ruby.
156
220
  email:
157
221
  - mperham@gmail.com
@@ -214,93 +278,17 @@ files:
214
278
  - lib/sidekiq/util.rb
215
279
  - lib/sidekiq/version.rb
216
280
  - lib/sidekiq/web.rb
217
- - lib/sidekiq/web_helpers.rb
281
+ - lib/sidekiq/web/action.rb
282
+ - lib/sidekiq/web/application.rb
283
+ - lib/sidekiq/web/helpers.rb
284
+ - lib/sidekiq/web/router.rb
218
285
  - lib/sidekiq/worker.rb
219
286
  - sidekiq.gemspec
220
- - test/config.yml
221
- - test/env_based_config.yml
222
- - test/fake_env.rb
223
- - test/fixtures/en.yml
224
- - test/helper.rb
225
- - test/test_actors.rb
226
- - test/test_api.rb
227
- - test/test_cli.rb
228
- - test/test_client.rb
229
- - test/test_exception_handler.rb
230
- - test/test_extensions.rb
231
- - test/test_fetch.rb
232
- - test/test_launcher.rb
233
- - test/test_logging.rb
234
- - test/test_manager.rb
235
- - test/test_middleware.rb
236
- - test/test_processor.rb
237
- - test/test_rails.rb
238
- - test/test_redis_connection.rb
239
- - test/test_retry.rb
240
- - test/test_retry_exhausted.rb
241
- - test/test_scheduled.rb
242
- - test/test_scheduling.rb
243
- - test/test_sidekiq.rb
244
- - test/test_testing.rb
245
- - test/test_testing_fake.rb
246
- - test/test_testing_inline.rb
247
- - test/test_util.rb
248
- - test/test_web.rb
249
- - test/test_web_helpers.rb
250
- - web/assets/images/bootstrap/glyphicons-halflings-white.png
251
- - web/assets/images/bootstrap/glyphicons-halflings.png
252
287
  - web/assets/images/favicon.ico
253
288
  - web/assets/images/logo.png
254
- - web/assets/images/status-sd8051fd480.png
255
- - web/assets/images/status/active.png
256
- - web/assets/images/status/idle.png
289
+ - web/assets/images/status.png
257
290
  - web/assets/javascripts/application.js
258
291
  - web/assets/javascripts/dashboard.js
259
- - web/assets/javascripts/locales/README.md
260
- - web/assets/javascripts/locales/jquery.timeago.ar.js
261
- - web/assets/javascripts/locales/jquery.timeago.bg.js
262
- - web/assets/javascripts/locales/jquery.timeago.bs.js
263
- - web/assets/javascripts/locales/jquery.timeago.ca.js
264
- - web/assets/javascripts/locales/jquery.timeago.cs.js
265
- - web/assets/javascripts/locales/jquery.timeago.cy.js
266
- - web/assets/javascripts/locales/jquery.timeago.da.js
267
- - web/assets/javascripts/locales/jquery.timeago.de.js
268
- - web/assets/javascripts/locales/jquery.timeago.el.js
269
- - web/assets/javascripts/locales/jquery.timeago.en-short.js
270
- - web/assets/javascripts/locales/jquery.timeago.en.js
271
- - web/assets/javascripts/locales/jquery.timeago.es.js
272
- - web/assets/javascripts/locales/jquery.timeago.et.js
273
- - web/assets/javascripts/locales/jquery.timeago.fa.js
274
- - web/assets/javascripts/locales/jquery.timeago.fi.js
275
- - web/assets/javascripts/locales/jquery.timeago.fr-short.js
276
- - web/assets/javascripts/locales/jquery.timeago.fr.js
277
- - web/assets/javascripts/locales/jquery.timeago.he.js
278
- - web/assets/javascripts/locales/jquery.timeago.hr.js
279
- - web/assets/javascripts/locales/jquery.timeago.hu.js
280
- - web/assets/javascripts/locales/jquery.timeago.hy.js
281
- - web/assets/javascripts/locales/jquery.timeago.id.js
282
- - web/assets/javascripts/locales/jquery.timeago.it.js
283
- - web/assets/javascripts/locales/jquery.timeago.ja.js
284
- - web/assets/javascripts/locales/jquery.timeago.ko.js
285
- - web/assets/javascripts/locales/jquery.timeago.lt.js
286
- - web/assets/javascripts/locales/jquery.timeago.mk.js
287
- - web/assets/javascripts/locales/jquery.timeago.nb.js
288
- - web/assets/javascripts/locales/jquery.timeago.nl.js
289
- - web/assets/javascripts/locales/jquery.timeago.pl.js
290
- - web/assets/javascripts/locales/jquery.timeago.pt-br.js
291
- - web/assets/javascripts/locales/jquery.timeago.pt.js
292
- - web/assets/javascripts/locales/jquery.timeago.ro.js
293
- - web/assets/javascripts/locales/jquery.timeago.rs.js
294
- - web/assets/javascripts/locales/jquery.timeago.ru.js
295
- - web/assets/javascripts/locales/jquery.timeago.sk.js
296
- - web/assets/javascripts/locales/jquery.timeago.sl.js
297
- - web/assets/javascripts/locales/jquery.timeago.sv.js
298
- - web/assets/javascripts/locales/jquery.timeago.th.js
299
- - web/assets/javascripts/locales/jquery.timeago.tr.js
300
- - web/assets/javascripts/locales/jquery.timeago.uk.js
301
- - web/assets/javascripts/locales/jquery.timeago.uz.js
302
- - web/assets/javascripts/locales/jquery.timeago.zh-cn.js
303
- - web/assets/javascripts/locales/jquery.timeago.zh-tw.js
304
292
  - web/assets/stylesheets/application.css
305
293
  - web/assets/stylesheets/bootstrap.css
306
294
  - web/locales/cs.yml
@@ -309,6 +297,7 @@ files:
309
297
  - web/locales/el.yml
310
298
  - web/locales/en.yml
311
299
  - web/locales/es.yml
300
+ - web/locales/fa.yml
312
301
  - web/locales/fr.yml
313
302
  - web/locales/hi.yml
314
303
  - web/locales/it.yml
@@ -329,7 +318,6 @@ files:
329
318
  - web/views/_job_info.erb
330
319
  - web/views/_nav.erb
331
320
  - web/views/_paging.erb
332
- - web/views/_poll_js.erb
333
321
  - web/views/_poll_link.erb
334
322
  - web/views/_status.erb
335
323
  - web/views/_summary.erb
@@ -364,39 +352,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
364
352
  version: '0'
365
353
  requirements: []
366
354
  rubyforge_project:
367
- rubygems_version: 2.5.1
355
+ rubygems_version: 2.5.2
368
356
  signing_key:
369
357
  specification_version: 4
370
358
  summary: Simple, efficient background processing for Ruby
371
- test_files:
372
- - test/config.yml
373
- - test/env_based_config.yml
374
- - test/fake_env.rb
375
- - test/fixtures/en.yml
376
- - test/helper.rb
377
- - test/test_actors.rb
378
- - test/test_api.rb
379
- - test/test_cli.rb
380
- - test/test_client.rb
381
- - test/test_exception_handler.rb
382
- - test/test_extensions.rb
383
- - test/test_fetch.rb
384
- - test/test_launcher.rb
385
- - test/test_logging.rb
386
- - test/test_manager.rb
387
- - test/test_middleware.rb
388
- - test/test_processor.rb
389
- - test/test_rails.rb
390
- - test/test_redis_connection.rb
391
- - test/test_retry.rb
392
- - test/test_retry_exhausted.rb
393
- - test/test_scheduled.rb
394
- - test/test_scheduling.rb
395
- - test/test_sidekiq.rb
396
- - test/test_testing.rb
397
- - test/test_testing_fake.rb
398
- - test/test_testing_inline.rb
399
- - test/test_util.rb
400
- - test/test_web.rb
401
- - test/test_web_helpers.rb
402
- has_rdoc:
359
+ test_files: []
data/test/config.yml DELETED
@@ -1,9 +0,0 @@
1
- ---
2
- :verbose: false
3
- :require: ./test/fake_env.rb
4
- :pidfile: /tmp/sidekiq-config-test.pid
5
- :logfile: /tmp/sidekiq.log
6
- :concurrency: 50
7
- :queues:
8
- - [<%="very_"%>often, 2]
9
- - [seldom, 1]
@@ -1,11 +0,0 @@
1
- ---
2
- :pidfile: /tmp/sidekiq-config-test.pid
3
- :concurrency: 50
4
- staging:
5
- :verbose: false
6
- :require: ./test/fake_env.rb
7
- :logfile: /tmp/sidekiq.log
8
- :concurrency: 5
9
- :queues:
10
- - [<%="very_"%>often, 2]
11
- - [seldom, 1]
data/test/fake_env.rb DELETED
@@ -1 +0,0 @@
1
- # frozen_string_literal: true
data/test/fixtures/en.yml DELETED
@@ -1,2 +0,0 @@
1
- en:
2
- translated_text: 'Changed text from add locals'
data/test/helper.rb DELETED
@@ -1,75 +0,0 @@
1
- # frozen_string_literal: true
2
- $TESTING = true
3
- # disable minitest/parallel threads
4
- ENV["N"] = "0"
5
-
6
- if ENV["COVERAGE"]
7
- require 'simplecov'
8
- SimpleCov.start do
9
- add_filter "/test/"
10
- add_filter "/myapp/"
11
- end
12
- end
13
- ENV['RACK_ENV'] = ENV['RAILS_ENV'] = 'test'
14
-
15
- trap 'USR1' do
16
- threads = Thread.list
17
-
18
- puts
19
- puts "=" * 80
20
- puts "Received USR1 signal; printing all #{threads.count} thread backtraces."
21
-
22
- threads.each do |thr|
23
- description = thr == Thread.main ? "Main thread" : thr.inspect
24
- puts
25
- puts "#{description} backtrace: "
26
- puts thr.backtrace.join("\n")
27
- end
28
-
29
- puts "=" * 80
30
- end
31
-
32
- begin
33
- require 'pry-byebug'
34
- rescue LoadError
35
- end
36
-
37
- require 'minitest/autorun'
38
-
39
- require 'sidekiq'
40
- require 'sidekiq/util'
41
- Sidekiq.logger.level = Logger::ERROR
42
-
43
- Sidekiq::Test = Minitest::Test
44
-
45
- require 'sidekiq/redis_connection'
46
- REDIS_URL = ENV['REDIS_URL'] || 'redis://localhost/15'
47
- REDIS = Sidekiq::RedisConnection.create(:url => REDIS_URL, :namespace => 'testy')
48
-
49
- Sidekiq.configure_client do |config|
50
- config.redis = { :url => REDIS_URL, :namespace => 'testy' }
51
- end
52
-
53
- def capture_logging(lvl=Logger::INFO)
54
- old = Sidekiq.logger
55
- begin
56
- out = StringIO.new
57
- logger = Logger.new(out)
58
- logger.level = lvl
59
- Sidekiq.logger = logger
60
- yield
61
- out.string
62
- ensure
63
- Sidekiq.logger = old
64
- end
65
- end
66
-
67
- def with_logging(lvl=Logger::DEBUG)
68
- old = Sidekiq.logger.level
69
- begin
70
- Sidekiq.logger.level = lvl
71
- yield
72
- ensure
73
- Sidekiq.logger.level = old
74
- end
75
- end
data/test/test_actors.rb DELETED
@@ -1,138 +0,0 @@
1
- # frozen_string_literal: true
2
- require_relative 'helper'
3
- require 'sidekiq/cli'
4
- require 'sidekiq/fetch'
5
- require 'sidekiq/scheduled'
6
- require 'sidekiq/processor'
7
-
8
- class TestActors < Sidekiq::Test
9
- class JoeWorker
10
- include Sidekiq::Worker
11
- def perform(slp)
12
- raise "boom" if slp == "boom"
13
- sleep(slp) if slp > 0
14
- $count += 1
15
- end
16
- end
17
-
18
- describe 'threads' do
19
- before do
20
- Sidekiq.redis {|c| c.flushdb}
21
- end
22
-
23
- describe 'scheduler' do
24
- it 'can start and stop' do
25
- f = Sidekiq::Scheduled::Poller.new
26
- f.start
27
- f.terminate
28
- end
29
-
30
- it 'can schedule' do
31
- ss = Sidekiq::ScheduledSet.new
32
- q = Sidekiq::Queue.new
33
-
34
- JoeWorker.perform_in(0.01, 0)
35
-
36
- assert_equal 0, q.size
37
- assert_equal 1, ss.size
38
-
39
- sleep 0.015
40
- s = Sidekiq::Scheduled::Poller.new
41
- s.enqueue
42
- assert_equal 1, q.size
43
- assert_equal 0, ss.size
44
- s.terminate
45
- end
46
- end
47
-
48
- describe 'processor' do
49
- before do
50
- $count = 0
51
- end
52
-
53
- it 'can start and stop' do
54
- f = Sidekiq::Processor.new(Mgr.new)
55
- f.terminate
56
- end
57
-
58
- class Mgr
59
- attr_reader :latest_error
60
- attr_reader :mutex
61
- attr_reader :cond
62
- def initialize
63
- @mutex = ::Mutex.new
64
- @cond = ::ConditionVariable.new
65
- end
66
- def processor_died(inst, err)
67
- @latest_error = err
68
- @mutex.synchronize do
69
- @cond.signal
70
- end
71
- end
72
- def processor_stopped(inst)
73
- @mutex.synchronize do
74
- @cond.signal
75
- end
76
- end
77
- def options
78
- { :concurrency => 3, :queues => ['default'] }
79
- end
80
- end
81
-
82
- it 'can process' do
83
- mgr = Mgr.new
84
-
85
- p = Sidekiq::Processor.new(mgr)
86
- JoeWorker.perform_async(0)
87
-
88
- a = $count
89
- p.process_one
90
- b = $count
91
- assert_equal a + 1, b
92
- end
93
-
94
- it 'deals with errors' do
95
- mgr = Mgr.new
96
-
97
- p = Sidekiq::Processor.new(mgr)
98
- JoeWorker.perform_async("boom")
99
- q = Sidekiq::Queue.new
100
- assert_equal 1, q.size
101
-
102
- a = $count
103
- mgr.mutex.synchronize do
104
- p.start
105
- mgr.cond.wait(mgr.mutex)
106
- end
107
- b = $count
108
- assert_equal a, b
109
-
110
- sleep 0.001
111
- assert_equal false, p.thread.status
112
- p.terminate(true)
113
- refute_nil mgr.latest_error
114
- assert_equal RuntimeError, mgr.latest_error.class
115
- end
116
-
117
- it 'gracefully kills' do
118
- mgr = Mgr.new
119
-
120
- p = Sidekiq::Processor.new(mgr)
121
- JoeWorker.perform_async(1)
122
- q = Sidekiq::Queue.new
123
- assert_equal 1, q.size
124
-
125
- a = $count
126
- p.start
127
- sleep(0.02)
128
- p.terminate
129
- p.kill(true)
130
-
131
- b = $count
132
- assert_equal a, b
133
- assert_equal false, p.thread.status
134
- refute mgr.latest_error, mgr.latest_error.to_s
135
- end
136
- end
137
- end
138
- end