Skip to content

Commit ffc7349

Browse files
ci: Add Tests for Ruby 3.4 (#1803)
* feat: Suppport 3.1 Min Version * ci: Add test for Ruby 3.4 * squash: relax minitest deps * squash: update some tests * squash: fix more mocks * squash: fix tests * squash: linter * squash: Thrift needs base64 * squash: webmock base64 * squash: make linter happy * squash: Fix sensitive test * squash: remove overspecified method * squash: address linter * squash: use the right regexp --------- Co-authored-by: Kayla Reopelle <87386821+kaylareopelle@users.noreply.github.com>
1 parent a159dc1 commit ffc7349

19 files changed

+53
-37
lines changed

.github/workflows/ci.yml

+15
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ jobs:
3838
runs-on: ${{ matrix.os }}
3939
steps:
4040
- uses: actions/checkout@v2
41+
- name: "Test Ruby 3.4"
42+
uses: ./.github/actions/test_gem
43+
with:
44+
gem: "${{ matrix.gem }}"
45+
ruby: "3.4"
4146
- name: "Test Ruby 3.3"
4247
uses: ./.github/actions/test_gem
4348
with:
@@ -97,6 +102,11 @@ jobs:
97102
runs-on: ${{ matrix.os }}
98103
steps:
99104
- uses: actions/checkout@v2
105+
- name: "Test Ruby 3.4"
106+
uses: ./.github/actions/test_gem
107+
with:
108+
gem: "${{ matrix.gem }}"
109+
ruby: "3.4"
100110
- name: "Test Ruby 3.3"
101111
uses: ./.github/actions/test_gem
102112
with:
@@ -165,6 +175,11 @@ jobs:
165175
runs-on: ${{ matrix.os }}
166176
steps:
167177
- uses: actions/checkout@v2
178+
- name: "Test Ruby 3.4"
179+
uses: ./.github/actions/test_gem
180+
with:
181+
gem: "${{ matrix.gem }}"
182+
ruby: "3.4"
168183
- name: "Test Ruby 3.3"
169184
uses: ./.github/actions/test_gem
170185
with:

exporter/jaeger/opentelemetry-exporter-jaeger.gemspec

+2-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
2626
spec.require_paths = ['lib']
2727
spec.required_ruby_version = '>= 3.1'
2828

29+
spec.add_dependency 'base64', '>= 0.2.0'
2930
spec.add_dependency 'opentelemetry-api', '~> 1.1'
3031
spec.add_dependency 'opentelemetry-common', '~> 0.20'
3132
spec.add_dependency 'opentelemetry-sdk', '~> 1.2'
@@ -40,7 +41,7 @@ Gem::Specification.new do |spec|
4041
spec.add_development_dependency 'rspec-mocks'
4142
spec.add_development_dependency 'rubocop', '~> 1.65'
4243
spec.add_development_dependency 'simplecov', '~> 0.17'
43-
spec.add_development_dependency 'webmock', '~> 3.7.6'
44+
spec.add_development_dependency 'webmock', '~> 3.24'
4445
spec.add_development_dependency 'yard', '~> 0.9'
4546
spec.add_development_dependency 'yard-doctest', '~> 0.1.6'
4647

exporter/otlp-common/opentelemetry-exporter-otlp-common.gemspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ Gem::Specification.new do |spec|
3939
spec.add_development_dependency 'rake', '~> 12.0'
4040
spec.add_development_dependency 'rubocop', '~> 1.65'
4141
spec.add_development_dependency 'simplecov', '~> 0.17'
42-
spec.add_development_dependency 'webmock', '~> 3.7.6'
42+
spec.add_development_dependency 'webmock', '~> 3.24'
4343
spec.add_development_dependency 'yard', '~> 0.9'
4444
spec.add_development_dependency 'yard-doctest', '~> 0.1.6'
4545

exporter/otlp-grpc/opentelemetry-exporter-otlp-grpc.gemspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ Gem::Specification.new do |spec|
3939
spec.add_development_dependency 'rake', '~> 12.0'
4040
spec.add_development_dependency 'rubocop', '~> 1.65'
4141
spec.add_development_dependency 'simplecov', '~> 0.17'
42-
spec.add_development_dependency 'webmock', '~> 3.7.6'
42+
spec.add_development_dependency 'webmock', '~> 3.24'
4343
spec.add_development_dependency 'yard', '~> 0.9'
4444
spec.add_development_dependency 'yard-doctest', '~> 0.1.6'
4545

exporter/otlp-http/opentelemetry-exporter-otlp-http.gemspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ Gem::Specification.new do |spec|
3838
spec.add_development_dependency 'rake', '~> 12.0'
3939
spec.add_development_dependency 'rubocop', '~> 1.65'
4040
spec.add_development_dependency 'simplecov', '~> 0.17'
41-
spec.add_development_dependency 'webmock', '~> 3.7.6'
41+
spec.add_development_dependency 'webmock', '~> 3.24'
4242
spec.add_development_dependency 'yard', '~> 0.9'
4343
spec.add_development_dependency 'yard-doctest', '~> 0.1.6'
4444

exporter/otlp-logs/opentelemetry-exporter-otlp-logs.gemspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ Gem::Specification.new do |spec|
4343
spec.add_development_dependency 'rake', '~> 12.0'
4444
spec.add_development_dependency 'rubocop', '~> 1.3'
4545
spec.add_development_dependency 'simplecov', '~> 0.17'
46-
spec.add_development_dependency 'webmock', '~> 3.7.6'
46+
spec.add_development_dependency 'webmock', '~> 3.24'
4747
spec.add_development_dependency 'yard', '~> 0.9'
4848
spec.add_development_dependency 'yard-doctest', '~> 0.1.6'
4949

exporter/otlp-metrics/opentelemetry-exporter-otlp-metrics.gemspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ Gem::Specification.new do |spec|
4343
spec.add_development_dependency 'rake', '~> 12.0'
4444
spec.add_development_dependency 'rubocop', '~> 1.65'
4545
spec.add_development_dependency 'simplecov', '~> 0.17'
46-
spec.add_development_dependency 'webmock', '~> 3.7.6'
46+
spec.add_development_dependency 'webmock', '~> 3.24'
4747
spec.add_development_dependency 'yard', '~> 0.9'
4848
spec.add_development_dependency 'yard-doctest', '~> 0.1.6'
4949

exporter/otlp/opentelemetry-exporter-otlp.gemspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ Gem::Specification.new do |spec|
4141
spec.add_development_dependency 'rake', '~> 12.0'
4242
spec.add_development_dependency 'rubocop', '~> 1.65'
4343
spec.add_development_dependency 'simplecov', '~> 0.17'
44-
spec.add_development_dependency 'webmock', '~> 3.7.6'
44+
spec.add_development_dependency 'webmock', '~> 3.24'
4545
spec.add_development_dependency 'yard', '~> 0.9'
4646
spec.add_development_dependency 'yard-doctest', '~> 0.1.6'
4747

exporter/zipkin/opentelemetry-exporter-zipkin.gemspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ Gem::Specification.new do |spec|
3939
spec.add_development_dependency 'rake', '~> 12.0'
4040
spec.add_development_dependency 'rubocop', '~> 1.65'
4141
spec.add_development_dependency 'simplecov', '~> 0.17'
42-
spec.add_development_dependency 'webmock', '~> 3.7.6'
42+
spec.add_development_dependency 'webmock', '~> 3.24'
4343
spec.add_development_dependency 'yard', '~> 0.9'
4444
spec.add_development_dependency 'yard-doctest', '~> 0.1.6'
4545

logs_api/opentelemetry-logs-api.gemspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
2727
spec.add_dependency 'opentelemetry-api', '~> 1.0'
2828

2929
spec.add_development_dependency 'bundler', '>= 1.17'
30-
spec.add_development_dependency 'minitest', '~> 5.19'
30+
spec.add_development_dependency 'minitest', '~> 5.0'
3131
spec.add_development_dependency 'rake', '~> 12.0'
3232
spec.add_development_dependency 'rubocop', '~> 1.65'
3333
spec.add_development_dependency 'simplecov', '~> 0.22'

logs_sdk/opentelemetry-logs-sdk.gemspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
2929
spec.add_dependency 'opentelemetry-sdk', '~> 1.3'
3030

3131
spec.add_development_dependency 'bundler', '>= 1.17'
32-
spec.add_development_dependency 'minitest', '~> 5.19'
32+
spec.add_development_dependency 'minitest', '~> 5.0'
3333
spec.add_development_dependency 'opentelemetry-test-helpers', '~> 0.4'
3434
spec.add_development_dependency 'rake', '~> 13.0'
3535
spec.add_development_dependency 'rubocop', '~> 1.65'

logs_sdk/test/opentelemetry/sdk/logs/log_record_test.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@
113113
logger.on_emit(attributes: { 'a' => 'a', 'b' => 'b' })
114114

115115
# Look at the captured output to see if the attributes have been truncated
116-
assert_match(/attributes={"b"=>"b"}/, captured_stdout.string)
116+
assert_match(/attributes={"b".?=>.?"b"}/, captured_stdout.string)
117117
refute_match(/"a"=>"a"/, captured_stdout.string)
118118

119119
# Return STDOUT to its normal output

metrics_sdk/test/opentelemetry/metrics_sdk_test.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
OpenTelemetry::SDK.configure(&:do_something)
4646

4747
_(received_exception).must_be_instance_of OpenTelemetry::SDK::ConfigurationError
48-
_(received_message).must_match(/unexpected configuration error due to undefined method `do_something/)
48+
_(received_message).must_match(/undefined method/)
4949
end
5050
end
5151
end

sdk/opentelemetry-sdk.gemspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Gem::Specification.new do |spec|
3737

3838
spec.add_development_dependency 'bundler', '>= 1.17'
3939
spec.add_development_dependency 'faraday', '~> 0.13'
40-
spec.add_development_dependency 'minitest', '~> 5.15.0'
40+
spec.add_development_dependency 'minitest', '~> 5.0'
4141
spec.add_development_dependency 'opentelemetry-exporter-zipkin', '~> 0.19.0'
4242
spec.add_development_dependency 'opentelemetry-instrumentation-base', '~> 0.20'
4343
spec.add_development_dependency 'opentelemetry-test-helpers'

sdk/test/opentelemetry/sdk/trace/export/batch_span_processor_test.rb

+4-4
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ def to_span_data
149149
end
150150

151151
it 'spawns a thread on boot by default' do
152-
mock = MiniTest::Mock.new
152+
mock = Minitest::Mock.new
153153
mock.expect(:call, nil)
154154

155155
Thread.stub(:new, mock) do
@@ -160,7 +160,7 @@ def to_span_data
160160
end
161161

162162
it 'spawns a thread on boot if OTEL_RUBY_BSP_START_THREAD_ON_BOOT is true' do
163-
mock = MiniTest::Mock.new
163+
mock = Minitest::Mock.new
164164
mock.expect(:call, nil)
165165

166166
Thread.stub(:new, mock) do
@@ -173,7 +173,7 @@ def to_span_data
173173
end
174174

175175
it 'does not spawn a thread on boot if OTEL_RUBY_BSP_START_THREAD_ON_BOOT is false' do
176-
mock = MiniTest::Mock.new
176+
mock = Minitest::Mock.new
177177
mock.expect(:call, nil) { assert false }
178178

179179
Thread.stub(:new, mock) do
@@ -184,7 +184,7 @@ def to_span_data
184184
end
185185

186186
it 'prefers explicit start_thread_on_boot parameter rather than the environment' do
187-
mock = MiniTest::Mock.new
187+
mock = Minitest::Mock.new
188188
mock.expect(:call, nil) { assert false }
189189

190190
Thread.stub(:new, mock) do

sdk/test/opentelemetry/sdk/trace/export/simple_span_processor_test.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def mock.force_flush(timeout: nil); end
4545

4646
it 'forwards calls to #force_flush to the exporter' do
4747
mock_span_exporter.instance_eval { undef :force_flush }
48-
mock_span_exporter.expect :force_flush, nil, [{ timeout: nil }]
48+
mock_span_exporter.expect :force_flush, nil, [], timeout: nil
4949

5050
processor.force_flush
5151
mock_span_exporter.verify
@@ -108,7 +108,7 @@ def raising_exporter.export(_)
108108

109109
it 'forwards calls to #shutdown to the exporter' do
110110
mock_span_exporter.instance_eval { undef :shutdown }
111-
mock_span_exporter.expect :shutdown, nil, [{ timeout: nil }]
111+
mock_span_exporter.expect :shutdown, nil, [], timeout: nil
112112

113113
processor.shutdown
114114
mock_span_exporter.verify

sdk/test/opentelemetry/sdk/trace/samplers_test.rb

+5-5
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060

6161
it 'delegates sampling of remote sampled spans' do
6262
mock_sampler = Minitest::Mock.new
63-
mock_sampler.expect(:should_sample?, result, [{ trace_id: trace_id, parent_context: remote_sampled_parent_context, links: nil, name: nil, kind: nil, attributes: nil }])
63+
mock_sampler.expect(:should_sample?, result, [], trace_id: trace_id, parent_context: remote_sampled_parent_context, links: nil, name: nil, kind: nil, attributes: nil)
6464
sampler = Samplers.parent_based(
6565
root: not_a_sampler,
6666
remote_parent_sampled: mock_sampler,
@@ -76,7 +76,7 @@
7676

7777
it 'delegates sampling of remote not sampled spans' do
7878
mock_sampler = Minitest::Mock.new
79-
mock_sampler.expect(:should_sample?, result, [{ trace_id: trace_id, parent_context: remote_not_sampled_parent_context, links: nil, name: nil, kind: nil, attributes: nil }])
79+
mock_sampler.expect(:should_sample?, result, [], trace_id: trace_id, parent_context: remote_not_sampled_parent_context, links: nil, name: nil, kind: nil, attributes: nil)
8080
sampler = Samplers.parent_based(
8181
root: not_a_sampler,
8282
remote_parent_sampled: not_a_sampler,
@@ -92,7 +92,7 @@
9292

9393
it 'delegates sampling of local sampled spans' do
9494
mock_sampler = Minitest::Mock.new
95-
mock_sampler.expect(:should_sample?, result, [{ trace_id: trace_id, parent_context: local_sampled_parent_context, links: nil, name: nil, kind: nil, attributes: nil }])
95+
mock_sampler.expect(:should_sample?, result, [], trace_id: trace_id, parent_context: local_sampled_parent_context, links: nil, name: nil, kind: nil, attributes: nil)
9696
sampler = Samplers.parent_based(
9797
root: not_a_sampler,
9898
remote_parent_sampled: not_a_sampler,
@@ -108,7 +108,7 @@
108108

109109
it 'delegates sampling of local not sampled spans' do
110110
mock_sampler = Minitest::Mock.new
111-
mock_sampler.expect(:should_sample?, result, [{ trace_id: trace_id, parent_context: local_not_sampled_parent_context, links: nil, name: nil, kind: nil, attributes: nil }])
111+
mock_sampler.expect(:should_sample?, result, [], trace_id: trace_id, parent_context: local_not_sampled_parent_context, links: nil, name: nil, kind: nil, attributes: nil)
112112
sampler = Samplers.parent_based(
113113
root: not_a_sampler,
114114
remote_parent_sampled: not_a_sampler,
@@ -124,7 +124,7 @@
124124

125125
it 'delegates sampling of root spans' do
126126
mock_sampler = Minitest::Mock.new
127-
mock_sampler.expect(:should_sample?, result, [{ trace_id: trace_id, parent_context: nil, links: nil, name: nil, kind: nil, attributes: nil }])
127+
mock_sampler.expect(:should_sample?, result, [], trace_id: trace_id, parent_context: nil, links: nil, name: nil, kind: nil, attributes: nil)
128128
sampler = Samplers.parent_based(
129129
root: mock_sampler,
130130
remote_parent_sampled: not_a_sampler,

sdk/test/opentelemetry/sdk/trace/tracer_provider_test.rb

+8-8
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
let(:mock_span_processor2) { Minitest::Mock.new }
5050

5151
it 'notifies the span processor' do
52-
mock_span_processor.expect(:shutdown, nil, [{ timeout: nil }])
52+
mock_span_processor.expect(:shutdown, nil, [], timeout: nil)
5353
tracer_provider.add_span_processor(mock_span_processor)
5454
tracer_provider.shutdown
5555
mock_span_processor.verify
@@ -66,16 +66,16 @@
6666
end
6767

6868
it 'only notifies the span processor once' do
69-
mock_span_processor.expect(:shutdown, nil, [{ timeout: nil }])
69+
mock_span_processor.expect(:shutdown, nil, [], timeout: nil)
7070
tracer_provider.add_span_processor(mock_span_processor)
7171
tracer_provider.shutdown
7272
tracer_provider.shutdown
7373
mock_span_processor.verify
7474
end
7575

7676
it 'supports multiple span processors' do
77-
mock_span_processor.expect(:shutdown, nil, [{ timeout: nil }])
78-
mock_span_processor2.expect(:shutdown, nil, [{ timeout: nil }])
77+
mock_span_processor.expect(:shutdown, nil, [], timeout: nil)
78+
mock_span_processor2.expect(:shutdown, nil, [], timeout: nil)
7979
tracer_provider.add_span_processor(mock_span_processor)
8080
tracer_provider.add_span_processor(mock_span_processor2)
8181
tracer_provider.shutdown
@@ -98,15 +98,15 @@
9898
let(:mock_span_processor2) { Minitest::Mock.new }
9999

100100
it 'notifies the span processor' do
101-
mock_span_processor.expect(:force_flush, nil, [{ timeout: nil }])
101+
mock_span_processor.expect(:force_flush, nil, [], timeout: nil)
102102
tracer_provider.add_span_processor(mock_span_processor)
103103
tracer_provider.force_flush
104104
mock_span_processor.verify
105105
end
106106

107107
it 'supports multiple span processors' do
108-
mock_span_processor.expect(:force_flush, nil, [{ timeout: nil }])
109-
mock_span_processor2.expect(:force_flush, nil, [{ timeout: nil }])
108+
mock_span_processor.expect(:force_flush, nil, [], timeout: nil)
109+
mock_span_processor2.expect(:force_flush, nil, [], timeout: nil)
110110
tracer_provider.add_span_processor(mock_span_processor)
111111
tracer_provider.add_span_processor(mock_span_processor2)
112112
tracer_provider.force_flush
@@ -134,7 +134,7 @@
134134
end
135135

136136
it 'adds multiple span processors to the active span processors' do
137-
mock_processors = Array.new(2) { MiniTest::Mock.new }
137+
mock_processors = Array.new(2) { Minitest::Mock.new }
138138
mock_processors.each do |p|
139139
p.expect(:on_start, nil, [Span, Context])
140140
p.expect(:on_finish, nil, [Span])

sdk/test/opentelemetry/sdk/trace/tracer_test.rb

+5-5
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
it 'creates a span with IDs generated by the configured id_generator' do
3737
span_id = 'I am sID'
3838
trace_id = 'I am a trace ID '
39-
mock_id_generator = MiniTest::Mock.new
39+
mock_id_generator = Minitest::Mock.new
4040
mock_id_generator.expect(:generate_span_id, span_id)
4141
mock_id_generator.expect(:generate_trace_id, trace_id)
4242
tracer_provider.id_generator = mock_id_generator
@@ -116,7 +116,7 @@
116116
sampler_attributes = { '1' => 1 }
117117
mock_sampler = Minitest::Mock.new
118118
result = Result.new(decision: Decision::RECORD_ONLY, attributes: sampler_attributes, tracestate: nil)
119-
mock_sampler.expect(:should_sample?, result, [Hash])
119+
mock_sampler.expect(:should_sample?, result, [], trace_id: String, parent_context: OpenTelemetry::Context, links: nil, name: String, kind: Symbol, attributes: Hash)
120120
tracer_provider.sampler = mock_sampler
121121
span = tracer.start_root_span('op', attributes: { '1' => 0, '2' => 2 })
122122
_(span.attributes).must_equal('1' => 1, '2' => 2)
@@ -220,7 +220,7 @@
220220
attributes = Minitest::Mock.new
221221
result = Result.new(decision: Decision::DROP, tracestate: nil)
222222
mock_sampler = Minitest::Mock.new
223-
mock_sampler.expect(:should_sample?, result, [{ trace_id: span_context.trace_id, parent_context: context, links: links, name: name, kind: kind, attributes: attributes }])
223+
mock_sampler.expect(:should_sample?, result, [], trace_id: span_context.trace_id, parent_context: context, links: links, name: name, kind: kind, attributes: attributes)
224224
tracer_provider.sampler = mock_sampler
225225
tracer.start_span(name, with_parent: context, attributes: attributes, links: links, kind: kind)
226226
mock_sampler.verify
@@ -236,7 +236,7 @@
236236

237237
it 'creates a span with IDs generated by the configured id_generator' do
238238
span_id = 'I am sID'
239-
mock_id_generator = MiniTest::Mock.new
239+
mock_id_generator = Minitest::Mock.new
240240
mock_id_generator.expect(:generate_span_id, span_id)
241241
tracer_provider.id_generator = mock_id_generator
242242
span = tracer.start_span('span', with_parent: context)
@@ -270,7 +270,7 @@
270270
sampler_attributes = { '1' => 1 }
271271
mock_sampler = Minitest::Mock.new
272272
result = Result.new(decision: Decision::RECORD_ONLY, attributes: sampler_attributes, tracestate: nil)
273-
mock_sampler.expect(:should_sample?, result, [Hash])
273+
mock_sampler.expect(:should_sample?, result, [], trace_id: String, parent_context: OpenTelemetry::Context, links: nil, name: String, kind: Symbol, attributes: Hash)
274274
tracer_provider.sampler = mock_sampler
275275
span = tracer.start_span('op', with_parent: context, attributes: { '1' => 0, '2' => 2 })
276276
_(span.attributes).must_equal('1' => 1, '2' => 2)

0 commit comments

Comments
 (0)