From 1331aa08b309d3faba5c82cba9aa839ff18d234a Mon Sep 17 00:00:00 2001 From: Maciej Moleda Date: Fri, 8 Sep 2023 09:18:14 +0100 Subject: [PATCH 1/2] [bunny] fix: headers property needs to exist --- .../lib/opentelemetry/instrumentation/bunny/patch_helpers.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/instrumentation/bunny/lib/opentelemetry/instrumentation/bunny/patch_helpers.rb b/instrumentation/bunny/lib/opentelemetry/instrumentation/bunny/patch_helpers.rb index 4cb67b884..043a17569 100644 --- a/instrumentation/bunny/lib/opentelemetry/instrumentation/bunny/patch_helpers.rb +++ b/instrumentation/bunny/lib/opentelemetry/instrumentation/bunny/patch_helpers.rb @@ -35,6 +35,7 @@ def self.destination_name(exchange, routing_key) def self.extract_context(properties) # use the receive span as parent context parent_context = OpenTelemetry.propagation.extract(properties[:tracer_receive_headers]) + return [parent_context, nil] if properties[:headers].nil? # link to the producer context producer_context = OpenTelemetry.propagation.extract(properties[:headers]) From b3685c28439e0b3302d884ab36bc361e98752c60 Mon Sep 17 00:00:00 2001 From: Maciej Moleda Date: Fri, 8 Sep 2023 13:09:54 +0100 Subject: [PATCH 2/2] add test for nil headers from producer --- .../bunny/patch_helpers_test.rb | 36 +++++++++++++++++++ instrumentation/bunny/test/test_helper.rb | 1 + 2 files changed, 37 insertions(+) create mode 100644 instrumentation/bunny/test/opentelemetry/instrumentation/bunny/patch_helpers_test.rb diff --git a/instrumentation/bunny/test/opentelemetry/instrumentation/bunny/patch_helpers_test.rb b/instrumentation/bunny/test/opentelemetry/instrumentation/bunny/patch_helpers_test.rb new file mode 100644 index 000000000..522f555a2 --- /dev/null +++ b/instrumentation/bunny/test/opentelemetry/instrumentation/bunny/patch_helpers_test.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +# Copyright The OpenTelemetry Authors +# +# SPDX-License-Identifier: Apache-2.0 + +require_relative '../../../../lib/opentelemetry/instrumentation/bunny/patch_helpers' + +describe OpenTelemetry::Instrumentation::Bunny::PatchHelpers do + let(:properties) do + { + headers: { + 'traceparent' => '00-eab67ae26433f603121bd5674149d9e1-2007f3325d3cb6d6-01' + }, + tracer_receive_headers: { + 'traceparent' => '00-cd52775b3cb38931adf5fa880f890c25-cddb52a470027489-01' + } + } + end + + describe '.extract_context' do + it 'returns the parent context with links when headers from producer exists' do + parent_context, links = OpenTelemetry::Instrumentation::Bunny::PatchHelpers.extract_context(properties) + _(parent_context).must_be_instance_of(OpenTelemetry::Context) + _(links).must_be_instance_of(Array) + _(links.first).must_be_instance_of(OpenTelemetry::Trace::Link) + end + + it 'returns the parent context with no links when headers from producer not present' do + properties.delete(:headers) + parent_context, links = OpenTelemetry::Instrumentation::Bunny::PatchHelpers.extract_context(properties) + _(parent_context).must_be_instance_of(OpenTelemetry::Context) + _(links).must_be_nil + end + end +end diff --git a/instrumentation/bunny/test/test_helper.rb b/instrumentation/bunny/test/test_helper.rb index 835bba61b..0c2839200 100644 --- a/instrumentation/bunny/test/test_helper.rb +++ b/instrumentation/bunny/test/test_helper.rb @@ -19,4 +19,5 @@ c.error_handler = ->(exception:, message:) { raise(exception || message) } c.logger = Logger.new($stderr, level: ENV.fetch('OTEL_LOG_LEVEL', 'fatal').to_sym) c.add_span_processor SPAN_PROCESSOR + c.propagators = [OpenTelemetry::Trace::Propagation::TraceContext.text_map_propagator] end