message-driver 0.4.0 → 0.5.0
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.
- checksums.yaml +4 -4
- data/.coveralls.yml +2 -0
- data/.rubocop.yml +26 -2
- data/.rubocop_todo.yml +15 -123
- data/.travis.yml +2 -1
- data/CHANGELOG.md +10 -1
- data/Gemfile +15 -6
- data/Rakefile +23 -12
- data/ci/reset_vhost +8 -3
- data/ci/travis_setup +0 -3
- data/features/.nav +6 -1
- data/features/CHANGELOG.md +10 -1
- data/features/amqp_specific_features/binding_amqp_destinations.feature +1 -0
- data/features/amqp_specific_features/declaring_amqp_exchanges.feature +1 -0
- data/features/amqp_specific_features/server_named_destinations.feature +1 -0
- data/features/destination_metadata.feature +26 -0
- data/features/logging.feature +1 -1
- data/features/middleware/middleware_basics.feature +91 -0
- data/features/middleware/middleware_ordering.feature +60 -0
- data/features/middleware/middleware_parameters.feature +43 -0
- data/features/middleware/middleware_with_blocks.feature +85 -0
- data/features/step_definitions/dynamic_destinations_steps.rb +1 -1
- data/features/step_definitions/message_consumers_steps.rb +5 -0
- data/features/step_definitions/middleware_steps.rb +10 -0
- data/features/step_definitions/steps.rb +10 -2
- data/features/support/env.rb +4 -3
- data/features/support/firewall_helper.rb +1 -1
- data/features/support/message_table_matcher.rb +3 -2
- data/features/support/no_error_matcher.rb +2 -2
- data/features/support/test_runner.rb +11 -57
- data/features/support/transforms.rb +12 -10
- data/lib/message_driver.rb +3 -1
- data/lib/message_driver/adapters/base.rb +11 -11
- data/lib/message_driver/adapters/bunny_adapter.rb +189 -132
- data/lib/message_driver/adapters/in_memory_adapter.rb +51 -34
- data/lib/message_driver/adapters/stomp_adapter.rb +22 -23
- data/lib/message_driver/broker.rb +21 -16
- data/lib/message_driver/client.rb +15 -16
- data/lib/message_driver/destination.rb +26 -8
- data/lib/message_driver/message.rb +5 -4
- data/lib/message_driver/middleware.rb +8 -0
- data/lib/message_driver/middleware/base.rb +19 -0
- data/lib/message_driver/middleware/block_middleware.rb +33 -0
- data/lib/message_driver/middleware/middleware_stack.rb +61 -0
- data/lib/message_driver/subscription.rb +2 -2
- data/lib/message_driver/version.rb +1 -1
- data/message-driver.gemspec +3 -4
- data/spec/integration/bunny/amqp_integration_spec.rb +21 -82
- data/spec/integration/bunny/bunny_adapter_spec.rb +288 -268
- data/spec/integration/in_memory/in_memory_adapter_spec.rb +93 -90
- data/spec/integration/stomp/stomp_adapter_spec.rb +126 -93
- data/spec/spec_helper.rb +11 -9
- data/spec/support/shared/adapter_examples.rb +1 -1
- data/spec/support/shared/client_ack_examples.rb +4 -4
- data/spec/support/shared/context_examples.rb +6 -4
- data/spec/support/shared/destination_examples.rb +54 -14
- data/spec/support/shared/subscription_examples.rb +33 -26
- data/spec/support/shared/transaction_examples.rb +12 -12
- data/spec/support/utils.rb +1 -1
- data/spec/units/message_driver/adapters/base_spec.rb +42 -40
- data/spec/units/message_driver/broker_spec.rb +38 -38
- data/spec/units/message_driver/client_spec.rb +87 -87
- data/spec/units/message_driver/destination_spec.rb +16 -11
- data/spec/units/message_driver/message_spec.rb +96 -70
- data/spec/units/message_driver/middleware/base_spec.rb +30 -0
- data/spec/units/message_driver/middleware/block_middleware_spec.rb +82 -0
- data/spec/units/message_driver/middleware/middleware_stack_spec.rb +165 -0
- data/spec/units/message_driver/subscription_spec.rb +18 -16
- data/test_lib/broker_config.rb +21 -5
- data/test_lib/coverage.rb +11 -0
- data/test_lib/provider/base.rb +59 -0
- data/test_lib/provider/in_memory.rb +6 -0
- data/test_lib/provider/rabbitmq.rb +67 -0
- metadata +46 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9fc4a4fb8a79dc70d8279847782608173d74bf1a
|
4
|
+
data.tar.gz: 95da288e0058edef7f3e913c9682025c4d0a6f97
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b487446f111ad51750587792819f8451c43c1da0154194c02710f933374a75618cf7147ef5c2cfa9b5c946d347e3500bf8a15a9779c48b9ec62feb8660511655
|
7
|
+
data.tar.gz: 6a2d604351dc987a08cd0c4548887233a8c31c04ed5aecc289ba647e1ce59b86cd8b5e2b59eb3ba12c06a4dfcafe67b6f21a1736785850b86f9ed6c7c694b56d
|
data/.coveralls.yml
ADDED
data/.rubocop.yml
CHANGED
@@ -6,13 +6,37 @@ AllCops:
|
|
6
6
|
- '**/Gemfile'
|
7
7
|
- 'Guardfile'
|
8
8
|
- 'Rakefile'
|
9
|
+
Exclude:
|
10
|
+
- 'lib/vendor/**/*.rb'
|
11
|
+
- 'vendor/**/*'
|
12
|
+
|
13
|
+
Metrics/BlockNesting:
|
14
|
+
Max: 4
|
15
|
+
|
16
|
+
Metrics/LineLength:
|
17
|
+
AllowURI: true
|
18
|
+
Max: 120
|
19
|
+
Include:
|
20
|
+
- 'lib/**/*.rb'
|
9
21
|
|
10
22
|
Style/AccessorMethodName:
|
11
23
|
Enabled: false
|
12
24
|
|
13
|
-
Style/
|
14
|
-
|
25
|
+
Style/Encoding:
|
26
|
+
Enabled: false
|
15
27
|
|
16
28
|
Style/FileName:
|
17
29
|
Exclude:
|
18
30
|
- 'lib/message-driver.rb'
|
31
|
+
|
32
|
+
Style/NumericLiterals:
|
33
|
+
Enabled: false
|
34
|
+
|
35
|
+
Style/RegexpLiteral:
|
36
|
+
Exclude:
|
37
|
+
- 'Guardfile'
|
38
|
+
|
39
|
+
Style/TrivialAccessors:
|
40
|
+
ExactNameMatch: true
|
41
|
+
AllowPredicates: true
|
42
|
+
AllowDSLWriters: true
|
data/.rubocop_todo.yml
CHANGED
@@ -1,88 +1,43 @@
|
|
1
1
|
# This configuration was generated by `rubocop --auto-gen-config`
|
2
|
-
# on 2014-
|
2
|
+
# on 2014-09-15 17:44:35 -0500 using RuboCop version 0.26.0.
|
3
3
|
# The point is for the user to remove these configuration records
|
4
4
|
# one by one as the offenses are removed from the code base.
|
5
5
|
# Note that changes in the inspected code, or installation of new
|
6
6
|
# versions of RuboCop, may require this file to be generated again.
|
7
7
|
|
8
|
-
# Offense count: 84
|
9
|
-
# Cop supports --auto-correct.
|
10
|
-
Style/Blocks:
|
11
|
-
Enabled: false
|
12
|
-
|
13
8
|
# Offense count: 2
|
14
|
-
# Configuration parameters:
|
15
|
-
|
9
|
+
# Configuration parameters: CountComments.
|
10
|
+
Metrics/ClassLength:
|
16
11
|
Enabled: false
|
17
12
|
|
18
|
-
# Offense count:
|
19
|
-
|
20
|
-
Style/ClassAndModuleChildren:
|
13
|
+
# Offense count: 4
|
14
|
+
Metrics/CyclomaticComplexity:
|
21
15
|
Enabled: false
|
22
16
|
|
23
|
-
# Offense count:
|
17
|
+
# Offense count: 15
|
24
18
|
# Configuration parameters: CountComments.
|
25
|
-
|
19
|
+
Metrics/MethodLength:
|
26
20
|
Enabled: false
|
27
21
|
|
28
|
-
# Offense count:
|
29
|
-
|
30
|
-
|
22
|
+
# Offense count: 3
|
23
|
+
Metrics/PerceivedComplexity:
|
24
|
+
Enabled: false
|
31
25
|
|
32
|
-
# Offense count:
|
26
|
+
# Offense count: 63
|
33
27
|
Style/Documentation:
|
34
28
|
Enabled: false
|
35
29
|
|
36
|
-
# Offense count:
|
30
|
+
# Offense count: 9
|
37
31
|
# Configuration parameters: MinBodyLength.
|
38
32
|
Style/GuardClause:
|
39
33
|
Enabled: false
|
40
34
|
|
41
|
-
# Offense count: 4
|
42
|
-
# Configuration parameters: MaxLineLength.
|
43
|
-
Style/IfUnlessModifier:
|
44
|
-
Enabled: false
|
45
|
-
|
46
|
-
# Offense count: 9
|
47
|
-
Style/Lambda:
|
48
|
-
Enabled: false
|
49
|
-
|
50
|
-
# Offense count: 6
|
51
|
-
# Cop supports --auto-correct.
|
52
|
-
Style/LeadingCommentSpace:
|
53
|
-
Enabled: false
|
54
|
-
|
55
|
-
# Offense count: 165
|
56
|
-
# Configuration parameters: AllowURI.
|
57
|
-
Style/LineLength:
|
58
|
-
Max: 181
|
59
|
-
|
60
|
-
# Offense count: 14
|
61
|
-
# Configuration parameters: CountComments.
|
62
|
-
Style/MethodLength:
|
63
|
-
Max: 29
|
64
|
-
|
65
35
|
# Offense count: 2
|
66
36
|
Style/ModuleFunction:
|
67
37
|
Enabled: false
|
68
38
|
|
69
|
-
# Offense count: 2
|
70
|
-
Style/MultilineBlockChain:
|
71
|
-
Enabled: false
|
72
|
-
|
73
39
|
# Offense count: 1
|
74
|
-
|
75
|
-
Style/Next:
|
76
|
-
Enabled: false
|
77
|
-
|
78
|
-
# Offense count: 2
|
79
|
-
# Cop supports --auto-correct.
|
80
|
-
Style/NumericLiterals:
|
81
|
-
MinDigits: 6
|
82
|
-
|
83
|
-
# Offense count: 1
|
84
|
-
# Configuration parameters: NamePrefixBlacklist.
|
85
|
-
Style/PredicateName:
|
40
|
+
Style/MultilineBlockChain:
|
86
41
|
Enabled: false
|
87
42
|
|
88
43
|
# Offense count: 1
|
@@ -90,71 +45,8 @@ Style/PredicateName:
|
|
90
45
|
Style/RaiseArgs:
|
91
46
|
Enabled: false
|
92
47
|
|
93
|
-
# Offense count: 7
|
94
|
-
# Cop supports --auto-correct.
|
95
|
-
Style/RedundantBegin:
|
96
|
-
Enabled: false
|
97
|
-
|
98
|
-
# Offense count: 4
|
99
|
-
# Cop supports --auto-correct.
|
100
|
-
Style/RedundantSelf:
|
101
|
-
Enabled: false
|
102
|
-
|
103
|
-
# Offense count: 2
|
104
|
-
Style/RegexpLiteral:
|
105
|
-
MaxSlashes: 0
|
106
|
-
|
107
|
-
# Offense count: 1
|
108
|
-
Style/SelfAssignment:
|
109
|
-
Enabled: false
|
110
|
-
|
111
|
-
# Offense count: 41
|
112
|
-
# Cop supports --auto-correct.
|
113
|
-
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
114
|
-
Style/SignalException:
|
115
|
-
Enabled: false
|
116
|
-
|
117
|
-
# Offense count: 1
|
118
|
-
# Cop supports --auto-correct.
|
119
|
-
Style/SpaceAfterComma:
|
120
|
-
Enabled: false
|
121
|
-
|
122
|
-
# Offense count: 61
|
123
|
-
# Cop supports --auto-correct.
|
124
|
-
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
125
|
-
Style/SpaceAroundEqualsInParameterDefault:
|
126
|
-
Enabled: false
|
127
|
-
|
128
|
-
# Offense count: 9
|
129
|
-
# Cop supports --auto-correct.
|
130
|
-
Style/SpaceAroundOperators:
|
131
|
-
Enabled: false
|
132
|
-
|
133
|
-
# Offense count: 11
|
134
|
-
# Cop supports --auto-correct.
|
135
|
-
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
136
|
-
Style/SpaceBeforeBlockBraces:
|
137
|
-
Enabled: false
|
138
|
-
|
139
|
-
# Offense count: 22
|
140
|
-
# Cop supports --auto-correct.
|
141
|
-
# Configuration parameters: EnforcedStyle, SupportedStyles, EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters.
|
142
|
-
Style/SpaceInsideBlockBraces:
|
143
|
-
Enabled: false
|
144
|
-
|
145
|
-
# Offense count: 101
|
146
|
-
# Cop supports --auto-correct.
|
147
|
-
# Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces, SupportedStyles.
|
148
|
-
Style/SpaceInsideHashLiteralBraces:
|
149
|
-
Enabled: false
|
150
|
-
|
151
48
|
# Offense count: 3
|
152
49
|
# Cop supports --auto-correct.
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
# Offense count: 7
|
157
|
-
# Cop supports --auto-correct.
|
158
|
-
# Configuration parameters: ExactNameMatch, AllowPredicates, AllowDSLWriters, Whitelist.
|
159
|
-
Style/TrivialAccessors:
|
50
|
+
# Configuration parameters: IgnoredMethods.
|
51
|
+
Style/SymbolProc:
|
160
52
|
Enabled: false
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.5.0 - 2014-09-17
|
4
|
+
|
5
|
+
* add support for checking consumer counts on a queue in bunny and in_memory adapters
|
6
|
+
* in_memory adapter now supports multiple subscribers per queue, and does a round-robin
|
7
|
+
through them when sending messages to consumers
|
8
|
+
* upgrade to rspec 3
|
9
|
+
* Middleware can now be used to automatically pre/post-process messages as they are published to
|
10
|
+
or consumed from a destination
|
11
|
+
|
3
12
|
## 0.4.0 - 2014-07-03
|
4
13
|
|
5
14
|
* require bunny 1.2.2 or later
|
@@ -10,7 +19,7 @@
|
|
10
19
|
* Support for handling multiple broker connections
|
11
20
|
* require bunny 1.1.3 or later
|
12
21
|
* make bunny connections as lazily initialized as possible
|
13
|
-
* bunny
|
22
|
+
* bunny transactions start lazily
|
14
23
|
|
15
24
|
## 0.2.2 - 2014-02-21
|
16
25
|
|
data/Gemfile
CHANGED
@@ -7,14 +7,17 @@ platform :rbx do
|
|
7
7
|
gem 'rubysl'
|
8
8
|
end
|
9
9
|
|
10
|
+
gem 'rubocop', platform: [:ruby_20, :ruby_21]
|
11
|
+
|
10
12
|
group :tools do
|
11
|
-
gem 'guard'
|
12
|
-
gem 'guard-bundler'
|
13
|
-
gem 'guard-rspec'
|
14
|
-
gem 'guard-cucumber'
|
15
|
-
gem 'guard-rubocop'
|
13
|
+
gem 'guard', platform: [:mri_20, :mri_21]
|
14
|
+
gem 'guard-bundler', platform: [:mri_20, :mri_21]
|
15
|
+
gem 'guard-rspec', platform: [:mri_20, :mri_21]
|
16
|
+
gem 'guard-cucumber', platform: [:mri_20, :mri_21]
|
17
|
+
gem 'guard-rubocop', platform: [:mri_20, :mri_21]
|
16
18
|
gem 'pry'
|
17
19
|
gem 'pry-byebug', platform: [:mri_20, :mri_21]
|
20
|
+
gem 'pry-stack_explorer', platform: [:ruby_20, :ruby_21]
|
18
21
|
group :darwin do
|
19
22
|
gem 'ruby_gntp'
|
20
23
|
gem 'rb-fsevent'
|
@@ -24,12 +27,13 @@ group :tools do
|
|
24
27
|
gem 'yard'
|
25
28
|
gem 'redcarpet'
|
26
29
|
gem 'launchy'
|
27
|
-
end
|
30
|
+
end
|
28
31
|
|
29
32
|
require File.expand_path('../test_lib/broker_config', __FILE__)
|
30
33
|
|
31
34
|
adapter = BrokerConfig.current_adapter.to_s
|
32
35
|
version = BrokerConfig.adapter_version
|
36
|
+
provider = BrokerConfig.provider
|
33
37
|
|
34
38
|
case adapter
|
35
39
|
when 'in_memory'
|
@@ -42,4 +46,9 @@ else
|
|
42
46
|
end
|
43
47
|
end
|
44
48
|
|
49
|
+
case provider
|
50
|
+
when :rabbitmq
|
51
|
+
gem 'rabbitmq_http_api_client', '> 1.3.0', github: 'soupmatt/rabbitmq_http_api_client', branch: :master
|
52
|
+
end
|
53
|
+
|
45
54
|
gem 'coveralls', require: false
|
data/Rakefile
CHANGED
@@ -8,6 +8,14 @@ require 'cucumber/rake/task'
|
|
8
8
|
|
9
9
|
require 'coveralls/rake/task'
|
10
10
|
|
11
|
+
begin
|
12
|
+
require 'rubocop/rake_task'
|
13
|
+
RuboCop::RakeTask.new
|
14
|
+
rescue LoadError
|
15
|
+
puts 'rubocop not present'
|
16
|
+
task 'rubocop'
|
17
|
+
end
|
18
|
+
|
11
19
|
namespace :spec do
|
12
20
|
desc 'Run unit specs'
|
13
21
|
RSpec::Core::RakeTask.new(:units) do |t|
|
@@ -21,22 +29,25 @@ namespace :spec do
|
|
21
29
|
end
|
22
30
|
|
23
31
|
cucumber_opts = "--format progress --tag @all_adapters,@#{BrokerConfig.current_adapter} --tag ~@wip"
|
24
|
-
cucumber_opts += ' --tag ~@no_ci' if ENV['CI']=='true' && ENV['ADAPTER'] && ENV['ADAPTER'].start_with?('bunny')
|
32
|
+
cucumber_opts += ' --tag ~@no_ci' if ENV['CI'] == 'true' && ENV['ADAPTER'] && ENV['ADAPTER'].start_with?('bunny')
|
25
33
|
Cucumber::Rake::Task.new(:features) do |t|
|
26
34
|
t.cucumber_opts = cucumber_opts
|
27
35
|
end
|
28
36
|
|
29
|
-
desc 'run all the specs'
|
30
37
|
task all: [:units, :integrations, :features]
|
38
|
+
end
|
31
39
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
+
desc 'run all the specs'
|
41
|
+
task spec: ['rabbitmq:reset_vhost', 'spec:all']
|
42
|
+
|
43
|
+
namespace :rabbitmq do
|
44
|
+
desc 'Reset rabbit vhost'
|
45
|
+
task :reset_vhost do
|
46
|
+
rabbitmqctl = ENV['CI'] ? 'sudo rabbitmqctl' : 'rabbitmqctl'
|
47
|
+
vhost = ENV['VHOST'] || 'message-driver-test'
|
48
|
+
system "#{rabbitmqctl} delete_vhost #{vhost}"
|
49
|
+
system "#{rabbitmqctl} add_vhost #{vhost}"
|
50
|
+
system "#{rabbitmqctl} set_permissions -p #{vhost} guest \".*\" \".*\" \".*\""
|
40
51
|
end
|
41
52
|
end
|
42
53
|
|
@@ -46,7 +57,7 @@ end
|
|
46
57
|
|
47
58
|
Coveralls::RakeTask.new
|
48
59
|
desc 'run with code coverage'
|
49
|
-
task ci: ['spec
|
60
|
+
task ci: ['spec', 'rubocop', 'coveralls:push']
|
50
61
|
|
51
62
|
namespace :undertest do
|
52
63
|
BrokerConfig.all_adapters.each do |adapter|
|
@@ -57,4 +68,4 @@ namespace :undertest do
|
|
57
68
|
end
|
58
69
|
end
|
59
70
|
|
60
|
-
task default: [
|
71
|
+
task default: [:spec, :rubocop]
|
data/ci/reset_vhost
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
#!/bin/bash
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
#vhost="message-driver-test-$ADAPTER-$(rbenv version-name)"
|
4
|
+
vhost="message-driver-test"
|
5
|
+
|
6
|
+
echo $vhost
|
7
|
+
|
8
|
+
rabbitmqctl delete_vhost $vhost
|
9
|
+
rabbitmqctl add_vhost $vhost
|
10
|
+
rabbitmqctl set_permissions -p $vhost guest ".*" ".*" ".*"
|
data/ci/travis_setup
CHANGED
data/features/.nav
CHANGED
@@ -13,7 +13,12 @@
|
|
13
13
|
- transactional_ack_consumers.feature
|
14
14
|
- prefetch_size.feature
|
15
15
|
- subscribe_with_a_block.feature
|
16
|
-
-
|
16
|
+
- middleware
|
17
|
+
- middleware_basics.feature
|
18
|
+
- middleware_ordering.feature
|
19
|
+
- middleware_parameters.feature
|
20
|
+
- middleware_with_blocks.feature
|
21
|
+
- amqp_specific_features (AMQP-Specific Features)
|
17
22
|
- declaring_amqp_destinations.feature
|
18
23
|
- binding_amqp_destinations.feature
|
19
24
|
- server_named_desitnations.feature
|
data/features/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.5.0 - 2014-09-17
|
4
|
+
|
5
|
+
* add support for checking consumer counts on a queue in bunny and in_memory adapters
|
6
|
+
* in_memory adapter now supports multiple subscribers per queue, and does a round-robin
|
7
|
+
through them when sending messages to consumers
|
8
|
+
* upgrade to rspec 3
|
9
|
+
* Middleware can now be used to automatically pre/post-process messages as they are published to
|
10
|
+
or consumed from a destination
|
11
|
+
|
3
12
|
## 0.4.0 - 2014-07-03
|
4
13
|
|
5
14
|
* require bunny 1.2.2 or later
|
@@ -10,7 +19,7 @@
|
|
10
19
|
* Support for handling multiple broker connections
|
11
20
|
* require bunny 1.1.3 or later
|
12
21
|
* make bunny connections as lazily initialized as possible
|
13
|
-
* bunny
|
22
|
+
* bunny transactions start lazily
|
14
23
|
|
15
24
|
## 0.2.2 - 2014-02-21
|
16
25
|
|