shoryuken 5.0.4 → 5.2.3

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.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/specs.yml +62 -0
  3. data/.reek.yml +5 -0
  4. data/.rubocop.yml +1 -1
  5. data/Appraisals +36 -0
  6. data/CHANGELOG.md +63 -0
  7. data/Gemfile +3 -1
  8. data/README.md +24 -2
  9. data/Rakefile +15 -1
  10. data/bin/cli/sqs.rb +50 -5
  11. data/gemfiles/.gitignore +1 -0
  12. data/gemfiles/aws_sdk_core_2.gemfile +21 -0
  13. data/gemfiles/rails_4_2.gemfile +20 -0
  14. data/gemfiles/rails_5_2.gemfile +21 -0
  15. data/gemfiles/rails_6_0.gemfile +21 -0
  16. data/gemfiles/rails_6_1.gemfile +21 -0
  17. data/lib/shoryuken/environment_loader.rb +7 -1
  18. data/lib/shoryuken/extensions/active_job_adapter.rb +25 -18
  19. data/lib/shoryuken/extensions/active_job_extensions.rb +38 -0
  20. data/lib/shoryuken/launcher.rb +1 -0
  21. data/lib/shoryuken/manager.rb +24 -5
  22. data/lib/shoryuken/options.rb +1 -0
  23. data/lib/shoryuken/polling/base.rb +2 -0
  24. data/lib/shoryuken/polling/strict_priority.rb +6 -0
  25. data/lib/shoryuken/polling/weighted_round_robin.rb +11 -0
  26. data/lib/shoryuken/queue.rb +39 -11
  27. data/lib/shoryuken/version.rb +1 -1
  28. data/lib/shoryuken.rb +1 -0
  29. data/shoryuken.gemspec +0 -1
  30. data/spec/integration/launcher_spec.rb +29 -2
  31. data/spec/shared_examples_for_active_job.rb +226 -9
  32. data/spec/shoryuken/environment_loader_spec.rb +22 -2
  33. data/spec/shoryuken/extensions/active_job_adapter_spec.rb +1 -1
  34. data/spec/shoryuken/extensions/active_job_base_spec.rb +84 -0
  35. data/spec/shoryuken/extensions/active_job_concurrent_send_adapter_spec.rb +4 -0
  36. data/spec/shoryuken/extensions/active_job_wrapper_spec.rb +20 -0
  37. data/spec/shoryuken/manager_spec.rb +35 -1
  38. data/spec/shoryuken/polling/strict_priority_spec.rb +10 -0
  39. data/spec/shoryuken/polling/weighted_round_robin_spec.rb +10 -0
  40. data/spec/shoryuken/queue_spec.rb +23 -0
  41. data/spec/spec_helper.rb +5 -9
  42. metadata +20 -22
  43. data/.travis.yml +0 -34
  44. data/Gemfile.aws-sdk-core-v2 +0 -13
@@ -145,4 +145,14 @@ RSpec.describe Shoryuken::Polling::StrictPriority do
145
145
  expect(subject.next_queue).to eq(queue3)
146
146
  end
147
147
  end
148
+
149
+ describe '#message_processed' do
150
+ it 'removes paused queue, adds to active queues' do
151
+ strategy = Shoryuken::Polling::StrictPriority.new([queue1, queue2])
152
+ strategy.send(:pause, queue1)
153
+ expect(strategy.active_queues).to eq([[queue2, 1]])
154
+ strategy.message_processed(queue1)
155
+ expect(strategy.active_queues).to eq([[queue1, 2], [queue2, 1]])
156
+ end
157
+ end
148
158
  end
@@ -104,4 +104,14 @@ RSpec.describe Shoryuken::Polling::WeightedRoundRobin do
104
104
  expect(subject.delay).to eq(1.0)
105
105
  end
106
106
  end
107
+
108
+ describe '#message_processed' do
109
+ it 'removes paused queue, adds to active queues' do
110
+ strategy = Shoryuken::Polling::WeightedRoundRobin.new([queue1, queue2])
111
+ strategy.send(:pause, queue1)
112
+ expect(strategy.active_queues).to eq([[queue2, 1]])
113
+ strategy.message_processed(queue1)
114
+ expect(strategy.active_queues).to eq([[queue2, 1], [queue1, 1]])
115
+ end
116
+ end
107
117
  end
