freddy-jruby 0.5.6 → 0.6.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/freddy.gemspec +2 -2
- data/lib/freddy/consumers.rb +6 -5
- data/lib/freddy/producers.rb +8 -0
- data/lib/freddy/producers/reply_producer.rb +1 -1
- data/lib/freddy/producers/send_and_forget_producer.rb +1 -1
- data/lib/freddy/producers/send_and_wait_response_producer.rb +8 -13
- data/spec/integration/logging_spec.rb +9 -2
- metadata +2 -7
- data/lib/freddy/utils.rb +0 -30
- data/spec/freddy/consumers_spec.rb +0 -43
- data/spec/freddy/utils_spec.rb +0 -83
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bcd002e379a1f9326e97c95617e8027065403fcc
|
4
|
+
data.tar.gz: 2982e7fae24ee6ba8e763be8426d86806406e2da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d4f642d80cbb81bd9150c1cac643d4a919b18ada01cc40ad42e3c26cbc394d1f3491ac11a529243da39aeec7c1e4cc5c3d66699178ed4dc29cf6fdf4b36788be
|
7
|
+
data.tar.gz: d02a32438c611aea42a2d242b7d59d1abfa73fb42a7ac1f17ebb3542059eccffb341b6bc078a822900f9112ee30d6e9615a41d52322fdf88478b7e91681bf113
|
data/freddy.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
|
|
8
8
|
else
|
9
9
|
spec.name = "freddy"
|
10
10
|
end
|
11
|
-
spec.version = '0.
|
11
|
+
spec.version = '0.6.0'
|
12
12
|
spec.authors = ["Urmas Talimaa"]
|
13
13
|
spec.email = ["urmas.talimaa@gmail.com"]
|
14
14
|
spec.description = %q{Messaging API}
|
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.add_dependency 'march_hare', '~> 2.12.0'
|
28
28
|
spec.add_dependency 'symbolizer'
|
29
29
|
else
|
30
|
-
spec.add_dependency "bunny", "2.
|
30
|
+
spec.add_dependency "bunny", "~> 2.5.0"
|
31
31
|
spec.add_dependency "oj", "~> 2.13"
|
32
32
|
end
|
33
33
|
|
data/lib/freddy/consumers.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
class Freddy
|
2
2
|
module Consumers
|
3
3
|
def self.log_receive_event(logger, queue_name, delivery)
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
logger.debug(
|
5
|
+
message: 'Received message',
|
6
|
+
queue: queue_name,
|
7
|
+
payload: delivery.payload,
|
8
|
+
correlation_id: delivery.correlation_id
|
9
|
+
)
|
9
10
|
end
|
10
11
|
end
|
11
12
|
end
|
data/lib/freddy/producers.rb
CHANGED
@@ -9,7 +9,7 @@ class Freddy
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def produce(destination, payload, properties)
|
12
|
-
@logger
|
12
|
+
Producers.log_send_event(@logger, payload, destination)
|
13
13
|
|
14
14
|
properties = properties.merge(
|
15
15
|
routing_key: destination, content_type: CONTENT_TYPE
|
@@ -10,7 +10,7 @@ class Freddy
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def produce(destination, payload, properties)
|
13
|
-
@logger
|
13
|
+
Producers.log_send_event(@logger, payload, destination)
|
14
14
|
|
15
15
|
properties = properties.merge(routing_key: destination, content_type: CONTENT_TYPE)
|
16
16
|
json_payload = Payload.dump(payload)
|
@@ -45,9 +45,13 @@ class Freddy
|
|
45
45
|
)
|
46
46
|
json_payload = Payload.dump(payload)
|
47
47
|
|
48
|
-
@logger.debug
|
49
|
-
|
50
|
-
|
48
|
+
@logger.debug(
|
49
|
+
message: 'Publishing request',
|
50
|
+
queue: destination,
|
51
|
+
payload: payload,
|
52
|
+
response_queue: @response_queue.name,
|
53
|
+
correlation_id: correlation_id
|
54
|
+
)
|
51
55
|
|
52
56
|
# Connection adapters handle thread safety for #publish themselves. No
|
53
57
|
# need to lock these.
|
@@ -63,10 +67,9 @@ class Freddy
|
|
63
67
|
if request = @request_manager.delete(correlation_id)
|
64
68
|
process_response(request, delivery)
|
65
69
|
else
|
66
|
-
|
70
|
+
message = "Got rpc response for correlation_id #{correlation_id} "\
|
67
71
|
"but there is no requester"
|
68
72
|
@logger.warn message
|
69
|
-
Utils.notify 'NoRequesterForResponse', warning, correlation_id: correlation_id
|
70
73
|
end
|
71
74
|
end
|
72
75
|
|
@@ -81,14 +84,6 @@ class Freddy
|
|
81
84
|
@logger.warn "Request timed out waiting response from #{destination}"\
|
82
85
|
", correlation id #{correlation_id}"
|
83
86
|
|
84
|
-
Utils.notify 'RequestTimeout',
|
85
|
-
"Request timed out waiting for response from #{destination}",
|
86
|
-
{
|
87
|
-
correlation_id: correlation_id,
|
88
|
-
destination: destination,
|
89
|
-
timeout_in_seconds: timeout_in_seconds
|
90
|
-
}
|
91
|
-
|
92
87
|
@request_manager.delete(correlation_id)
|
93
88
|
end
|
94
89
|
end
|
@@ -24,14 +24,21 @@ describe 'Logging' do
|
|
24
24
|
it 'logs all consumed messages' do
|
25
25
|
expect(logger1).to have_received(:info).with(/Listening for requests on \S+/)
|
26
26
|
expect(logger1).to have_received(:debug).with(
|
27
|
-
|
27
|
+
message: 'Received message',
|
28
|
+
queue: destination,
|
29
|
+
payload: payload,
|
30
|
+
correlation_id: anything
|
28
31
|
)
|
29
32
|
end
|
30
33
|
|
31
34
|
it 'logs all produced messages' do
|
32
35
|
expect(logger2).to have_received(:debug).with(/Consuming messages on \S+/)
|
33
36
|
expect(logger2).to have_received(:debug).with(
|
34
|
-
|
37
|
+
message: 'Publishing request',
|
38
|
+
queue: destination,
|
39
|
+
payload: payload,
|
40
|
+
response_queue: anything,
|
41
|
+
correlation_id: anything
|
35
42
|
)
|
36
43
|
end
|
37
44
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: freddy-jruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Urmas Talimaa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-11-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -134,15 +134,12 @@ files:
|
|
134
134
|
- lib/freddy/responder_handler.rb
|
135
135
|
- lib/freddy/sync_response_container.rb
|
136
136
|
- lib/freddy/timeout_error.rb
|
137
|
-
- lib/freddy/utils.rb
|
138
137
|
- spec/freddy/consumers/respond_to_consumer_spec.rb
|
139
|
-
- spec/freddy/consumers_spec.rb
|
140
138
|
- spec/freddy/error_response_spec.rb
|
141
139
|
- spec/freddy/freddy_spec.rb
|
142
140
|
- spec/freddy/message_handler_spec.rb
|
143
141
|
- spec/freddy/responder_handler_spec.rb
|
144
142
|
- spec/freddy/sync_response_container_spec.rb
|
145
|
-
- spec/freddy/utils_spec.rb
|
146
143
|
- spec/integration/concurrency_spec.rb
|
147
144
|
- spec/integration/logging_spec.rb
|
148
145
|
- spec/integration/reply_spec.rb
|
@@ -173,13 +170,11 @@ specification_version: 4
|
|
173
170
|
summary: API for inter-application messaging supporting acknowledgements and request-response
|
174
171
|
test_files:
|
175
172
|
- spec/freddy/consumers/respond_to_consumer_spec.rb
|
176
|
-
- spec/freddy/consumers_spec.rb
|
177
173
|
- spec/freddy/error_response_spec.rb
|
178
174
|
- spec/freddy/freddy_spec.rb
|
179
175
|
- spec/freddy/message_handler_spec.rb
|
180
176
|
- spec/freddy/responder_handler_spec.rb
|
181
177
|
- spec/freddy/sync_response_container_spec.rb
|
182
|
-
- spec/freddy/utils_spec.rb
|
183
178
|
- spec/integration/concurrency_spec.rb
|
184
179
|
- spec/integration/logging_spec.rb
|
185
180
|
- spec/integration/reply_spec.rb
|
data/lib/freddy/utils.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
class Freddy
|
2
|
-
class Utils
|
3
|
-
def self.format_exception(exception)
|
4
|
-
message = exception.message
|
5
|
-
backtrace = exception.backtrace.join("\n")
|
6
|
-
|
7
|
-
"#{message}\n#{backtrace}"
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.notify(name, message, parameters={})
|
11
|
-
return unless defined?(Airbrake)
|
12
|
-
|
13
|
-
Airbrake.notify_or_ignore(
|
14
|
-
error_class: name,
|
15
|
-
error_message: message,
|
16
|
-
cgi_data: ENV.to_hash,
|
17
|
-
parameters: parameters
|
18
|
-
)
|
19
|
-
end
|
20
|
-
|
21
|
-
def self.notify_exception(exception, parameters={})
|
22
|
-
return unless defined?(Airbrake)
|
23
|
-
|
24
|
-
Airbrake.notify_or_ignore(exception,
|
25
|
-
cgi_data: ENV.to_hash,
|
26
|
-
parameters: parameters
|
27
|
-
)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Freddy::Consumers do
|
4
|
-
describe '.log_receive_event' do
|
5
|
-
subject { described_class.log_receive_event(logger, queue_name, delivery) }
|
6
|
-
|
7
|
-
let(:queue_name) { 'salemove' }
|
8
|
-
let(:delivery) do
|
9
|
-
instance_double(Freddy::Delivery,
|
10
|
-
payload: {key: 'value'},
|
11
|
-
correlation_id: 'a1b2'
|
12
|
-
)
|
13
|
-
end
|
14
|
-
|
15
|
-
context 'when configured with logasm logger' do
|
16
|
-
let(:logger) { logasm_class.new }
|
17
|
-
let(:logasm_class) { Class.new }
|
18
|
-
|
19
|
-
before do
|
20
|
-
stub_const('::Logasm', logasm_class)
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'logs the received event' do
|
24
|
-
expect(logger).to receive(:debug).with('Received message',
|
25
|
-
queue: 'salemove', payload: {key: 'value'}, correlation_id: 'a1b2'
|
26
|
-
)
|
27
|
-
|
28
|
-
subject
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
context 'when configured with regular logger' do
|
33
|
-
let(:logger) { Logger.new('/dev/null') }
|
34
|
-
|
35
|
-
it 'logs the received event' do
|
36
|
-
expect(logger).to receive(:debug)
|
37
|
-
.with('Received message on salemove with payload {:key=>"value"} with correlation_id a1b2')
|
38
|
-
|
39
|
-
subject
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
data/spec/freddy/utils_spec.rb
DELETED
@@ -1,83 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Freddy::Utils do
|
4
|
-
describe '.format_exception' do
|
5
|
-
subject { described_class.format_exception(exception) }
|
6
|
-
|
7
|
-
let(:exception) { double(backtrace: backtrace, message: message) }
|
8
|
-
let(:message) { 'format exception test' }
|
9
|
-
let(:backtrace) { ['line1', 'line2', 'line3'] }
|
10
|
-
|
11
|
-
it 'format the exception' do
|
12
|
-
should eq "format exception test\n" \
|
13
|
-
"line1\n" \
|
14
|
-
"line2\n" \
|
15
|
-
'line3'
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
describe '.notify' do
|
20
|
-
subject { described_class.notify(error_class, error_message, parameters) }
|
21
|
-
|
22
|
-
let(:env_attributes) { double }
|
23
|
-
let(:error_class) { double }
|
24
|
-
let(:error_message) { double }
|
25
|
-
let(:parameters) { double }
|
26
|
-
|
27
|
-
context 'when Airbrake is defined' do
|
28
|
-
let(:airbrake) { double }
|
29
|
-
|
30
|
-
before do
|
31
|
-
allow(ENV).to receive(:to_hash) { env_attributes }
|
32
|
-
stub_const('::Airbrake', airbrake)
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'notifies airbrake' do
|
36
|
-
expect(airbrake).to receive(:notify_or_ignore).with(
|
37
|
-
error_class: error_class,
|
38
|
-
error_message: error_message,
|
39
|
-
cgi_data: env_attributes,
|
40
|
-
parameters: parameters
|
41
|
-
)
|
42
|
-
|
43
|
-
subject
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
context 'when Airbrake is not defined' do
|
48
|
-
it 'does nothing' do
|
49
|
-
should eq(nil)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe '.notify_exception' do
|
55
|
-
subject { described_class.notify_exception(exception, {a: 'b'}) }
|
56
|
-
|
57
|
-
let(:exception) { double }
|
58
|
-
|
59
|
-
context 'when Airbrake is defined' do
|
60
|
-
let(:airbrake) { double }
|
61
|
-
|
62
|
-
before do
|
63
|
-
stub_const('::Airbrake', airbrake)
|
64
|
-
end
|
65
|
-
|
66
|
-
it 'notifies airbrake' do
|
67
|
-
expect(airbrake).to receive(:notify_or_ignore) do |ex, content|
|
68
|
-
expect(ex).to eq(exception)
|
69
|
-
expect(content[:cgi_data]).to be_instance_of(Hash)
|
70
|
-
expect(content[:parameters]).to eq(a: 'b')
|
71
|
-
end
|
72
|
-
|
73
|
-
subject
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
context 'when Airbrake is not defined' do
|
78
|
-
it 'does nothing' do
|
79
|
-
should eq(nil)
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|