Skip to content

Commit 1d8c099

Browse files
authored
Merge branch 'main' into fix-bug-4251
2 parents d6d0f82 + c41568f commit 1d8c099

11 files changed

Lines changed: 64 additions & 31 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
4646
([#4360](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/4360))
4747
- `opentelemetry-instrumentation-aiohttp-server`: Use `canonical` attribute of the `Resource` as a span name
4848
([#3896](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3896))
49+
- Refactor unit tests to allow for population of the random trace id flag in the `traceparent` header
50+
([#4030](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/4030))
4951

5052
### Breaking changes
5153

instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests/test_async_chat_completions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1179,7 +1179,7 @@ async def test_async_chat_completion_streaming_unsampled(
11791179

11801180
assert logs[0].log_record.trace_id is not None
11811181
assert logs[0].log_record.span_id is not None
1182-
assert logs[0].log_record.trace_flags == 0
1182+
assert not logs[0].log_record.trace_flags.sampled
11831183

11841184
assert logs[0].log_record.trace_id == logs[1].log_record.trace_id
11851185
assert logs[0].log_record.span_id == logs[1].log_record.span_id

instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests/test_chat_completions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1255,7 +1255,7 @@ def test_chat_completion_with_content_span_unsampled(
12551255

12561256
assert logs[0].log_record.trace_id is not None
12571257
assert logs[0].log_record.span_id is not None
1258-
assert logs[0].log_record.trace_flags == 0
1258+
assert not logs[0].log_record.trace_flags.sampled
12591259

12601260
assert logs[0].log_record.trace_id == logs[1].log_record.trace_id
12611261
assert logs[0].log_record.span_id == logs[1].log_record.span_id

instrumentation/opentelemetry-instrumentation-asgi/tests/test_asgi_middleware.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1083,7 +1083,8 @@ async def test_traceresponse_header(self):
10831083

10841084
trace_id = format_trace_id(span.get_span_context().trace_id)
10851085
span_id = format_span_id(span.get_span_context().span_id)
1086-
traceresponse = f"00-{trace_id}-{span_id}-01"
1086+
trace_flags = span.get_span_context().trace_flags
1087+
traceresponse = f"00-{trace_id}-{span_id}-{trace_flags:02x}"
10871088

10881089
self.assertListEqual(
10891090
response_start["headers"],
@@ -1357,7 +1358,8 @@ async def test_websocket_traceresponse_header(self):
13571358

13581359
trace_id = format_trace_id(span.get_span_context().trace_id)
13591360
span_id = format_span_id(span.get_span_context().span_id)
1360-
traceresponse = f"00-{trace_id}-{span_id}-01"
1361+
trace_flags = span.get_span_context().trace_flags
1362+
traceresponse = f"00-{trace_id}-{span_id}-{trace_flags:02x}"
13611363

13621364
self.assertListEqual(
13631365
socket_send["headers"],

instrumentation/opentelemetry-instrumentation-boto3sqs/tests/test_boto3sqs_instrumentation.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
SpanAttributes,
2323
)
2424
from opentelemetry.test.test_base import TestBase
25-
from opentelemetry.trace import SpanKind
25+
from opentelemetry.trace import SpanKind, TraceFlags
2626
from opentelemetry.trace.span import Span, format_span_id, format_trace_id
2727

2828

@@ -206,7 +206,7 @@ def _assert_injected_span(self, msg_attrs: Dict[str, Any], span: Span):
206206
trace_parent = msg_attrs["traceparent"]["StringValue"]
207207
ctx = span.get_span_context()
208208
self.assertEqual(
209-
self._to_trace_parent(ctx.trace_id, ctx.span_id),
209+
self._to_trace_parent(ctx.trace_id, ctx.span_id, ctx.trace_flags),
210210
trace_parent.lower(),
211211
)
212212

@@ -219,8 +219,10 @@ def _default_span_attrs(self):
219219
}
220220

221221
@staticmethod
222-
def _to_trace_parent(trace_id: int, span_id: int) -> str:
223-
return f"00-{format_trace_id(trace_id)}-{format_span_id(span_id)}-01".lower()
222+
def _to_trace_parent(
223+
trace_id: int, span_id: int, trace_flags: TraceFlags
224+
) -> str:
225+
return f"00-{format_trace_id(trace_id)}-{format_span_id(span_id)}-{trace_flags:02x}".lower()
224226

225227
def _get_only_span(self):
226228
spans = self.get_finished_spans()
@@ -243,7 +245,9 @@ def _add_trace_parent(
243245
self, message: Dict[str, Any], trace_id: int, span_id: int
244246
):
245247
message["MessageAttributes"]["traceparent"] = {
246-
"StringValue": self._to_trace_parent(trace_id, span_id),
248+
"StringValue": self._to_trace_parent(
249+
trace_id, span_id, TraceFlags.get_default()
250+
),
247251
"DataType": "String",
248252
}
249253

instrumentation/opentelemetry-instrumentation-django/tests/test_middleware_asgi.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -630,9 +630,10 @@ async def test_trace_response_headers(self):
630630
)
631631
trace_id = format_trace_id(span.get_span_context().trace_id)
632632
span_id = format_span_id(span.get_span_context().span_id)
633+
trace_flags = span.get_span_context().trace_flags
633634
self.assertEqual(
634635
response["traceresponse"],
635-
f"00-{trace_id}-{span_id}-01",
636+
f"00-{trace_id}-{span_id}-{trace_flags:02x}",
636637
)
637638
self.memory_exporter.clear()
638639

instrumentation/opentelemetry-instrumentation-mysql/tests/test_mysql_integration.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -183,9 +183,10 @@ def test_instrument_connection_with_dbapi_sqlcomment_enabled(self):
183183
span = spans_list[0]
184184
span_id = format(span.get_span_context().span_id, "016x")
185185
trace_id = format(span.get_span_context().trace_id, "032x")
186+
trace_flags = format(span.get_span_context().trace_flags, "02x")
186187
self.assertEqual(
187188
mock_cursor.execute.call_args[0][0],
188-
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
189+
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
189190
)
190191
self.assertEqual(
191192
span.attributes[DB_STATEMENT],
@@ -214,13 +215,14 @@ def test_instrument_connection_with_dbapi_sqlcomment_enabled_stmt_enabled(
214215
span = spans_list[0]
215216
span_id = format(span.get_span_context().span_id, "016x")
216217
trace_id = format(span.get_span_context().trace_id, "032x")
218+
trace_flags = format(span.get_span_context().trace_flags, "02x")
217219
self.assertEqual(
218220
mock_cursor.execute.call_args[0][0],
219-
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
221+
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
220222
)
221223
self.assertEqual(
222224
span.attributes[DB_STATEMENT],
223-
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
225+
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
224226
)
225227

226228
def test_instrument_connection_with_dbapi_sqlcomment_enabled_with_options(
@@ -249,9 +251,10 @@ def test_instrument_connection_with_dbapi_sqlcomment_enabled_with_options(
249251
span = spans_list[0]
250252
span_id = format(span.get_span_context().span_id, "016x")
251253
trace_id = format(span.get_span_context().trace_id, "032x")
254+
trace_flags = format(span.get_span_context().trace_flags, "02x")
252255
self.assertEqual(
253256
mock_cursor.execute.call_args[0][0],
254-
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
257+
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
255258
)
256259
self.assertEqual(
257260
span.attributes[DB_STATEMENT],
@@ -322,9 +325,10 @@ def test_instrument_with_dbapi_sqlcomment_enabled(
322325
span = spans_list[0]
323326
span_id = format(span.get_span_context().span_id, "016x")
324327
trace_id = format(span.get_span_context().trace_id, "032x")
328+
trace_flags = format(span.get_span_context().trace_flags, "02x")
325329
self.assertEqual(
326330
mock_cursor.execute.call_args[0][0],
327-
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
331+
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
328332
)
329333
self.assertEqual(
330334
span.attributes[DB_STATEMENT],
@@ -352,13 +356,14 @@ def test_instrument_with_dbapi_sqlcomment_enabled_stmt_enabled(
352356
span = spans_list[0]
353357
span_id = format(span.get_span_context().span_id, "016x")
354358
trace_id = format(span.get_span_context().trace_id, "032x")
359+
trace_flags = format(span.get_span_context().trace_flags, "02x")
355360
self.assertEqual(
356361
mock_cursor.execute.call_args[0][0],
357-
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
362+
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
358363
)
359364
self.assertEqual(
360365
span.attributes[DB_STATEMENT],
361-
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
366+
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
362367
)
363368

364369
def test_instrument_with_dbapi_sqlcomment_enabled_with_options(
@@ -386,9 +391,10 @@ def test_instrument_with_dbapi_sqlcomment_enabled_with_options(
386391
span = spans_list[0]
387392
span_id = format(span.get_span_context().span_id, "016x")
388393
trace_id = format(span.get_span_context().trace_id, "032x")
394+
trace_flags = format(span.get_span_context().trace_flags, "02x")
389395
self.assertEqual(
390396
mock_cursor.execute.call_args[0][0],
391-
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
397+
f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
392398
)
393399
self.assertEqual(
394400
span.attributes[DB_STATEMENT],

instrumentation/opentelemetry-instrumentation-mysqlclient/tests/test_mysqlclient_integration.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -187,9 +187,10 @@ def test_instrument_connection_with_dbapi_sqlcomment_enabled_stmt_enabled(
187187
span = spans_list[0]
188188
span_id = format(span.get_span_context().span_id, "016x")
189189
trace_id = format(span.get_span_context().trace_id, "032x")
190+
trace_flags = format(span.get_span_context().trace_flags, "02x")
190191
self.assertEqual(
191192
mock_cursor.execute.call_args[0][0],
192-
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
193+
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
193194
)
194195
self.assertEqual(
195196
span.attributes[DB_STATEMENT],
@@ -235,9 +236,10 @@ def test_instrument_connection_with_dbapi_sqlcomment_enabled_with_options(
235236
span = spans_list[0]
236237
span_id = format(span.get_span_context().span_id, "016x")
237238
trace_id = format(span.get_span_context().trace_id, "032x")
239+
trace_flags = format(span.get_span_context().trace_flags, "02x")
238240
self.assertEqual(
239241
mock_cursor.execute.call_args[0][0],
240-
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
242+
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
241243
)
242244
self.assertEqual(
243245
span.attributes[DB_STATEMENT],
@@ -336,9 +338,10 @@ def test_instrument_with_dbapi_sqlcomment_enabled(
336338
span = spans_list[0]
337339
span_id = format(span.get_span_context().span_id, "016x")
338340
trace_id = format(span.get_span_context().trace_id, "032x")
341+
trace_flags = format(span.get_span_context().trace_flags, "02x")
339342
self.assertEqual(
340343
mock_cursor.execute.call_args[0][0],
341-
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
344+
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
342345
)
343346
self.assertEqual(
344347
span.attributes[DB_STATEMENT],
@@ -381,9 +384,10 @@ def test_instrument_with_dbapi_sqlcomment_enabled_stmt_enabled(
381384
span = spans_list[0]
382385
span_id = format(span.get_span_context().span_id, "016x")
383386
trace_id = format(span.get_span_context().trace_id, "032x")
387+
trace_flags = format(span.get_span_context().trace_flags, "02x")
384388
self.assertEqual(
385389
mock_cursor.execute.call_args[0][0],
386-
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
390+
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
387391
)
388392
self.assertEqual(
389393
span.attributes[DB_STATEMENT],
@@ -430,9 +434,10 @@ def test_instrument_with_dbapi_sqlcomment_enabled_with_options(
430434
span = spans_list[0]
431435
span_id = format(span.get_span_context().span_id, "016x")
432436
trace_id = format(span.get_span_context().trace_id, "032x")
437+
trace_flags = format(span.get_span_context().trace_flags, "02x")
433438
self.assertEqual(
434439
mock_cursor.execute.call_args[0][0],
435-
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;",
440+
f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;",
436441
)
437442
self.assertEqual(
438443
span.attributes[DB_STATEMENT],

0 commit comments

Comments
 (0)