@@ -39,6 +39,29 @@ RSpec.describe Shoryuken::Queue do
39
39
  end
40
40
  end
41
41
 
42
+ context 'when queue ARN supplied' do
43
+ let(:queue_arn) { 'arn:aws:sqs:ap-southeast-2:000000000000:queue-name' }
44
+
45
+ it 'initializes by URL and validate the URL' do
46
+ subject = described_class.new(sqs, queue_arn)
47
+
48
+ expect(subject.name).to eq('queue-name')
49
+ expect(subject.url).to eq('https://sqs.ap-southeast-2.amazonaws.com/000000000000/queue-name')
50
+ end
51
+ end
52
+
53
+ context 'when invalid queue ARN supplied' do
54
+ let(:queue_arn) { 'arn:aws:sqs::000000000000:queue-name' }
55
+
56
+ it 'raises an error' do
57
+ expect do
58
+ described_class.new(sqs, queue_arn)
59
+ end.to raise_error(
60
+ 'Invalid ARN: arn:aws:sqs::000000000000:queue-name. A valid ARN must include: region, account_id and resource.'
61
+ )
62
+ end
63
+ end
64
+
42
65
  context 'when queue name supplied' do
43
66
  subject { described_class.new(sqs, queue_name) }
44
67
 
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,11 @@
1
1
  require 'bundler/setup'
2
2
  Bundler.setup
3
3
 
4
- require 'pry-byebug'
4
+ begin
5
+ require 'pry-byebug'
6
+ rescue LoadError
7
+ end
8
+
5
9
  require 'shoryuken'
6
10
  require 'json'
7
11
  require 'dotenv'
@@ -28,13 +32,6 @@ class TestWorker
28
32
  end
29
33
 
30
34
  RSpec.configure do |config|
31
- # Only run slow tests if SPEC_ALL=true and AWS_ACCESS_KEY_ID is present
32
- # The AWS_ACCESS_KEY_ID checker is because Travis CI
33
- # does not expose ENV variables to pull requests from forked repositories
34
- # http://docs.travis-ci.com/user/pull-requests/
35
- # config.filter_run_excluding slow: true if ENV['SPEC_ALL'] != 'true' || ENV['AWS_ACCESS_KEY_ID'].nil?
36
- config.filter_run_excluding slow: true
37
-
38
35
  config.before do
39
36
  Shoryuken::Client.class_variable_set :@@queues, {}
40
37
 
@@ -63,7 +60,6 @@ RSpec.configure do |config|
63
60
 
64
61
  Shoryuken.cache_visibility_timeout = false
65
62
 
66
- allow(Concurrent).to receive(:global_io_executor).and_return(Concurrent::ImmediateExecutor.new)
67
63
  allow(Shoryuken).to receive(:active_job?).and_return(false)
68
64
  end
69
65
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shoryuken
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.4
4
+ version: 5.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pablo Cantero
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-20 00:00:00.000000000 Z
11
+ date: 2021-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: pry-byebug
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: rake
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -118,13 +104,14 @@ extra_rdoc_files: []
118
104
  files:
119
105
  - ".codeclimate.yml"
120
106
  - ".github/FUNDING.yml"
107
+ - ".github/workflows/specs.yml"
121
108
  - ".gitignore"
109
+ - ".reek.yml"
122
110
  - ".rspec"
123
111
  - ".rubocop.yml"
124
- - ".travis.yml"
112
+ - Appraisals
125
113
  - CHANGELOG.md
126
114
  - Gemfile
127
- - Gemfile.aws-sdk-core-v2
128
115
  - LICENSE
129
116
  - README.md
130
117
  - Rakefile
@@ -133,6 +120,12 @@ files:
133
120
  - bin/shoryuken
134
121
  - examples/bootstrap_queues.rb
135
122
  - examples/default_worker.rb
123
+ - gemfiles/.gitignore
124
+ - gemfiles/aws_sdk_core_2.gemfile
125
+ - gemfiles/rails_4_2.gemfile
126
+ - gemfiles/rails_5_2.gemfile
127
+ - gemfiles/rails_6_0.gemfile
128
+ - gemfiles/rails_6_1.gemfile
136
129
  - lib/shoryuken.rb
