freddy 2.2.3 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6be4b4b6d953f837c24d9c55f990e4e75872c13e6c11007d8f61ed335681faa2
4
- data.tar.gz: 863042876b2ed673001cd53f296567ad91420864b96cbed5ed02fb6fd7820b22
3
+ metadata.gz: f2dcf734ec94fc66e09be25bed73991a329b9dc3bb112664cd762c45dc9e0e7c
4
+ data.tar.gz: 5d929520fbf9c43857b3e8f1d97559402b0028169b657ec9a967eba36a395551
5
5
  SHA512:
6
- metadata.gz: 002f901659f670dc1561db4ddc97d10e5a9d9b689369897628f1844fa0ffc65f759493fe96bc7541f6b7c204427bb584133fa3b306e19752b133a42b1b077a52
7
- data.tar.gz: d2383b11b79800aabf6a0f0fe52a51f900a12c5ebcf17e64be8ca5e31243bd183dadb662e17c14416b0ee3e7d5ad26cbe00e067f7c39b709133a019082358fe8
6
+ metadata.gz: 33b5603b0775342f4271034dc083b654c5031cee2bf61e6a1d068afd1abe9e12e86579c85497016cb6f17085a2dbeb7efaa49a3957aafb391189e6d596795cd7
7
+ data.tar.gz: 0ea71e0dd8abdc975477f89b9e1ca1d650ff50ab0f9f9d2e4bf65b49af94e35ee545359eb8779a6e4723fbab3dede9676baa646fb3c6b95b06649fb9653fc482
@@ -11,7 +11,7 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  strategy:
13
13
  matrix:
14
- ruby-version: ['2.6']
14
+ ruby-version: ['2.7']
15
15
  services:
16
16
  rabbitmq:
17
17
  image: rabbitmq
@@ -27,5 +27,6 @@ jobs:
27
27
  with:
28
28
  ruby-version: ${{ matrix.ruby-version }}
29
29
  bundler-cache: true
30
+ cache-version: 2
30
31
  - name: Run lint & tests
31
32
  run: bundle exec rake
data/.gitignore CHANGED
@@ -1,5 +1,4 @@
1
1
  .bundle/
2
- Gemfile.lock
3
2
  pkg
4
3
  .tags
