diff --git a/CHANGELOG.md b/CHANGELOG.md index 148f3397ba..1e4c9b8242 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +- `opentelemetry-sdk-extension-aws`: Update xray trace id generator for 'random-trace-id' flags compatibility + ([#4030](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/4030)) + ### Fixed - `opentelemetry-util-http`, `opentelemetry-instrumentation-requests`, `opentelemetry-instrumentation-wsgi`, `opentelemetry-instrumentation-asgi`: normalize byte-valued user-agent headers before detecting synthetic sources so attributes are recorded reliably. diff --git a/instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests/test_async_chat_completions.py b/instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests/test_async_chat_completions.py index 1f9527604f..f808ffa3d8 100644 --- a/instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests/test_async_chat_completions.py +++ b/instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests/test_async_chat_completions.py @@ -762,7 +762,7 @@ async def test_async_chat_completion_streaming_unsampled( assert logs[0].log_record.trace_id is not None assert logs[0].log_record.span_id is not None - assert logs[0].log_record.trace_flags == 0 + assert not logs[0].log_record.trace_flags.sampled assert logs[0].log_record.trace_id == logs[1].log_record.trace_id assert logs[0].log_record.span_id == logs[1].log_record.span_id diff --git a/instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests/test_chat_completions.py b/instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests/test_chat_completions.py index 36eec591df..18bc60f9d1 100644 --- a/instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests/test_chat_completions.py +++ b/instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests/test_chat_completions.py @@ -827,7 +827,7 @@ def test_chat_completion_with_content_span_unsampled( assert logs[0].log_record.trace_id is not None assert logs[0].log_record.span_id is not None - assert logs[0].log_record.trace_flags == 0 + assert not logs[0].log_record.trace_flags.sampled assert logs[0].log_record.trace_id == logs[1].log_record.trace_id assert logs[0].log_record.span_id == logs[1].log_record.span_id diff --git a/instrumentation/opentelemetry-instrumentation-asgi/tests/test_asgi_middleware.py b/instrumentation/opentelemetry-instrumentation-asgi/tests/test_asgi_middleware.py index fdf328498b..9d07967306 100644 --- a/instrumentation/opentelemetry-instrumentation-asgi/tests/test_asgi_middleware.py +++ b/instrumentation/opentelemetry-instrumentation-asgi/tests/test_asgi_middleware.py @@ -1044,7 +1044,8 @@ async def test_traceresponse_header(self): trace_id = format_trace_id(span.get_span_context().trace_id) span_id = format_span_id(span.get_span_context().span_id) - traceresponse = f"00-{trace_id}-{span_id}-01" + trace_flags = span.get_span_context().trace_flags + traceresponse = f"00-{trace_id}-{span_id}-{trace_flags:02x}" self.assertListEqual( response_start["headers"], @@ -1318,7 +1319,8 @@ async def test_websocket_traceresponse_header(self): trace_id = format_trace_id(span.get_span_context().trace_id) span_id = format_span_id(span.get_span_context().span_id) - traceresponse = f"00-{trace_id}-{span_id}-01" + trace_flags = span.get_span_context().trace_flags + traceresponse = f"00-{trace_id}-{span_id}-{trace_flags:02x}" self.assertListEqual( socket_send["headers"], diff --git a/instrumentation/opentelemetry-instrumentation-boto3sqs/tests/test_boto3sqs_instrumentation.py b/instrumentation/opentelemetry-instrumentation-boto3sqs/tests/test_boto3sqs_instrumentation.py index 7f7f00cf0a..eaeeb794cc 100644 --- a/instrumentation/opentelemetry-instrumentation-boto3sqs/tests/test_boto3sqs_instrumentation.py +++ b/instrumentation/opentelemetry-instrumentation-boto3sqs/tests/test_boto3sqs_instrumentation.py @@ -33,7 +33,7 @@ SpanAttributes, ) from opentelemetry.test.test_base import TestBase -from opentelemetry.trace import SpanKind +from opentelemetry.trace import SpanKind, TraceFlags from opentelemetry.trace.span import Span, format_span_id, format_trace_id @@ -217,7 +217,7 @@ def _assert_injected_span(self, msg_attrs: Dict[str, Any], span: Span): trace_parent = msg_attrs["traceparent"]["StringValue"] ctx = span.get_span_context() self.assertEqual( - self._to_trace_parent(ctx.trace_id, ctx.span_id), + self._to_trace_parent(ctx.trace_id, ctx.span_id, ctx.trace_flags), trace_parent.lower(), ) @@ -230,8 +230,10 @@ def _default_span_attrs(self): } @staticmethod - def _to_trace_parent(trace_id: int, span_id: int) -> str: - return f"00-{format_trace_id(trace_id)}-{format_span_id(span_id)}-01".lower() + def _to_trace_parent( + trace_id: int, span_id: int, trace_flags: TraceFlags + ) -> str: + return f"00-{format_trace_id(trace_id)}-{format_span_id(span_id)}-{trace_flags:02x}".lower() def _get_only_span(self): spans = self.get_finished_spans() @@ -254,7 +256,9 @@ def _add_trace_parent( self, message: Dict[str, Any], trace_id: int, span_id: int ): message["MessageAttributes"]["traceparent"] = { - "StringValue": self._to_trace_parent(trace_id, span_id), + "StringValue": self._to_trace_parent( + trace_id, span_id, TraceFlags.get_default() + ), "DataType": "String", } diff --git a/instrumentation/opentelemetry-instrumentation-django/tests/test_middleware_asgi.py b/instrumentation/opentelemetry-instrumentation-django/tests/test_middleware_asgi.py index a527f404b2..d16120037b 100644 --- a/instrumentation/opentelemetry-instrumentation-django/tests/test_middleware_asgi.py +++ b/instrumentation/opentelemetry-instrumentation-django/tests/test_middleware_asgi.py @@ -644,9 +644,10 @@ async def test_trace_response_headers(self): ) trace_id = format_trace_id(span.get_span_context().trace_id) span_id = format_span_id(span.get_span_context().span_id) + trace_flags = span.get_span_context().trace_flags self.assertEqual( response["traceresponse"], - f"00-{trace_id}-{span_id}-01", + f"00-{trace_id}-{span_id}-{trace_flags:02x}", ) self.memory_exporter.clear() diff --git a/instrumentation/opentelemetry-instrumentation-mysql/tests/test_mysql_integration.py b/instrumentation/opentelemetry-instrumentation-mysql/tests/test_mysql_integration.py index f97e97692e..53d66535da 100644 --- a/instrumentation/opentelemetry-instrumentation-mysql/tests/test_mysql_integration.py +++ b/instrumentation/opentelemetry-instrumentation-mysql/tests/test_mysql_integration.py @@ -154,9 +154,10 @@ def test_instrument_connection_with_dbapi_sqlcomment_enabled(self): span = spans_list[0] span_id = format(span.get_span_context().span_id, "016x") trace_id = format(span.get_span_context().trace_id, "032x") + trace_flags = format(span.get_span_context().trace_flags, "02x") self.assertEqual( mock_cursor.execute.call_args[0][0], - 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'*/;", + 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}'*/;", ) self.assertEqual( span.attributes[DB_STATEMENT], @@ -193,13 +194,14 @@ def test_instrument_connection_with_dbapi_sqlcomment_enabled_stmt_enabled( span = spans_list[0] span_id = format(span.get_span_context().span_id, "016x") trace_id = format(span.get_span_context().trace_id, "032x") + trace_flags = format(span.get_span_context().trace_flags, "02x") self.assertEqual( mock_cursor.execute.call_args[0][0], - 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'*/;", + 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}'*/;", ) self.assertEqual( span.attributes[DB_STATEMENT], - 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'*/;", + 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}'*/;", ) def test_instrument_connection_with_dbapi_sqlcomment_enabled_with_options( @@ -236,9 +238,10 @@ def test_instrument_connection_with_dbapi_sqlcomment_enabled_with_options( span = spans_list[0] span_id = format(span.get_span_context().span_id, "016x") trace_id = format(span.get_span_context().trace_id, "032x") + trace_flags = format(span.get_span_context().trace_flags, "02x") self.assertEqual( mock_cursor.execute.call_args[0][0], - f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;", + f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;", ) self.assertEqual( span.attributes[DB_STATEMENT], @@ -329,9 +332,10 @@ def test_instrument_with_dbapi_sqlcomment_enabled( span = spans_list[0] span_id = format(span.get_span_context().span_id, "016x") trace_id = format(span.get_span_context().trace_id, "032x") + trace_flags = format(span.get_span_context().trace_flags, "02x") self.assertEqual( mock_cursor.execute.call_args[0][0], - 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'*/;", + 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}'*/;", ) self.assertEqual( span.attributes[DB_STATEMENT], @@ -370,13 +374,14 @@ def test_instrument_with_dbapi_sqlcomment_enabled_stmt_enabled( span = spans_list[0] span_id = format(span.get_span_context().span_id, "016x") trace_id = format(span.get_span_context().trace_id, "032x") + trace_flags = format(span.get_span_context().trace_flags, "02x") self.assertEqual( mock_cursor.execute.call_args[0][0], - 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'*/;", + 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}'*/;", ) self.assertEqual( span.attributes[DB_STATEMENT], - 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'*/;", + 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}'*/;", ) def test_instrument_with_dbapi_sqlcomment_enabled_with_options( @@ -415,9 +420,10 @@ def test_instrument_with_dbapi_sqlcomment_enabled_with_options( span = spans_list[0] span_id = format(span.get_span_context().span_id, "016x") trace_id = format(span.get_span_context().trace_id, "032x") + trace_flags = format(span.get_span_context().trace_flags, "02x") self.assertEqual( mock_cursor.execute.call_args[0][0], - f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;", + f"Select 1 /*db_driver='mysql.connector%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;", ) self.assertEqual( span.attributes[DB_STATEMENT], diff --git a/instrumentation/opentelemetry-instrumentation-mysqlclient/tests/test_mysqlclient_integration.py b/instrumentation/opentelemetry-instrumentation-mysqlclient/tests/test_mysqlclient_integration.py index 9ff980ee3a..47ced68518 100644 --- a/instrumentation/opentelemetry-instrumentation-mysqlclient/tests/test_mysqlclient_integration.py +++ b/instrumentation/opentelemetry-instrumentation-mysqlclient/tests/test_mysqlclient_integration.py @@ -152,9 +152,10 @@ def test_instrument_connection_with_dbapi_sqlcomment_enabled(self): span = spans_list[0] span_id = format(span.get_span_context().span_id, "016x") trace_id = format(span.get_span_context().trace_id, "032x") + trace_flags = format(span.get_span_context().trace_flags, "02x") self.assertEqual( mock_cursor.execute.call_args[0][0], - 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'*/;", + 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}'*/;", ) self.assertEqual( span.attributes[SpanAttributes.DB_STATEMENT], @@ -196,13 +197,14 @@ def test_instrument_connection_with_dbapi_sqlcomment_enabled_stmt_enabled( span = spans_list[0] span_id = format(span.get_span_context().span_id, "016x") trace_id = format(span.get_span_context().trace_id, "032x") + trace_flags = format(span.get_span_context().trace_flags, "02x") self.assertEqual( mock_cursor.execute.call_args[0][0], - 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'*/;", + 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}'*/;", ) self.assertEqual( span.attributes[SpanAttributes.DB_STATEMENT], - 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'*/;", + 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}'*/;", ) def test_instrument_connection_with_dbapi_sqlcomment_enabled_with_options( @@ -244,9 +246,10 @@ def test_instrument_connection_with_dbapi_sqlcomment_enabled_with_options( span = spans_list[0] span_id = format(span.get_span_context().span_id, "016x") trace_id = format(span.get_span_context().trace_id, "032x") + trace_flags = format(span.get_span_context().trace_flags, "02x") self.assertEqual( mock_cursor.execute.call_args[0][0], - f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;", + f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;", ) self.assertEqual( span.attributes[SpanAttributes.DB_STATEMENT], @@ -345,9 +348,10 @@ def test_instrument_with_dbapi_sqlcomment_enabled( span = spans_list[0] span_id = format(span.get_span_context().span_id, "016x") trace_id = format(span.get_span_context().trace_id, "032x") + trace_flags = format(span.get_span_context().trace_flags, "02x") self.assertEqual( mock_cursor.execute.call_args[0][0], - 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'*/;", + 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}'*/;", ) self.assertEqual( span.attributes[SpanAttributes.DB_STATEMENT], @@ -390,13 +394,14 @@ def test_instrument_with_dbapi_sqlcomment_enabled_stmt_enabled( span = spans_list[0] span_id = format(span.get_span_context().span_id, "016x") trace_id = format(span.get_span_context().trace_id, "032x") + trace_flags = format(span.get_span_context().trace_flags, "02x") self.assertEqual( mock_cursor.execute.call_args[0][0], - 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'*/;", + 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}'*/;", ) self.assertEqual( span.attributes[SpanAttributes.DB_STATEMENT], - 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'*/;", + 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}'*/;", ) def test_instrument_with_dbapi_sqlcomment_enabled_with_options( @@ -439,9 +444,10 @@ def test_instrument_with_dbapi_sqlcomment_enabled_with_options( span = spans_list[0] span_id = format(span.get_span_context().span_id, "016x") trace_id = format(span.get_span_context().trace_id, "032x") + trace_flags = format(span.get_span_context().trace_flags, "02x") self.assertEqual( mock_cursor.execute.call_args[0][0], - f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;", + f"Select 1 /*db_driver='MySQLdb%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;", ) self.assertEqual( span.attributes[SpanAttributes.DB_STATEMENT], diff --git a/instrumentation/opentelemetry-instrumentation-pymysql/tests/test_pymysql_integration.py b/instrumentation/opentelemetry-instrumentation-pymysql/tests/test_pymysql_integration.py index ea59e5df7b..bbce682a26 100644 --- a/instrumentation/opentelemetry-instrumentation-pymysql/tests/test_pymysql_integration.py +++ b/instrumentation/opentelemetry-instrumentation-pymysql/tests/test_pymysql_integration.py @@ -162,9 +162,10 @@ def test_instrument_connection_with_dbapi_sqlcomment_enabled(self): span = spans_list[0] span_id = format(span.get_span_context().span_id, "016x") trace_id = format(span.get_span_context().trace_id, "032x") + trace_flags = format(span.get_span_context().trace_flags, "02x") self.assertEqual( mock_cursor.execute.call_args[0][0], - f"Select 1 /*db_driver='pymysql%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;", + f"Select 1 /*db_driver='pymysql%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;", ) self.assertEqual( span.attributes[SpanAttributes.DB_STATEMENT], @@ -201,13 +202,14 @@ def test_instrument_connection_with_dbapi_sqlcomment_enabled_stmt_enabled( span = spans_list[0] span_id = format(span.get_span_context().span_id, "016x") trace_id = format(span.get_span_context().trace_id, "032x") + trace_flags = format(span.get_span_context().trace_flags, "02x") self.assertEqual( mock_cursor.execute.call_args[0][0], - f"Select 1 /*db_driver='pymysql%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;", + f"Select 1 /*db_driver='pymysql%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;", ) self.assertEqual( span.attributes[SpanAttributes.DB_STATEMENT], - f"Select 1 /*db_driver='pymysql%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;", + f"Select 1 /*db_driver='pymysql%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;", ) def test_instrument_connection_with_dbapi_sqlcomment_enabled_with_options( @@ -244,9 +246,10 @@ def test_instrument_connection_with_dbapi_sqlcomment_enabled_with_options( span = spans_list[0] span_id = format(span.get_span_context().span_id, "016x") trace_id = format(span.get_span_context().trace_id, "032x") + trace_flags = format(span.get_span_context().trace_flags, "02x") self.assertEqual( mock_cursor.execute.call_args[0][0], - f"Select 1 /*db_driver='pymysql%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;", + f"Select 1 /*db_driver='pymysql%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;", ) self.assertEqual( span.attributes[SpanAttributes.DB_STATEMENT], @@ -335,9 +338,10 @@ def test_instrument_with_dbapi_sqlcomment_enabled( span = spans_list[0] span_id = format(span.get_span_context().span_id, "016x") trace_id = format(span.get_span_context().trace_id, "032x") + trace_flags = format(span.get_span_context().trace_flags, "02x") self.assertEqual( mock_cursor.execute.call_args[0][0], - f"Select 1 /*db_driver='pymysql%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;", + f"Select 1 /*db_driver='pymysql%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;", ) self.assertEqual( span.attributes[SpanAttributes.DB_STATEMENT], @@ -375,13 +379,14 @@ def test_instrument_with_dbapi_sqlcomment_enabled_stmt_enabled( span = spans_list[0] span_id = format(span.get_span_context().span_id, "016x") trace_id = format(span.get_span_context().trace_id, "032x") + trace_flags = format(span.get_span_context().trace_flags, "02x") self.assertEqual( mock_cursor.execute.call_args[0][0], - f"Select 1 /*db_driver='pymysql%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;", + f"Select 1 /*db_driver='pymysql%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;", ) self.assertEqual( span.attributes[SpanAttributes.DB_STATEMENT], - f"Select 1 /*db_driver='pymysql%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;", + f"Select 1 /*db_driver='pymysql%%3Afoobar',dbapi_level='123',dbapi_threadsafety='123',driver_paramstyle='test',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;", ) def test_instrument_with_dbapi_sqlcomment_enabled_with_options( @@ -419,9 +424,10 @@ def test_instrument_with_dbapi_sqlcomment_enabled_with_options( span = spans_list[0] span_id = format(span.get_span_context().span_id, "016x") trace_id = format(span.get_span_context().trace_id, "032x") + trace_flags = format(span.get_span_context().trace_flags, "02x") self.assertEqual( mock_cursor.execute.call_args[0][0], - f"Select 1 /*db_driver='pymysql%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-01'*/;", + f"Select 1 /*db_driver='pymysql%%3Afoobar',dbapi_threadsafety='123',mysql_client_version='foobaz',traceparent='00-{trace_id}-{span_id}-{trace_flags}'*/;", ) self.assertEqual( span.attributes[SpanAttributes.DB_STATEMENT], diff --git a/sdk-extension/opentelemetry-sdk-extension-aws/src/opentelemetry/sdk/extension/aws/trace/aws_xray_id_generator.py b/sdk-extension/opentelemetry-sdk-extension-aws/src/opentelemetry/sdk/extension/aws/trace/aws_xray_id_generator.py index 6068511844..f37da6b238 100644 --- a/sdk-extension/opentelemetry-sdk-extension-aws/src/opentelemetry/sdk/extension/aws/trace/aws_xray_id_generator.py +++ b/sdk-extension/opentelemetry-sdk-extension-aws/src/opentelemetry/sdk/extension/aws/trace/aws_xray_id_generator.py @@ -77,7 +77,12 @@ class AwsXRayIdGenerator(IdGenerator): def generate_span_id(self) -> int: return self.random_id_generator.generate_span_id() + # pylint: disable=no-self-use def generate_trace_id(self) -> int: trace_time = int(time.time()) trace_identifier = random.getrandbits(96) return (trace_time << 96) + trace_identifier + + # pylint: disable=no-self-use + def is_trace_id_random(self) -> bool: + return True