Skip to content

Commit 0b1586e

Browse files
authored
Make SpanContext it's own independent object (#224)
* Make SpanContext it's own independent object * Add baggage interfaces * Change assertion type
1 parent bf31c0c commit 0b1586e

File tree

7 files changed

+44
-38
lines changed

7 files changed

+44
-38
lines changed

instana/binary_propagator.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from .log import logger
66
from .util import header_to_id
7-
from .span_context import InstanaSpanContext
7+
from .span import SpanContext
88

99

1010
class BinaryPropagator():
@@ -72,7 +72,7 @@ def extract(self, carrier): # noqa
7272

7373
ctx = None
7474
if trace_id is not None and span_id is not None:
75-
ctx = InstanaSpanContext(span_id=span_id,
75+
ctx = SpanContext(span_id=span_id,
7676
trace_id=trace_id,
7777
level=level,
7878
baggage={},

instana/http_propagator.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from __future__ import absolute_import
22

33
import opentracing as ot
4-
from .span_context import InstanaSpanContext
54

65
from .log import logger
6+
from .span import SpanContext
77
from .util import header_to_id
88

99
# The carrier can be a dict or a list.
@@ -95,7 +95,7 @@ def extract(self, carrier): # noqa
9595

9696
ctx = None
9797
if trace_id is not None and span_id is not None:
98-
ctx = InstanaSpanContext(span_id=span_id,
98+
ctx = SpanContext(span_id=span_id,
9999
trace_id=trace_id,
100100
level=level,
101101
baggage={},

instana/span.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,35 @@
44
import opentracing.ext.tags as ot_tags
55

66

7+
class SpanContext():
8+
def __init__(
9+
self,
10+
trace_id=None,
11+
span_id=None,
12+
baggage=None,
13+
sampled=True,
14+
level=1):
15+
16+
self.level = level
17+
self.trace_id = trace_id
18+
self.span_id = span_id
19+
self.sampled = sampled
20+
self._baggage = baggage or {}
21+
22+
@property
23+
def baggage(self):
24+
return self._baggage
25+
26+
def with_baggage_item(self, key, value):
27+
new_baggage = self._baggage.copy()
28+
new_baggage[key] = value
29+
return SpanContext(
30+
trace_id=self.trace_id,
31+
span_id=self.span_id,
32+
sampled=self.sampled,
33+
baggage=new_baggage)
34+
35+
736
class InstanaSpan(BasicSpan):
837
stack = None
938

instana/span_context.py

Lines changed: 0 additions & 22 deletions
This file was deleted.

instana/text_propagator.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from __future__ import absolute_import
22

33
import opentracing as ot
4-
from .span_context import InstanaSpanContext
54

65
from .log import logger
6+
from .span import SpanContext
77
from .util import header_to_id
88

99

@@ -68,7 +68,7 @@ def extract(self, carrier): # noqa
6868

6969
ctx = None
7070
if trace_id is not None and span_id is not None:
71-
ctx = InstanaSpanContext(span_id=span_id,
71+
ctx = SpanContext(span_id=span_id,
7272
trace_id=trace_id,
7373
level=level,
7474
baggage={},

instana/tracer.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,8 @@
1111
from .binary_propagator import BinaryPropagator
1212
from .http_propagator import HTTPPropagator
1313
from .text_propagator import TextPropagator
14-
from .span_context import InstanaSpanContext
1514
from .recorder import StandardRecorder, InstanaSampler
16-
from .span import InstanaSpan, RegisteredSpan
15+
from .span import InstanaSpan, RegisteredSpan, SpanContext
1716
from .util import generate_id
1817

1918

@@ -70,7 +69,7 @@ def start_span(self,
7069
parent_ctx = None
7170
if child_of is not None:
7271
parent_ctx = (
73-
child_of if isinstance(child_of, ot.SpanContext)
72+
child_of if isinstance(child_of, SpanContext)
7473
else child_of.context)
7574
elif references is not None and len(references) > 0:
7675
# TODO only the first reference is currently used
@@ -84,7 +83,7 @@ def start_span(self,
8483

8584
# Assemble the child ctx
8685
gid = generate_id()
87-
ctx = InstanaSpanContext(span_id=gid)
86+
ctx = SpanContext(span_id=gid)
8887
if parent_ctx is not None:
8988
if parent_ctx._baggage is not None:
9089
ctx._baggage = parent_ctx._baggage.copy()

tests/test_ot_propagators.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import instana.http_propagator as ihp
77
import instana.text_propagator as itp
8-
from instana import options, span_context
8+
from instana import span
99
from instana.tracer import InstanaTracer
1010

1111

@@ -54,7 +54,7 @@ def test_http_basic_extract():
5454
carrier = {'X-Instana-T': '1', 'X-Instana-S': '1', 'X-Instana-L': '1'}
5555
ctx = ot.tracer.extract(ot.Format.HTTP_HEADERS, carrier)
5656

57-
assert type(ctx) is span_context.InstanaSpanContext
57+
assert isinstance(ctx, span.SpanContext)
5858
assert_equals('0000000000000001', ctx.trace_id)
5959
assert_equals('0000000000000001', ctx.span_id)
6060

@@ -65,7 +65,7 @@ def test_http_mixed_case_extract():
6565
carrier = {'x-insTana-T': '1', 'X-inSTANa-S': '1', 'X-INstana-l': '1'}
6666
ctx = ot.tracer.extract(ot.Format.HTTP_HEADERS, carrier)
6767

68-
assert type(ctx) is span_context.InstanaSpanContext
68+
assert isinstance(ctx, span.SpanContext)
6969
assert_equals('0000000000000001', ctx.trace_id)
7070
assert_equals('0000000000000001', ctx.span_id)
7171

@@ -86,7 +86,7 @@ def test_http_128bit_headers():
8686
'X-Instana-S': '0000000000000000b0789916ff8f319f', 'X-Instana-L': '1'}
8787
ctx = ot.tracer.extract(ot.Format.HTTP_HEADERS, carrier)
8888

89-
assert type(ctx) is span_context.InstanaSpanContext
89+
assert isinstance(ctx, span.SpanContext)
9090
assert_equals('b0789916ff8f319f', ctx.trace_id)
9191
assert_equals('b0789916ff8f319f', ctx.span_id)
9292

@@ -136,7 +136,7 @@ def test_text_basic_extract():
136136
carrier = {'X-INSTANA-T': '1', 'X-INSTANA-S': '1', 'X-INSTANA-L': '1'}
137137
ctx = ot.tracer.extract(ot.Format.TEXT_MAP, carrier)
138138

139-
assert type(ctx) is span_context.InstanaSpanContext
139+
assert isinstance(ctx, span.SpanContext)
140140
assert_equals('0000000000000001', ctx.trace_id)
141141
assert_equals('0000000000000001', ctx.span_id)
142142

@@ -166,6 +166,6 @@ def test_text_128bit_headers():
166166
'X-INSTANA-S': ' 0000000000000000b0789916ff8f319f', 'X-INSTANA-L': '1'}
167167
ctx = ot.tracer.extract(ot.Format.TEXT_MAP, carrier)
168168

169-
assert type(ctx) is span_context.InstanaSpanContext
169+
assert isinstance(ctx, span.SpanContext)
170170
assert_equals('b0789916ff8f319f', ctx.trace_id)
171171
assert_equals('b0789916ff8f319f', ctx.span_id)

0 commit comments

Comments
 (0)