24
24
)
25
25
import opentelemetry .trace as trace_api
26
26
from opentelemetry .trace import (
27
- DEFAULT_TRACE_OPTIONS ,
28
- DEFAULT_TRACE_STATE ,
29
- INVALID_SPAN_CONTEXT ,
30
- SpanContext ,
31
- TraceFlags ,
32
- set_span_in_context ,
27
+ DEFAULT_TRACE_OPTIONS ,
28
+ DEFAULT_TRACE_STATE ,
29
+ INVALID_SPAN_CONTEXT ,
30
+ SpanContext ,
31
+ TraceFlags ,
32
+ set_span_in_context ,
33
33
TraceState
34
34
)
35
35
from opentelemetry .trace .propagation .textmap import (
@@ -71,16 +71,36 @@ def build_test_context(
71
71
)
72
72
73
73
def build_dict_with_xray_trace_header (
74
- trace_id = f"{ AwsXRayFormat .TRACE_ID_VERSION } { AwsXRayFormat .TRACE_ID_DELIMITER } { TRACE_ID_BASE16 [:AwsXRayFormat .TRACE_ID_FIRST_PART_LENGTH ]} { AwsXRayFormat .TRACE_ID_DELIMITER } { TRACE_ID_BASE16 [AwsXRayFormat .TRACE_ID_FIRST_PART_LENGTH :]} " ,
74
+ trace_id = "{}{}{}{}{}" .format (
75
+ AwsXRayFormat .TRACE_ID_VERSION ,
76
+ AwsXRayFormat .TRACE_ID_DELIMITER ,
77
+ TRACE_ID_BASE16 [:AwsXRayFormat .TRACE_ID_FIRST_PART_LENGTH ],
78
+ AwsXRayFormat .TRACE_ID_DELIMITER ,
79
+ TRACE_ID_BASE16 [AwsXRayFormat .TRACE_ID_FIRST_PART_LENGTH :],
80
+ ),
75
81
span_id = SPAN_ID_BASE16 ,
76
82
sampled = "0" ,
77
83
):
78
84
carrier = CaseInsensitiveDict ()
79
-
85
+
80
86
carrier [AwsXRayFormat .TRACE_HEADER_KEY ] = (
81
- f"{ AwsXRayFormat .TRACE_ID_KEY } { AwsXRayFormat .KEY_AND_VALUE_DELIMITER } { trace_id } { AwsXRayFormat .KV_PAIR_DELIMITER } "
82
- f"{ AwsXRayFormat .PARENT_ID_KEY } { AwsXRayFormat .KEY_AND_VALUE_DELIMITER } { span_id } { AwsXRayFormat .KV_PAIR_DELIMITER } "
83
- f"{ AwsXRayFormat .SAMPLED_FLAG_KEY } { AwsXRayFormat .KEY_AND_VALUE_DELIMITER } { sampled } "
87
+ "{}{}{}{}" .format (
88
+ AwsXRayFormat .TRACE_ID_KEY ,
89
+ AwsXRayFormat .KEY_AND_VALUE_DELIMITER ,
90
+ trace_id ,
91
+ AwsXRayFormat .KV_PAIR_DELIMITER ,
92
+ ),
93
+ "{}{}{}{}" .format (
94
+ AwsXRayFormat .PARENT_ID_KEY ,
95
+ AwsXRayFormat .KEY_AND_VALUE_DELIMITER ,
96
+ span_id ,
97
+ AwsXRayFormat .KV_PAIR_DELIMITER ,
98
+ ),
99
+ "{}{}{}" .format (
100
+ AwsXRayFormat .SAMPLED_FLAG_KEY ,
101
+ AwsXRayFormat .KEY_AND_VALUE_DELIMITER ,
102
+ sampled ,
103
+ )
84
104
)
85
105
86
106
return carrier
@@ -96,12 +116,12 @@ class AwsXRayPropagatorTest(unittest.TestCase):
96
116
carrier_setter : Setter [TextMapPropagatorT ] = CaseInsensitiveDict .__setitem__
97
117
carrier_getter : Getter [TextMapPropagatorT ] = get_as_list
98
118
XRAY_PROPAGATOR = AwsXRayFormat ()
99
-
119
+
100
120
# Inject Tests
101
121
102
122
def test_inject_into_non_sampled_context (self ):
103
123
carrier = CaseInsensitiveDict ()
104
-
124
+
105
125
AwsXRayPropagatorTest .XRAY_PROPAGATOR .inject (
106
126
AwsXRayPropagatorTest .carrier_setter ,
107
127
carrier ,
@@ -121,13 +141,13 @@ def test_inject_into_non_sampled_context(self):
121
141
122
142
def test_inject_into_sampled_context (self ):
123
143
carrier = CaseInsensitiveDict ()
124
-
144
+
125
145
AwsXRayPropagatorTest .XRAY_PROPAGATOR .inject (
126
146
AwsXRayPropagatorTest .carrier_setter ,
127
147
carrier ,
128
148
build_test_context (trace_flags = TraceFlags (TraceFlags .SAMPLED ))
129
149
)
130
-
150
+
131
151
self .assertTrue (
132
152
set (
133
153
carrier .items ()
@@ -138,16 +158,16 @@ def test_inject_into_sampled_context(self):
138
158
),
139
159
'Failed to inject into context that was already sampled'
140
160
)
141
-
161
+
142
162
def test_inject_into_context_with_non_default_state (self ):
143
163
carrier = CaseInsensitiveDict ()
144
-
164
+
145
165
AwsXRayPropagatorTest .XRAY_PROPAGATOR .inject (
146
166
AwsXRayPropagatorTest .carrier_setter ,
147
167
carrier ,
148
168
build_test_context (trace_state = TraceState ({"foo" : "bar" }))
149
169
)
150
-
170
+
151
171
# TODO: (NathanielRN) Assert trace state when the propagator supports it
152
172
self .assertTrue (
153
173
set (
@@ -183,7 +203,7 @@ def test_extract_empty_carrier_from_invalid_context(self):
183
203
get_extracted_span_context (actual_context_encompassing_extracted ),
184
204
INVALID_SPAN_CONTEXT
185
205
)
186
-
206
+
187
207
def test_extract_sampled_context (self ):
188
208
actual_context_encompassing_extracted = AwsXRayPropagatorTest .XRAY_PROPAGATOR .extract (
189
209
AwsXRayPropagatorTest .carrier_getter ,
@@ -223,7 +243,7 @@ def test_extract_different_order(self):
223
243
get_extracted_span_context (actual_context_encompassing_extracted ),
224
244
get_extracted_span_context (build_test_context ())
225
245
)
226
-
246
+
227
247
def test_extract_with_additional_fields (self ):
228
248
default_xray_trace_header_dict = build_dict_with_xray_trace_header ()
229
249
xray_trace_header_dict_with_extra_fields = CaseInsensitiveDict (
@@ -240,7 +260,7 @@ def test_extract_with_additional_fields(self):
240
260
get_extracted_span_context (actual_context_encompassing_extracted ),
241
261
get_extracted_span_context (build_test_context ())
242
262
)
243
-
263
+
244
264
def test_extract_invalid_xray_trace_header (self ):
245
265
actual_context_encompassing_extracted = AwsXRayPropagatorTest .XRAY_PROPAGATOR .extract (
246
266
AwsXRayPropagatorTest .carrier_getter ,
@@ -253,20 +273,20 @@ def test_extract_invalid_xray_trace_header(self):
253
273
get_extracted_span_context (actual_context_encompassing_extracted ),
254
274
INVALID_SPAN_CONTEXT
255
275
)
256
-
276
+
257
277
def test_extract_invalid_trace_id (self ):
258
278
actual_context_encompassing_extracted = AwsXRayPropagatorTest .XRAY_PROPAGATOR .extract (
259
279
AwsXRayPropagatorTest .carrier_getter ,
260
280
build_dict_with_xray_trace_header (
261
- trace_id = "abcdefghijklmnopqrstuvwxyzabcdef "
281
+ trace_id = "abcdefghijklmnopqrstuvwxyz123456 "
262
282
),
263
283
)
264
284
265
285
self .assertEqual (
266
286
get_extracted_span_context (actual_context_encompassing_extracted ),
267
287
INVALID_SPAN_CONTEXT
268
288
)
269
-
289
+
270
290
def test_extract_invalid_trace_id_size (self ):
271
291
actual_context_encompassing_extracted = AwsXRayPropagatorTest .XRAY_PROPAGATOR .extract (
272
292
AwsXRayPropagatorTest .carrier_getter ,
@@ -292,7 +312,7 @@ def test_extract_invalid_span_id(self):
292
312
get_extracted_span_context (actual_context_encompassing_extracted ),
293
313
INVALID_SPAN_CONTEXT
294
314
)
295
-
315
+
296
316
def test_extract_invalid_span_id_size (self ):
297
317
actual_context_encompassing_extracted = AwsXRayPropagatorTest .XRAY_PROPAGATOR .extract (
298
318
AwsXRayPropagatorTest .carrier_getter ,
@@ -305,7 +325,7 @@ def test_extract_invalid_span_id_size(self):
305
325
get_extracted_span_context (actual_context_encompassing_extracted ),
306
326
INVALID_SPAN_CONTEXT
307
327
)
308
-
328
+
309
329
def test_extract_invalid_empty_sampled_flag (self ):
310
330
actual_context_encompassing_extracted = AwsXRayPropagatorTest .XRAY_PROPAGATOR .extract (
311
331
AwsXRayPropagatorTest .carrier_getter ,
@@ -318,7 +338,7 @@ def test_extract_invalid_empty_sampled_flag(self):
318
338
get_extracted_span_context (actual_context_encompassing_extracted ),
319
339
INVALID_SPAN_CONTEXT
320
340
)
321
-
341
+
322
342
def test_extract_invalid_sampled_flag_size (self ):
323
343
actual_context_encompassing_extracted = AwsXRayPropagatorTest .XRAY_PROPAGATOR .extract (
324
344
AwsXRayPropagatorTest .carrier_getter ,
@@ -331,7 +351,7 @@ def test_extract_invalid_sampled_flag_size(self):
331
351
get_extracted_span_context (actual_context_encompassing_extracted ),
332
352
INVALID_SPAN_CONTEXT
333
353
)
334
-
354
+
335
355
def test_extract_invalid_non_numeric_sampled_flag (self ):
336
356
actual_context_encompassing_extracted = AwsXRayPropagatorTest .XRAY_PROPAGATOR .extract (
337
357
AwsXRayPropagatorTest .carrier_getter ,
0 commit comments