Skip to content

Commit 09f6c35

Browse files
committed
Refactor inject and tests
1 parent 698a68b commit 09f6c35

File tree

3 files changed

+78
-32
lines changed

3 files changed

+78
-32
lines changed

opentelemetry-sdk/src/opentelemetry/sdk/context/propagation/b3_format.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class B3Format(HTTPTextFormat):
2727
SINGLE_HEADER_KEY = "b3"
2828
TRACE_ID_KEY = "x-b3-traceid"
2929
SPAN_ID_KEY = "x-b3-spanid"
30+
PARENT_SPAN_ID_KEY = "x-b3-parentspanid"
3031
SAMPLED_KEY = "x-b3-sampled"
3132
FLAGS_KEY = "x-b3-flags"
3233
_SAMPLE_PROPAGATE_VALUES = set(["1", "True", "true", "d"])
@@ -55,7 +56,7 @@ def extract(cls, get_from_carrier, carrier):
5556
elif len(fields) == 3:
5657
trace_id, span_id, sampled = fields
5758
elif len(fields) == 4:
58-
trace_id, span_id, sampled, _parent_span_id = fields
59+
trace_id, span_id, sampled, _ = fields
5960
else:
6061
return trace.INVALID_SPAN_CONTEXT
6162
else:
@@ -100,13 +101,22 @@ def extract(cls, get_from_carrier, carrier):
100101
)
101102

102103
@classmethod
103-
def inject(cls, context, set_in_carrier, carrier):
104-
sampled = (trace.TraceOptions.SAMPLED & context.trace_options) != 0
104+
def inject(
105+
cls, span, set_in_carrier, carrier
106+
): # pylint: disable=arguments-differ
107+
sampled = (
108+
trace.TraceOptions.SAMPLED & span.context.trace_options
109+
) != 0
105110
set_in_carrier(
106-
carrier, cls.TRACE_ID_KEY, format_trace_id(context.trace_id)
111+
carrier, cls.TRACE_ID_KEY, format_trace_id(span.context.trace_id)
107112
)
108113
set_in_carrier(
109-
carrier, cls.SPAN_ID_KEY, format_span_id(context.span_id)
114+
carrier, cls.SPAN_ID_KEY, format_span_id(span.context.span_id)
115+
)
116+
set_in_carrier(
117+
carrier,
118+
cls.PARENT_SPAN_ID_KEY,
119+
format_span_id(span.parent.context.span_id),
110120
)
111121
set_in_carrier(carrier, cls.SAMPLED_KEY, "1" if sampled else "0")
112122

opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,10 @@ def __repr__(self):
174174
)
175175