5
4
  .tags1
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.6
1
+ 2.7
data/Gemfile.lock ADDED
@@ -0,0 +1,102 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ freddy (2.4.0)
5
+ bunny (~> 2.11)
6
+ oj (~> 3.6)
7
+ opentelemetry-api (~> 1.0.0.rc3)
8
+ opentelemetry-semantic_conventions (~> 1.0)
9
+ thread (~> 0.1)
10
+ zlib (~> 1.1)
11
+
12
+ GEM
13
+ remote: https://rubygems.org/
14
+ specs:
15
+ amq-protocol (2.3.2)
16
+ ast (2.4.2)
17
+ bunny (2.19.0)
18
+ amq-protocol (~> 2.3, >= 2.3.1)
19
+ sorted_set (~> 1, >= 1.0.2)
20
+ coderay (1.1.3)
21
+ concurrent-ruby (1.1.9)
22
+ diff-lcs (1.4.4)
23
+ hamster (3.0.0)
24
+ concurrent-ruby (~> 1.0)
25
+ method_source (1.0.0)
26
+ oj (3.13.11)
27
+ opentelemetry-api (1.0.0.rc3)
28
+ opentelemetry-common (0.19.1)
29
+ opentelemetry-api (~> 1.0.0.rc3)
30
+ opentelemetry-instrumentation-base (0.18.2)
31
+ opentelemetry-api (~> 1.0.0.rc3)
32
+ opentelemetry-sdk (1.0.0.rc3)
33
+ opentelemetry-api (~> 1.0.0.rc3)
34
+ opentelemetry-common (~> 0.19.1)
35
+ opentelemetry-instrumentation-base (~> 0.18.2)
36
+ opentelemetry-semantic_conventions
37
+ opentelemetry-semantic_conventions (1.6.0)
38
+ opentelemetry-api (~> 1.0.0.rc3)
39
+ parallel (1.20.1)
40
+ parser (3.0.2.0)
41
+ ast (~> 2.4.1)
42
+ pry (0.14.1)
43
+ coderay (~> 1.1)
44
+ method_source (~> 1.0)
45
+ rainbow (3.0.0)
46
+ rake (13.0.6)
47
+ rbtree (0.4.5)
48
+ regexp_parser (2.1.1)
49
+ rexml (3.2.5)
50
+ rspec (3.10.0)
51
+ rspec-core (~> 3.10.0)
52
+ rspec-expectations (~> 3.10.0)
53
+ rspec-mocks (~> 3.10.0)
54
+ rspec-core (3.10.1)
55
+ rspec-support (~> 3.10.0)
56
+ rspec-expectations (3.10.1)
57
+ diff-lcs (>= 1.2.0, < 2.0)
58
+ rspec-support (~> 3.10.0)
59
+ rspec-mocks (3.10.2)
60
+ diff-lcs (>= 1.2.0, < 2.0)
61
+ rspec-support (~> 3.10.0)
62
+ rspec-support (3.10.2)
63
+ rubocop (1.19.0)
64
+ parallel (~> 1.10)
65
+ parser (>= 3.0.0.0)
66
+ rainbow (>= 2.2.2, < 4.0)
67
+ regexp_parser (>= 1.8, < 3.0)
68
+ rexml
69
+ rubocop-ast (>= 1.9.1, < 2.0)
70
+ ruby-progressbar (~> 1.7)
71
+ unicode-display_width (>= 1.4.0, < 3.0)
72
+ rubocop-ast (1.10.0)
73
+ parser (>= 3.0.1.1)
74
+ rubocop-rspec (2.4.0)
75
+ rubocop (~> 1.0)
76
+ rubocop-ast (>= 1.1.0)
77
+ ruby-progressbar (1.11.0)
78
+ set (1.0.2)
79
+ sorted_set (1.0.3)
80
+ rbtree
81
+ set (~> 1.0)
82
+ thread (0.2.2)
83
+ unicode-display_width (2.0.0)
84
+ zlib (1.1.0)
85
+
86
+ PLATFORMS
87
+ ruby
88
+ x86_64-linux
89
+
90
+ DEPENDENCIES
91
+ bundler
92
+ freddy!
93
+ hamster (~> 3.0)
94
+ opentelemetry-sdk (~> 1.0.0.rc3)
95
+ pry
96
+ rake
97
+ rspec
98
+ rubocop (~> 1.19)
99
+ rubocop-rspec (~> 2.4)
100
+
101
+ BUNDLED WITH
102
+ 2.3.9
data/freddy.gemspec CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
  spec.summary = 'API for inter-application messaging supporting acknowledgements and request-response'
12
12
  spec.license = 'MIT'
13
13
  spec.homepage = 'https://github.com/salemove/freddy'
14
- spec.required_ruby_version = '>= 2.6'
14
+ spec.required_ruby_version = '>= 2.7'
15
15
 
16
16
  spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
@@ -6,8 +6,14 @@ require 'forwardable'
6
6
  class Freddy
7
7
  module Adapters
8
8
  class BunnyAdapter
9
+ DEFAULT_OPTIONS = {
10
+ connection_timeout: 5,
11
+ read_timeout: 5,
12
+ write_timeout: 5
13
+ }.freeze
14
+
9
15
  def self.connect(config)
10
- bunny = Bunny.new(config)
16
+ bunny = Bunny.new(DEFAULT_OPTIONS.merge(config))
11
17
  bunny.start
12
18
  new(bunny)
13
19
  end
@@ -47,7 +47,7 @@ class Freddy
47
47
 
48
48
  def process_message(_queue, delivery)
49
49
  @consume_thread_pool.process do
50
- delivery.in_span(force_follows_from: true) do
50
+ delivery.in_span do
51
51
  yield delivery.payload, delivery.routing_key
52
52
  @channel.acknowledge(delivery.tag)
53
53
  end
@@ -24,28 +24,13 @@ class Freddy
24
24
  @metadata.reply_to
25
25
  end
26
26
 
27
- def in_span(force_follows_from: false, &block)
27
+ def in_span(&block)
28
28
  name = "#{Tracing.span_destination(@exchange, @routing_key)} process"
29
29
  kind = OpenTelemetry::Trace::SpanKind::CONSUMER
30
30
  producer_context = OpenTelemetry.propagation.extract(@metadata[:headers] || {})
31
31
 
