diff --git a/instrumentation/rspec/lib/opentelemetry/instrumentation/rspec/formatter.rb b/instrumentation/rspec/lib/opentelemetry/instrumentation/rspec/formatter.rb index db13a1ccf4..07e03519b1 100644 --- a/instrumentation/rspec/lib/opentelemetry/instrumentation/rspec/formatter.rb +++ b/instrumentation/rspec/lib/opentelemetry/instrumentation/rspec/formatter.rb @@ -36,10 +36,7 @@ def current_timestamp def start(notification) span = tracer.start_span('RSpec suite', start_timestamp: current_timestamp) - token = OpenTelemetry::Context.attach( - OpenTelemetry::Trace.context_with_span(span) - ) - @spans_and_tokens.unshift([span, token]) + track_span(span) end def stop(notification) @@ -47,13 +44,9 @@ def stop(notification) end def example_group_started(notification) - group = notification.group - description = group.description + description = notification.group.description span = tracer.start_span(description, start_timestamp: current_timestamp) - token = OpenTelemetry::Context.attach( - OpenTelemetry::Trace.context_with_span(span) - ) - @spans_and_tokens.unshift([span, token]) + track_span(span) end def example_group_finished(notification) @@ -68,10 +61,7 @@ def example_started(notification) 'described_class' => example.metadata[:described_class].to_s } span = tracer.start_span(example.description, attributes: attributes, start_timestamp: current_timestamp) - token = OpenTelemetry::Context.attach( - OpenTelemetry::Trace.context_with_span(span) - ) - @spans_and_tokens.unshift([span, token]) + track_span(span) end def example_finished(notification) @@ -88,6 +78,13 @@ def example_finished(notification) end end + def track_span(span) + token = OpenTelemetry::Context.attach( + OpenTelemetry::Trace.context_with_span(span) + ) + @spans_and_tokens.unshift([span, token]) + end + def pop_and_finalize_span span, token = *@spans_and_tokens.shift return unless span.recording?