176176
def __str__(self):
177-
return '{}(name="{}", context={}, kind={}, parent={}, start_time={}, end_time={})'.format(
177+
return (
178+
'{}(name="{}", context={}, kind={}, parent={}, '
179+
"start_time={}, end_time={})"
180+
).format(
178181
type(self).__name__,
179182
self.name,
180183
self.context,

opentelemetry-sdk/tests/context/propagation/test_b3_format.py

Lines changed: 59 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -47,18 +47,23 @@ def test_extract_multi_header(self):
4747
FORMAT.PARENT_SPAN_ID_KEY: self.serialized_parent_span_id,
4848
FORMAT.SAMPLED_KEY: "1",
4949
}
50-
span_context = FORMAT.extract(get_as_list, carrier)
50+
parent_span = trace.Span(
51+
"parent", FORMAT.extract(get_as_list, carrier)
52+
)
53+
child_span = trace.Tracer().start_span("child", parent=parent_span)
5154
new_carrier = {}
52-
FORMAT.inject(span_context, dict.__setitem__, new_carrier)
55+
FORMAT.inject(child_span, dict.__setitem__, new_carrier)
5356
self.assertEqual(
54-
new_carrier[FORMAT.TRACE_ID_KEY], self.serialized_trace_id
57+
new_carrier[FORMAT.TRACE_ID_KEY],
58+
b3_format.format_trace_id(child_span.context.trace_id),
5559
)
5660
self.assertEqual(
57-
new_carrier[FORMAT.SPAN_ID_KEY], self.serialized_span_id
61+
new_carrier[FORMAT.SPAN_ID_KEY],
62+
b3_format.format_span_id(child_span.context.span_id),
5863
)
5964
self.assertEqual(
6065
new_carrier[FORMAT.PARENT_SPAN_ID_KEY],
61-
self.serialized_parent_span_id,
66+
b3_format.format_span_id(parent_span.context.span_id),
6267
)
6368
self.assertEqual(new_carrier[FORMAT.SAMPLED_KEY], "1")
6469

@@ -69,14 +74,19 @@ def test_extract_single_header(self):
6974
self.serialized_trace_id, self.serialized_span_id
7075
)
7176
}
72-
span_context = FORMAT.extract(get_as_list, carrier)
77+
parent_span = trace.Span(
78+
"parent", FORMAT.extract(get_as_list, carrier)
79+
)
80+
child_span = trace.Tracer().start_span("child", parent=parent_span)
7381
new_carrier = {}
74-
FORMAT.inject(span_context, dict.__setitem__, new_carrier)
82+
FORMAT.inject(child_span, dict.__setitem__, new_carrier)
7583
self.assertEqual(
76-
new_carrier[FORMAT.TRACE_ID_KEY], self.serialized_trace_id
84+
new_carrier[FORMAT.TRACE_ID_KEY],
85+
b3_format.format_trace_id(child_span.context.trace_id),
7786
)
7887
self.assertEqual(
79-
new_carrier[FORMAT.SPAN_ID_KEY], self.serialized_span_id
88+
new_carrier[FORMAT.SPAN_ID_KEY],
89+
b3_format.format_span_id(child_span.context.span_id),
8090
)
8191
self.assertEqual(new_carrier[FORMAT.SAMPLED_KEY], "1")
8292

@@ -87,18 +97,23 @@ def test_extract_single_header(self):
8797
self.serialized_parent_span_id,
8898
)
8999
}
90-
span_context = FORMAT.extract(get_as_list, carrier)
100+
parent_span = trace.Span(
101+
"parent", FORMAT.extract(get_as_list, carrier)
102+
)
103+
child_span = trace.Tracer().start_span("child", parent=parent_span)
91104
new_carrier = {}
92-
FORMAT.inject(span_context, dict.__setitem__, new_carrier)
105+
FORMAT.inject(child_span, dict.__setitem__, new_carrier)
93106
self.assertEqual(
94-
new_carrier[FORMAT.TRACE_ID_KEY], self.serialized_trace_id
107+
new_carrier[FORMAT.TRACE_ID_KEY],
108+
b3_format.format_trace_id(child_span.context.trace_id),
95109
)
96110
self.assertEqual(
97-
new_carrier[FORMAT.SPAN_ID_KEY], self.serialized_span_id
111+
new_carrier[FORMAT.SPAN_ID_KEY],
112+
b3_format.format_span_id(child_span.context.span_id),
98113
)
99114
self.assertEqual(
100115
new_carrier[FORMAT.PARENT_SPAN_ID_KEY],
101-
self.serialized_parent_span_id,
116+
b3_format.format_span_id(parent_span.context.span_id),
102117
)
103118
self.assertEqual(new_carrier[FORMAT.SAMPLED_KEY], "1")
104119

@@ -115,9 +130,12 @@ def test_extract_header_precedence(self):
115130
FORMAT.SPAN_ID_KEY: self.serialized_span_id,
116131
FORMAT.SAMPLED_KEY: "1",
117132
}
118-
span_context = FORMAT.extract(get_as_list, carrier)
133+
parent_span = trace.Span(
134+
"parent", FORMAT.extract(get_as_list, carrier)
135+
)
136+
child_span = trace.Tracer().start_span("child", parent=parent_span)
119137
new_carrier = {}
120-
FORMAT.inject(span_context, dict.__setitem__, new_carrier)
138+
FORMAT.inject(child_span, dict.__setitem__, new_carrier)
121139
self.assertEqual(
122140
new_carrier[FORMAT.TRACE_ID_KEY], single_header_trace_id
123141
)
@@ -130,9 +148,12 @@ def test_enabled_sampling(self):
130148
FORMAT.SPAN_ID_KEY: self.serialized_span_id,
131149
FORMAT.SAMPLED_KEY: variant,
132150
}
133-
span_context = FORMAT.extract(get_as_list, carrier)
151+
parent_span = trace.Span(
152+
"parent", FORMAT.extract(get_as_list, carrier)
153+
)
154+
child_span = trace.Tracer().start_span("child", parent=parent_span)
134155
new_carrier = {}
135-
FORMAT.inject(span_context, dict.__setitem__, new_carrier)
156+
FORMAT.inject(child_span, dict.__setitem__, new_carrier)
136157
self.assertEqual(new_carrier[FORMAT.SAMPLED_KEY], "1")
137158