32
- if force_follows_from
33
- producer_span_context = OpenTelemetry::Trace.current_span(producer_context).context
34
-
35
- links = []
36
- links << OpenTelemetry::Trace::Link.new(producer_span_context) if producer_span_context.valid?
37
-
38
- root_span = Freddy.tracer.start_root_span(name, attributes: span_attributes, links: links, kind: kind)
39
-
40
- OpenTelemetry::Trace.with_span(root_span) do
41
- block.call
42
- ensure
43
- root_span.finish
44
- end
45
- else
46
- OpenTelemetry::Context.with_current(producer_context) do
47
- Freddy.tracer.in_span(name, attributes: span_attributes, kind: kind, &block)
48
- end
32
+ OpenTelemetry::Context.with_current(producer_context) do
33
+ Freddy.tracer.in_span(name, attributes: span_attributes, kind: kind, &block)
49
34
  end
50
35
  end
51
36
 
@@ -22,7 +22,7 @@ class Freddy
22
22
  routing_key: routing_key,
23
23
  content_type: CONTENT_TYPE
24
24
  )
25
- Tracing.inject_tracing_information_to_properties!(properties)
25
+ Tracing.inject_tracing_information_to_properties!(properties, span)
26
26
 
27
27
  @exchange.publish Payload.dump(payload), properties
28
28
  ensure
@@ -18,7 +18,7 @@ class Freddy
18
18
  routing_key: routing_key,
19
19
  content_type: CONTENT_TYPE
20
20
  )
21
- Tracing.inject_tracing_information_to_properties!(properties)
21
+ Tracing.inject_tracing_information_to_properties!(properties, span)
22
22
 
23
23
  json_payload = Freddy::Encoding.compress(
24
24
  Payload.dump(payload),
@@ -49,7 +49,7 @@ class Freddy
49
49
  correlation_id: correlation_id, reply_to: @response_queue.name,
50
50
  mandatory: true, type: 'request'
51
51
  )
52
- Tracing.inject_tracing_information_to_properties!(properties)
52
+ Tracing.inject_tracing_information_to_properties!(properties, span)
53
53
 
54
54
  # Connection adapters handle thread safety for #publish themselves. No
55
55
  # need to lock this.
@@ -39,9 +39,10 @@ class Freddy
39
39
  end
40
40
  end
41
41
 
42
- def self.inject_tracing_information_to_properties!(properties)
42
+ def self.inject_tracing_information_to_properties!(properties, span)
43
+ context = OpenTelemetry::Trace.context_with_span(span)
43
44
  properties[:headers] ||= {}
44
- OpenTelemetry.propagation.inject(properties[:headers])
45
+ OpenTelemetry.propagation.inject(properties[:headers], context: context)
45
46
  end
46
47
  end
47
48
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Freddy
4
- VERSION = '2.2.3'
4
+ VERSION = '2.4.0'
5
5
  end
@@ -132,10 +132,8 @@ describe 'Tracing' do
132
132
  freddy.close
133
133
  end
134
134
 
135
- it 'creates a new trace and links it with the sender' do
136
- initiator_span = nil
135
+ it 'continues the existing trace' do
137
136
  Freddy.tracer.in_span('test') do
138
- initiator_span = current_span_attributes
139
137
  freddy.deliver(destination, {})
140
138
  end
141
139
  wait_for { @deliver_span }
@@ -147,10 +145,7 @@ describe 'Tracing' do
147
145
  /freddy-topic\.\w+ process/
148
146
  ])
149
147
 
150
- expect(@deliver_span.fetch(:trace_id)).not_to eq(initiator_span.fetch(:trace_id))
151
-
152
- link = @deliver_span.fetch(:links)[0]
153
- expect(link.span_context.trace_id).to eq(initiator_span.fetch(:trace_id))
148
+ expect(exporter.finished_spans.map(&:trace_id).uniq.count).to eq(1)
154
149
  end
155
150
  end
156
151
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: freddy
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.3
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Glia TechMovers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-11 00:00:00.000000000 Z
11
+ date: 2022-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -137,6 +137,7 @@ files:
137
137
  - ".ruby-gemset"
138
138
  - ".ruby-version"
139
139
  - Gemfile
140
+ - Gemfile.lock
140
141
  - LICENCE.txt
141
142
  - README.md
142
143
  - Rakefile
@@ -190,7 +191,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
190
191
  requirements:
191
192
  - - ">="
192
193
  - !ruby/object:Gem::Version
193
- version: '2.6'
194
+ version: '2.7'
194
195
  required_rubygems_version: !ruby/object:Gem::Requirement
195
196
  requirements:
196
197
  - - ">="