freddy 2.2.3 → 2.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 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
  - - ">="