message-driver 0.3.0 → 0.4.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/.rubocop.yml +18 -0
- data/.rubocop_todo.yml +160 -0
- data/.travis.yml +5 -4
- data/CHANGELOG.md +5 -0
- data/Gemfile +9 -8
- data/Guardfile +14 -7
- data/README.md +2 -0
- data/Rakefile +16 -10
- data/examples/basic_producer_and_consumer/Gemfile +2 -2
- data/examples/basic_producer_and_consumer/common.rb +3 -3
- data/examples/basic_producer_and_consumer/consumer.rb +5 -5
- data/examples/basic_producer_and_consumer/producer.rb +7 -7
- data/features/CHANGELOG.md +5 -0
- data/features/message_consumers/transactional_ack_consumers.feature +1 -0
- data/features/rabbitmq_specific_features/publisher_acknowledgements.feature +51 -0
- data/features/step_definitions/error_handling_steps.rb +2 -2
- data/features/step_definitions/logging_steps.rb +4 -4
- data/features/step_definitions/message_consumers_steps.rb +8 -8
- data/features/step_definitions/rabbitmq_specific_steps.rb +10 -0
- data/features/step_definitions/steps.rb +15 -15
- data/features/support/env.rb +3 -0
- data/features/support/firewall_helper.rb +5 -6
- data/features/support/message_table_matcher.rb +3 -4
- data/features/support/no_error_matcher.rb +3 -3
- data/features/support/test_runner.rb +11 -3
- data/features/support/transforms.rb +1 -1
- data/lib/message-driver.rb +1 -1
- data/lib/message_driver.rb +0 -1
- data/lib/message_driver/adapters/base.rb +10 -10
- data/lib/message_driver/adapters/bunny_adapter.rb +57 -30
- data/lib/message_driver/adapters/in_memory_adapter.rb +4 -5
- data/lib/message_driver/adapters/stomp_adapter.rb +4 -6
- data/lib/message_driver/broker.rb +5 -4
- data/lib/message_driver/client.rb +6 -6
- data/lib/message_driver/destination.rb +2 -2
- data/lib/message_driver/errors.rb +1 -4
- data/lib/message_driver/logging.rb +1 -1
- data/lib/message_driver/message.rb +2 -2
- data/lib/message_driver/subscription.rb +1 -1
- data/lib/message_driver/version.rb +1 -1
- data/lib/{message_driver/vendor → vendor}/.document +0 -0
- data/lib/vendor/nesty.rb +1 -0
- data/lib/vendor/nesty/nested_error.rb +28 -0
- data/message-driver.gemspec +15 -14
- data/spec/integration/bunny/amqp_integration_spec.rb +43 -43
- data/spec/integration/bunny/bunny_adapter_spec.rb +117 -101
- data/spec/integration/in_memory/in_memory_adapter_spec.rb +35 -35
- data/spec/integration/stomp/stomp_adapter_spec.rb +42 -42
- data/spec/spec_helper.rb +4 -1
- data/spec/support/shared/adapter_examples.rb +7 -7
- data/spec/support/shared/client_ack_examples.rb +6 -6
- data/spec/support/shared/context_examples.rb +4 -4
- data/spec/support/shared/destination_examples.rb +10 -10
- data/spec/support/shared/subscription_examples.rb +29 -29
- data/spec/support/shared/transaction_examples.rb +10 -10
- data/spec/units/message_driver/adapters/base_spec.rb +19 -19
- data/spec/units/message_driver/broker_spec.rb +57 -58
- data/spec/units/message_driver/client_spec.rb +84 -84
- data/spec/units/message_driver/destination_spec.rb +4 -4
- data/spec/units/message_driver/message_spec.rb +19 -19
- data/spec/units/message_driver/subscription_spec.rb +4 -4
- data/test_lib/broker_config.rb +2 -2
- metadata +27 -6
- data/lib/message_driver/vendor/nesty.rb +0 -1
- data/lib/message_driver/vendor/nesty/nested_error.rb +0 -26
@@ -4,14 +4,14 @@ module MessageDriver::Destination
|
|
4
4
|
describe Base do
|
5
5
|
subject(:destination) { Base.new(nil, nil, nil, nil) }
|
6
6
|
|
7
|
-
it
|
7
|
+
it 'needs some real tests'
|
8
8
|
|
9
9
|
include_examples "doesn't support #message_count"
|
10
10
|
|
11
|
-
describe
|
12
|
-
it
|
11
|
+
describe '#subscribe' do
|
12
|
+
it 'raises an error' do
|
13
13
|
expect {
|
14
|
-
consumer = lambda do |
|
14
|
+
consumer = lambda do |_| end
|
15
15
|
destination.subscribe(&consumer)
|
16
16
|
}.to raise_error "#subscribe is not supported by #{destination.class}"
|
17
17
|
end
|
@@ -2,13 +2,13 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module MessageDriver::Message
|
4
4
|
describe Base do
|
5
|
-
describe
|
6
|
-
let(:body) {
|
5
|
+
describe '#initialize' do
|
6
|
+
let(:body) { 'The message body' }
|
7
7
|
let(:headers) { { foo: :bar, bar: :baz} }
|
8
8
|
let(:properties) { {persistent: true, client_ack: true} }
|
9
|
-
let(:ctx) { double(
|
9
|
+
let(:ctx) { double('adapter_context') }
|
10
10
|
|
11
|
-
context
|
11
|
+
context 'sets the body, header and properites on initialization' do
|
12
12
|
subject { described_class.new(ctx, body, headers, properties) }
|
13
13
|
|
14
14
|
its(:ctx) { should be(ctx) }
|
@@ -19,23 +19,23 @@ module MessageDriver::Message
|
|
19
19
|
end
|
20
20
|
|
21
21
|
let(:logger) { MessageDriver.logger }
|
22
|
-
let(:ctx) { double(
|
23
|
-
let(:options) { double(
|
24
|
-
subject(:message) { described_class.new(ctx,
|
22
|
+
let(:ctx) { double('adapter_context') }
|
23
|
+
let(:options) { double('options') }
|
24
|
+
subject(:message) { described_class.new(ctx, 'body', {}, {}) }
|
25
25
|
|
26
|
-
describe
|
26
|
+
describe '#ack' do
|
27
27
|
before do
|
28
28
|
allow(ctx).to receive(:ack_message)
|
29
29
|
end
|
30
|
-
context
|
30
|
+
context 'when the adapter supports client acks' do
|
31
31
|
before do
|
32
32
|
allow(ctx).to receive(:supports_client_acks?) { true }
|
33
33
|
end
|
34
|
-
it
|
34
|
+
it 'calls #ack_message with the message' do
|
35
35
|
subject.ack
|
36
36
|
expect(ctx).to have_received(:ack_message).with(subject, {})
|
37
37
|
end
|
38
|
-
it
|
38
|
+
it 'passes the supplied options to ack_message' do
|
39
39
|
subject.ack(options)
|
40
40
|
expect(ctx).to have_received(:ack_message).with(subject, options)
|
41
41
|
end
|
@@ -48,27 +48,27 @@ module MessageDriver::Message
|
|
48
48
|
subject.ack
|
49
49
|
expect(ctx).not_to have_received(:ack_message)
|
50
50
|
end
|
51
|
-
it
|
51
|
+
it 'logs a warning' do
|
52
52
|
allow(logger).to receive(:debug)
|
53
53
|
subject.ack
|
54
|
-
expect(logger).to have_received(:debug).with(
|
54
|
+
expect(logger).to have_received(:debug).with('this adapter does not support client acks')
|
55
55
|
end
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
-
describe
|
59
|
+
describe '#nack' do
|
60
60
|
before do
|
61
61
|
allow(ctx).to receive(:nack_message)
|
62
62
|
end
|
63
|
-
context
|
63
|
+
context 'when the adapter supports client nacks' do
|
64
64
|
before do
|
65
65
|
allow(ctx).to receive(:supports_client_acks?) { true }
|
66
66
|
end
|
67
|
-
it
|
67
|
+
it 'calls #nack_message with the message' do
|
68
68
|
subject.nack
|
69
69
|
expect(ctx).to have_received(:nack_message).with(subject, {})
|
70
70
|
end
|
71
|
-
it
|
71
|
+
it 'passes the supplied options to nack_message' do
|
72
72
|
subject.nack(options)
|
73
73
|
expect(ctx).to have_received(:nack_message).with(subject, options)
|
74
74
|
end
|
@@ -81,10 +81,10 @@ module MessageDriver::Message
|
|
81
81
|
subject.nack
|
82
82
|
expect(ctx).not_to have_received(:nack_message)
|
83
83
|
end
|
84
|
-
it
|
84
|
+
it 'logs a warning' do
|
85
85
|
allow(logger).to receive(:debug)
|
86
86
|
subject.nack
|
87
|
-
expect(logger).to have_received(:debug).with(
|
87
|
+
expect(logger).to have_received(:debug).with('this adapter does not support client acks')
|
88
88
|
end
|
89
89
|
end
|
90
90
|
end
|
@@ -4,7 +4,7 @@ module MessageDriver::Subscription
|
|
4
4
|
describe Base do
|
5
5
|
let(:adapter) { double(MessageDriver::Adapters::Base) }
|
6
6
|
let(:destination) { double(MessageDriver::Destination::Base) }
|
7
|
-
let(:consumer) { double(
|
7
|
+
let(:consumer) { double('a consumer') }
|
8
8
|
subject(:subscription) { Base.new(adapter, destination, consumer) }
|
9
9
|
|
10
10
|
it "sets it's adapter, destination and consumer on instansiation" do
|
@@ -13,11 +13,11 @@ module MessageDriver::Subscription
|
|
13
13
|
expect(subscription.consumer).to eq(consumer)
|
14
14
|
end
|
15
15
|
|
16
|
-
describe
|
17
|
-
it
|
16
|
+
describe '#unsubscribe' do
|
17
|
+
it 'raises an error' do
|
18
18
|
expect {
|
19
19
|
subscription.unsubscribe
|
20
|
-
}.to raise_error(
|
20
|
+
}.to raise_error('must be implemented in subclass')
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
data/test_lib/broker_config.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
class BrokerConfig
|
2
2
|
class << self
|
3
3
|
def config
|
4
|
-
adapter_file = File.expand_path(
|
5
|
-
@adapter, @version = (ENV['ADAPTER'] || (File.exist?(adapter_file)
|
4
|
+
adapter_file = File.expand_path('../../.adapter_under_test', __FILE__)
|
5
|
+
@adapter, @version = (ENV['ADAPTER'] || (File.exist?(adapter_file) ? File.read(adapter_file).chomp : '')).split(':')
|
6
6
|
case @adapter
|
7
7
|
when 'bunny'
|
8
8
|
{
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: message-driver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Campbell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rubocop
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
description: Easy message queues for ruby using AMQ, STOMP and others
|
70
84
|
email:
|
71
85
|
- message-driver@soupmatt.com
|
@@ -76,6 +90,8 @@ files:
|
|
76
90
|
- ".gitignore"
|
77
91
|
- ".relish"
|
78
92
|
- ".rspec"
|
93
|
+
- ".rubocop.yml"
|
94
|
+
- ".rubocop_todo.yml"
|
79
95
|
- ".travis.yml"
|
80
96
|
- CHANGELOG.md
|
81
97
|
- Gemfile
|
@@ -115,10 +131,12 @@ files:
|
|
115
131
|
- features/publishing_a_message.feature
|
116
132
|
- features/publishing_with_transactions.feature
|
117
133
|
- features/rabbitmq_specific_features/dead_letter_queueing.feature
|
134
|
+
- features/rabbitmq_specific_features/publisher_acknowledgements.feature
|
118
135
|
- features/step_definitions/dynamic_destinations_steps.rb
|
119
136
|
- features/step_definitions/error_handling_steps.rb
|
120
137
|
- features/step_definitions/logging_steps.rb
|
121
138
|
- features/step_definitions/message_consumers_steps.rb
|
139
|
+
- features/step_definitions/rabbitmq_specific_steps.rb
|
122
140
|
- features/step_definitions/steps.rb
|
123
141
|
- features/support/broker_config_helper.rb
|
124
142
|
- features/support/env.rb
|
@@ -140,10 +158,10 @@ files:
|
|
140
158
|
- lib/message_driver/logging.rb
|
141
159
|
- lib/message_driver/message.rb
|
142
160
|
- lib/message_driver/subscription.rb
|
143
|
-
- lib/message_driver/vendor/.document
|
144
|
-
- lib/message_driver/vendor/nesty.rb
|
145
|
-
- lib/message_driver/vendor/nesty/nested_error.rb
|
146
161
|
- lib/message_driver/version.rb
|
162
|
+
- lib/vendor/.document
|
163
|
+
- lib/vendor/nesty.rb
|
164
|
+
- lib/vendor/nesty/nested_error.rb
|
147
165
|
- message-driver.gemspec
|
148
166
|
- spec/integration/bunny/amqp_integration_spec.rb
|
149
167
|
- spec/integration/bunny/bunny_adapter_spec.rb
|
@@ -184,7 +202,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
184
202
|
version: '0'
|
185
203
|
requirements: []
|
186
204
|
rubyforge_project:
|
187
|
-
rubygems_version: 2.2.
|
205
|
+
rubygems_version: 2.2.2
|
188
206
|
signing_key:
|
189
207
|
specification_version: 4
|
190
208
|
summary: Easy message queues for ruby
|
@@ -215,10 +233,12 @@ test_files:
|
|
215
233
|
- features/publishing_a_message.feature
|
216
234
|
- features/publishing_with_transactions.feature
|
217
235
|
- features/rabbitmq_specific_features/dead_letter_queueing.feature
|
236
|
+
- features/rabbitmq_specific_features/publisher_acknowledgements.feature
|
218
237
|
- features/step_definitions/dynamic_destinations_steps.rb
|
219
238
|
- features/step_definitions/error_handling_steps.rb
|
220
239
|
- features/step_definitions/logging_steps.rb
|
221
240
|
- features/step_definitions/message_consumers_steps.rb
|
241
|
+
- features/step_definitions/rabbitmq_specific_steps.rb
|
222
242
|
- features/step_definitions/steps.rb
|
223
243
|
- features/support/broker_config_helper.rb
|
224
244
|
- features/support/env.rb
|
@@ -245,3 +265,4 @@ test_files:
|
|
245
265
|
- spec/units/message_driver/destination_spec.rb
|
246
266
|
- spec/units/message_driver/message_spec.rb
|
247
267
|
- spec/units/message_driver/subscription_spec.rb
|
268
|
+
has_rdoc:
|
@@ -1 +0,0 @@
|
|
1
|
-
require "nesty/nested_error"
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module Nesty
|
2
|
-
module NestedError
|
3
|
-
attr_reader :nested, :raw_backtrace
|
4
|
-
|
5
|
-
def initialize(msg = nil, nested)
|
6
|
-
super(msg)
|
7
|
-
@nested = nested
|
8
|
-
end
|
9
|
-
|
10
|
-
def set_backtrace(backtrace)
|
11
|
-
@raw_backtrace = backtrace
|
12
|
-
if nested
|
13
|
-
backtrace = backtrace - nested_raw_backtrace
|
14
|
-
backtrace += ["#{nested.backtrace.first}: #{nested.message} (#{nested.class.name})"]
|
15
|
-
backtrace += nested.backtrace[1..-1] || []
|
16
|
-
end
|
17
|
-
super(backtrace)
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
def nested_raw_backtrace
|
23
|
-
nested.respond_to?(:raw_backtrace) ? nested.raw_backtrace : nested.backtrace
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|