Skip to content

Commit

Permalink
instrumentation/opentracing-shim: Preserve parent-child relationship …
Browse files Browse the repository at this point in the history
…between OpenTelemetry and OpenTracing spans (#924)
  • Loading branch information
ocelotl committed Aug 14, 2020
1 parent e8f7b6f commit 3341a8e
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -570,6 +570,11 @@ def start_active_span(
:class:`ScopeManagerShim`.
"""

current_span = get_current_span()

if child_of is None and current_span is not INVALID_SPAN_CONTEXT:
child_of = SpanShim(None, None, current_span)

span = self.start_span(
operation_name=operation_name,
child_of=child_of,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -557,7 +557,6 @@ def test_extract_binary(self):
self.shim.extract(opentracing.Format.BINARY, bytearray())

def test_baggage(self):
"""Test SpanShim baggage being set and being immutable"""

span_context_shim = SpanContextShim(
trace.SpanContext(1234, 5678, is_remote=False)
Expand Down Expand Up @@ -592,3 +591,31 @@ def test_active(self):

# Verify no span is active.
self.assertIsNone(self.shim.active_span)

def test_mixed_mode(self):
"""Test that span parent-child relationship is kept between
OpenTelemetry and the OpenTracing shim"""

span_shim = self.shim.start_span("TestSpan16")

with self.shim.scope_manager.activate(span_shim, finish_on_close=True):

with (
TracerProvider()
.get_tracer(__name__)
.start_as_current_span("abc")
) as opentelemetry_span:

self.assertIs(
span_shim.unwrap().context, opentelemetry_span.parent,
)

with (
TracerProvider().get_tracer(__name__).start_as_current_span("abc")
) as opentelemetry_span:

with self.shim.start_active_span("TestSpan17") as scope:

self.assertIs(
scope.span.unwrap().parent, opentelemetry_span.context,
)

0 comments on commit 3341a8e

Please sign in to comment.