138159
def test_disabled_sampling(self):
@@ -143,9 +164,12 @@ def test_disabled_sampling(self):
143164
FORMAT.SPAN_ID_KEY: self.serialized_span_id,
144165
FORMAT.SAMPLED_KEY: variant,
145166
}
146-
span_context = FORMAT.extract(get_as_list, carrier)
167+
parent_span = trace.Span(
168+
"parent", FORMAT.extract(get_as_list, carrier)
169+
)
170+
child_span = trace.Tracer().start_span("child", parent=parent_span)
147171
new_carrier = {}
148-
FORMAT.inject(span_context, dict.__setitem__, new_carrier)
172+
FORMAT.inject(child_span, dict.__setitem__, new_carrier)
149173
self.assertEqual(new_carrier[FORMAT.SAMPLED_KEY], "0")
150174

151175
def test_flags(self):
@@ -155,9 +179,12 @@ def test_flags(self):
155179
FORMAT.SPAN_ID_KEY: self.serialized_span_id,
156180
FORMAT.FLAGS_KEY: "1",
157181
}
158-
span_context = FORMAT.extract(get_as_list, carrier)
182+
parent_span = trace.Span(
183+
"parent", FORMAT.extract(get_as_list, carrier)
184+
)
185+
child_span = trace.Tracer().start_span("child", parent=parent_span)
159186
new_carrier = {}
160-
FORMAT.inject(span_context, dict.__setitem__, new_carrier)
187+
FORMAT.inject(child_span, dict.__setitem__, new_carrier)
161188
self.assertEqual(new_carrier[FORMAT.SAMPLED_KEY], "1")
162189

163190
def test_flags_and_sampling(self):
@@ -167,9 +194,12 @@ def test_flags_and_sampling(self):
167194
FORMAT.SPAN_ID_KEY: self.serialized_span_id,
168195
FORMAT.FLAGS_KEY: "1",
169196
}
170-
span_context = FORMAT.extract(get_as_list, carrier)
197+
parent_span = trace.Span(
198+
"parent", FORMAT.extract(get_as_list, carrier)
199+
)
200+
child_span = trace.Tracer().start_span("child", parent=parent_span)
171201
new_carrier = {}
172-
FORMAT.inject(span_context, dict.__setitem__, new_carrier)
202+
FORMAT.inject(child_span, dict.__setitem__, new_carrier)
173203
self.assertEqual(new_carrier[FORMAT.SAMPLED_KEY], "1")
174204

175205
def test_64bit_trace_id(self):
@@ -180,9 +210,12 @@ def test_64bit_trace_id(self):
180210
FORMAT.SPAN_ID_KEY: self.serialized_span_id,
181211
FORMAT.FLAGS_KEY: "1",
182212
}
183-
span_context = FORMAT.extract(get_as_list, carrier)
213+
parent_span = trace.Span(
214+
"parent", FORMAT.extract(get_as_list, carrier)
215+
)
216+
child_span = trace.Tracer().start_span("child", parent=parent_span)
184217
new_carrier = {}
185-
FORMAT.inject(span_context, dict.__setitem__, new_carrier)
218+
FORMAT.inject(child_span, dict.__setitem__, new_carrier)
186219
self.assertEqual(
187220
new_carrier[FORMAT.TRACE_ID_KEY], "0" * 16 + trace_id_64_bit
188221
)

0 commit comments

Comments
 (0)