137
130
  - lib/shoryuken/body_parser.rb
138
131
  - lib/shoryuken/client.rb
@@ -141,6 +134,7 @@ files:
141
134
  - lib/shoryuken/environment_loader.rb
142
135
  - lib/shoryuken/extensions/active_job_adapter.rb
143
136
  - lib/shoryuken/extensions/active_job_concurrent_send_adapter.rb
137
+ - lib/shoryuken/extensions/active_job_extensions.rb
144
138
  - lib/shoryuken/fetcher.rb
145
139
  - lib/shoryuken/launcher.rb
146
140
  - lib/shoryuken/logging.rb
@@ -176,7 +170,9 @@ files:
176
170
  - spec/shoryuken/default_worker_registry_spec.rb
177
171
  - spec/shoryuken/environment_loader_spec.rb
178
172
  - spec/shoryuken/extensions/active_job_adapter_spec.rb
173
+ - spec/shoryuken/extensions/active_job_base_spec.rb
179
174
  - spec/shoryuken/extensions/active_job_concurrent_send_adapter_spec.rb
175
+ - spec/shoryuken/extensions/active_job_wrapper_spec.rb
180
176
  - spec/shoryuken/fetcher_spec.rb
181
177
  - spec/shoryuken/manager_spec.rb
182
178
  - spec/shoryuken/middleware/chain_spec.rb
@@ -202,7 +198,7 @@ homepage: https://github.com/phstc/shoryuken
202
198
  licenses:
203
199
  - LGPL-3.0
204
200
  metadata: {}
205
- post_install_message:
201
+ post_install_message:
206
202
  rdoc_options: []
207
203
  require_paths:
208
204
  - lib
@@ -217,8 +213,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
217
213
  - !ruby/object:Gem::Version
218
214
  version: '0'
219
215
  requirements: []
220
- rubygems_version: 3.1.2
221
- signing_key:
216
+ rubygems_version: 3.0.1
217
+ signing_key:
222
218
  specification_version: 4
223
219
  summary: Shoryuken is a super efficient AWS SQS thread based message processor
224
220
  test_files:
@@ -231,7 +227,9 @@ test_files:
231
227
  - spec/shoryuken/default_worker_registry_spec.rb
232
228
  - spec/shoryuken/environment_loader_spec.rb
233
229
  - spec/shoryuken/extensions/active_job_adapter_spec.rb
230
+ - spec/shoryuken/extensions/active_job_base_spec.rb
234
231
  - spec/shoryuken/extensions/active_job_concurrent_send_adapter_spec.rb
232
+ - spec/shoryuken/extensions/active_job_wrapper_spec.rb
235
233
  - spec/shoryuken/fetcher_spec.rb
236
234
  - spec/shoryuken/manager_spec.rb
237
235
  - spec/shoryuken/middleware/chain_spec.rb
data/.travis.yml DELETED
@@ -1,34 +0,0 @@
1
- language: ruby
2
-
3
- rvm:
4
- - 2.0.0
5
- - 2.1.10
6
- - 2.2.10
7
- - 2.3.8
8
- - 2.4.4
9
- - 2.5.1
10
- - 2.6.3
11
-
12
- notifications:
13
- email:
14
- on_success: change
15
- on_failure: always
16
-
17
- gemfile:
18
- - Gemfile
19
- - Gemfile.aws-sdk-core-v2
20
-
21
- env:
22
- - SPEC_ALL=true
23
-
24
- script: bundle exec rspec spec
25
-
26
- before_install:
27
- - gem install bundler -v '< 2'
28
-
29
- after_success:
30
- - bundle exec codeclimate-test-reporter
31
-
32
- addons:
33
- code_climate:
34
- repo_token: 7709fd21981bb9d2658647a66d959415a1029a83f1c199573828797944f26c52
@@ -1,13 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in shoryuken.gemspec
4
- gemspec
5
-
6
- group :test do
7
- gem 'activejob', '~> 4'
8
- gem 'aws-sdk-core', '~> 2'
9
- gem 'codeclimate-test-reporter', require: nil
10
- gem 'httparty'
11
- gem 'multi_xml'
12
- gem 'simplecov'
13
- end