mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-30 05:32:30 +08:00
DB-API: db.statement inclusion of sqlcomment as opt-in (#3115)
This commit is contained in:
@ -12,6 +12,7 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# pylint: disable=too-many-lines
|
||||
|
||||
import logging
|
||||
import re
|
||||
@ -277,6 +278,47 @@ class TestDBApiIntegration(TestBase):
|
||||
cursor.query,
|
||||
r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
spans_list = self.memory_exporter.get_finished_spans()
|
||||
self.assertEqual(len(spans_list), 1)
|
||||
span = spans_list[0]
|
||||
self.assertEqual(
|
||||
span.attributes[SpanAttributes.DB_STATEMENT],
|
||||
"Select 1;",
|
||||
)
|
||||
|
||||
def test_executemany_comment_stmt_enabled(self):
|
||||
connect_module = mock.MagicMock()
|
||||
connect_module.__name__ = "test"
|
||||
connect_module.__version__ = mock.MagicMock()
|
||||
connect_module.__libpq_version__ = 123
|
||||
connect_module.apilevel = 123
|
||||
connect_module.threadsafety = 123
|
||||
connect_module.paramstyle = "test"
|
||||
|
||||
db_integration = dbapi.DatabaseApiIntegration(
|
||||
"testname",
|
||||
"postgresql",
|
||||
enable_commenter=True,
|
||||
commenter_options={"db_driver": False, "dbapi_level": False},
|
||||
connect_module=connect_module,
|
||||
enable_attribute_commenter=True,
|
||||
)
|
||||
mock_connection = db_integration.wrapped_connection(
|
||||
mock_connect, {}, {}
|
||||
)
|
||||
cursor = mock_connection.cursor()
|
||||
cursor.executemany("Select 1;")
|
||||
self.assertRegex(
|
||||
cursor.query,
|
||||
r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
spans_list = self.memory_exporter.get_finished_spans()
|
||||
self.assertEqual(len(spans_list), 1)
|
||||
span = spans_list[0]
|
||||
self.assertRegex(
|
||||
span.attributes[SpanAttributes.DB_STATEMENT],
|
||||
r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
|
||||
def test_executemany_comment_non_pep_249_compliant(self):
|
||||
class MockConnectModule:
|
||||
@ -306,8 +348,54 @@ class TestDBApiIntegration(TestBase):
|
||||
cursor.query,
|
||||
r"Select 1 /\*dbapi_level='1.0',dbapi_threadsafety='unknown',driver_paramstyle='unknown',libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
spans_list = self.memory_exporter.get_finished_spans()
|
||||
self.assertEqual(len(spans_list), 1)
|
||||
span = spans_list[0]
|
||||
self.assertEqual(
|
||||
span.attributes[SpanAttributes.DB_STATEMENT],
|
||||
"Select 1;",
|
||||
)
|
||||
|
||||
def test_executemany_comment_matches_db_statement_attribute(self):
|
||||
def test_executemany_comment_non_pep_249_compliant_stmt_enabled(self):
|
||||
class MockConnectModule:
|
||||
def __getattr__(self, name):
|
||||
if name == "__name__":
|
||||
return "test"
|
||||
if name == "__version__":
|
||||
return mock.MagicMock()
|
||||
if name == "__libpq_version__":
|
||||
return 123
|
||||
raise AttributeError("attribute missing")
|
||||
|
||||
connect_module = MockConnectModule()
|
||||
db_integration = dbapi.DatabaseApiIntegration(
|
||||
"testname",
|
||||
"postgresql",
|
||||
enable_commenter=True,
|
||||
connect_module=connect_module,
|
||||
commenter_options={"db_driver": False},
|
||||
enable_attribute_commenter=True,
|
||||
)
|
||||
mock_connection = db_integration.wrapped_connection(
|
||||
mock_connect, {}, {}
|
||||
)
|
||||
cursor = mock_connection.cursor()
|
||||
cursor.executemany("Select 1;")
|
||||
self.assertRegex(
|
||||
cursor.query,
|
||||
r"Select 1 /\*dbapi_level='1.0',dbapi_threadsafety='unknown',driver_paramstyle='unknown',libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
spans_list = self.memory_exporter.get_finished_spans()
|
||||
self.assertEqual(len(spans_list), 1)
|
||||
span = spans_list[0]
|
||||
self.assertRegex(
|
||||
span.attributes[SpanAttributes.DB_STATEMENT],
|
||||
r"Select 1 /\*dbapi_level='1.0',dbapi_threadsafety='unknown',driver_paramstyle='unknown',libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
|
||||
def test_executemany_comment_stmt_enabled_matches_db_statement_attribute(
|
||||
self,
|
||||
):
|
||||
connect_module = mock.MagicMock()
|
||||
connect_module.__version__ = mock.MagicMock()
|
||||
connect_module.__libpq_version__ = 123
|
||||
@ -321,6 +409,7 @@ class TestDBApiIntegration(TestBase):
|
||||
enable_commenter=True,
|
||||
commenter_options={"db_driver": False, "dbapi_level": False},
|
||||
connect_module=connect_module,
|
||||
enable_attribute_commenter=True,
|
||||
)
|
||||
mock_connection = db_integration.wrapped_connection(
|
||||
mock_connect, {}, {}
|
||||
@ -371,6 +460,50 @@ class TestDBApiIntegration(TestBase):
|
||||
cursor.query,
|
||||
r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
spans_list = self.memory_exporter.get_finished_spans()
|
||||
self.assertEqual(len(spans_list), 1)
|
||||
span = spans_list[0]
|
||||
self.assertEqual(
|
||||
span.attributes[SpanAttributes.DB_STATEMENT],
|
||||
"Select 1;",
|
||||
)
|
||||
|
||||
def test_compatible_build_version_psycopg_psycopg2_libpq_stmt_enabled(
|
||||
self,
|
||||
):
|
||||
connect_module = mock.MagicMock()
|
||||
connect_module.__name__ = "test"
|
||||
connect_module.__version__ = mock.MagicMock()
|
||||
connect_module.pq = mock.MagicMock()
|
||||
connect_module.pq.__build_version__ = 123
|
||||
connect_module.apilevel = 123
|
||||
connect_module.threadsafety = 123
|
||||
connect_module.paramstyle = "test"
|
||||
|
||||
db_integration = dbapi.DatabaseApiIntegration(
|
||||
"testname",
|
||||
"postgresql",
|
||||
enable_commenter=True,
|
||||
commenter_options={"db_driver": False, "dbapi_level": False},
|
||||
connect_module=connect_module,
|
||||
enable_attribute_commenter=True,
|
||||
)
|
||||
mock_connection = db_integration.wrapped_connection(
|
||||
mock_connect, {}, {}
|
||||
)
|
||||
cursor = mock_connection.cursor()
|
||||
cursor.executemany("Select 1;")
|
||||
self.assertRegex(
|
||||
cursor.query,
|
||||
r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
spans_list = self.memory_exporter.get_finished_spans()
|
||||
self.assertEqual(len(spans_list), 1)
|
||||
span = spans_list[0]
|
||||
self.assertRegex(
|
||||
span.attributes[SpanAttributes.DB_STATEMENT],
|
||||
r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
|
||||
def test_executemany_psycopg2_integration_comment(self):
|
||||
connect_module = mock.MagicMock()
|
||||
@ -397,6 +530,47 @@ class TestDBApiIntegration(TestBase):
|
||||
cursor.query,
|
||||
r"Select 1 /\*db_driver='psycopg2%%3A1.2.3',dbapi_threadsafety=123,driver_paramstyle='test',libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
spans_list = self.memory_exporter.get_finished_spans()
|
||||
self.assertEqual(len(spans_list), 1)
|
||||
span = spans_list[0]
|
||||
self.assertEqual(
|
||||
span.attributes[SpanAttributes.DB_STATEMENT],
|
||||
"Select 1;",
|
||||
)
|
||||
|
||||
def test_executemany_psycopg2_integration_comment_stmt_enabled(self):
|
||||
connect_module = mock.MagicMock()
|
||||
connect_module.__name__ = "psycopg2"
|
||||
connect_module.__version__ = "1.2.3"
|
||||
connect_module.__libpq_version__ = 123
|
||||
connect_module.apilevel = 123
|
||||
connect_module.threadsafety = 123
|
||||
connect_module.paramstyle = "test"
|
||||
|
||||
db_integration = dbapi.DatabaseApiIntegration(
|
||||
"testname",
|
||||
"postgresql",
|
||||
enable_commenter=True,
|
||||
commenter_options={"db_driver": True, "dbapi_level": False},
|
||||
connect_module=connect_module,
|
||||
enable_attribute_commenter=True,
|
||||
)
|
||||
mock_connection = db_integration.wrapped_connection(
|
||||
mock_connect, {}, {}
|
||||
)
|
||||
cursor = mock_connection.cursor()
|
||||
cursor.executemany("Select 1;")
|
||||
self.assertRegex(
|
||||
cursor.query,
|
||||
r"Select 1 /\*db_driver='psycopg2%%3A1.2.3',dbapi_threadsafety=123,driver_paramstyle='test',libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
spans_list = self.memory_exporter.get_finished_spans()
|
||||
self.assertEqual(len(spans_list), 1)
|
||||
span = spans_list[0]
|
||||
self.assertRegex(
|
||||
span.attributes[SpanAttributes.DB_STATEMENT],
|
||||
r"Select 1 /\*db_driver='psycopg2%%3A1.2.3',dbapi_threadsafety=123,driver_paramstyle='test',libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
|
||||
def test_executemany_psycopg_integration_comment(self):
|
||||
connect_module = mock.MagicMock()
|
||||
@ -424,6 +598,48 @@ class TestDBApiIntegration(TestBase):
|
||||
cursor.query,
|
||||
r"Select 1 /\*db_driver='psycopg%%3A1.2.3',dbapi_threadsafety=123,driver_paramstyle='test',libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
spans_list = self.memory_exporter.get_finished_spans()
|
||||
self.assertEqual(len(spans_list), 1)
|
||||
span = spans_list[0]
|
||||
self.assertEqual(
|
||||
span.attributes[SpanAttributes.DB_STATEMENT],
|
||||
"Select 1;",
|
||||
)
|
||||
|
||||
def test_executemany_psycopg_integration_comment_stmt_enabled(self):
|
||||
connect_module = mock.MagicMock()
|
||||
connect_module.__name__ = "psycopg"
|
||||
connect_module.__version__ = "1.2.3"
|
||||
connect_module.pq = mock.MagicMock()
|
||||
connect_module.pq.__build_version__ = 123
|
||||
connect_module.apilevel = 123
|
||||
connect_module.threadsafety = 123
|
||||
connect_module.paramstyle = "test"
|
||||
|
||||
db_integration = dbapi.DatabaseApiIntegration(
|
||||
"testname",
|
||||
"postgresql",
|
||||
enable_commenter=True,
|
||||
commenter_options={"db_driver": True, "dbapi_level": False},
|
||||
connect_module=connect_module,
|
||||
enable_attribute_commenter=True,
|
||||
)
|
||||
mock_connection = db_integration.wrapped_connection(
|
||||
mock_connect, {}, {}
|
||||
)
|
||||
cursor = mock_connection.cursor()
|
||||
cursor.executemany("Select 1;")
|
||||
self.assertRegex(
|
||||
cursor.query,
|
||||
r"Select 1 /\*db_driver='psycopg%%3A1.2.3',dbapi_threadsafety=123,driver_paramstyle='test',libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
spans_list = self.memory_exporter.get_finished_spans()
|
||||
self.assertEqual(len(spans_list), 1)
|
||||
span = spans_list[0]
|
||||
self.assertRegex(
|
||||
span.attributes[SpanAttributes.DB_STATEMENT],
|
||||
r"Select 1 /\*db_driver='psycopg%%3A1.2.3',dbapi_threadsafety=123,driver_paramstyle='test',libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
|
||||
def test_executemany_mysqlconnector_integration_comment(self):
|
||||
connect_module = mock.MagicMock()
|
||||
@ -450,6 +666,47 @@ class TestDBApiIntegration(TestBase):
|
||||
cursor.query,
|
||||
r"Select 1 /\*db_driver='mysql.connector%%3A1.2.3',dbapi_threadsafety=123,driver_paramstyle='test',mysql_client_version='1.2.3',traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
spans_list = self.memory_exporter.get_finished_spans()
|
||||
self.assertEqual(len(spans_list), 1)
|
||||
span = spans_list[0]
|
||||
self.assertEqual(
|
||||
span.attributes[SpanAttributes.DB_STATEMENT],
|
||||
"Select 1;",
|
||||
)
|
||||
|
||||
def test_executemany_mysqlconnector_integration_comment_stmt_enabled(self):
|
||||
connect_module = mock.MagicMock()
|
||||
connect_module.__name__ = "mysql.connector"
|
||||
connect_module.__version__ = "1.2.3"
|
||||
connect_module.apilevel = 123
|
||||
connect_module.threadsafety = 123
|
||||
connect_module.paramstyle = "test"
|
||||
|
||||
db_integration = dbapi.DatabaseApiIntegration(
|
||||
"testname",
|
||||
"mysql",
|
||||
enable_commenter=True,
|
||||
commenter_options={"db_driver": True, "dbapi_level": False},
|
||||
connect_module=connect_module,
|
||||
enable_attribute_commenter=True,
|
||||
)
|
||||
|
||||
mock_connection = db_integration.wrapped_connection(
|
||||
mock_connect, {}, {}
|
||||
)
|
||||
cursor = mock_connection.cursor()
|
||||
cursor.executemany("Select 1;")
|
||||
self.assertRegex(
|
||||
cursor.query,
|
||||
r"Select 1 /\*db_driver='mysql.connector%%3A1.2.3',dbapi_threadsafety=123,driver_paramstyle='test',mysql_client_version='1.2.3',traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
spans_list = self.memory_exporter.get_finished_spans()
|
||||
self.assertEqual(len(spans_list), 1)
|
||||
span = spans_list[0]
|
||||
self.assertRegex(
|
||||
span.attributes[SpanAttributes.DB_STATEMENT],
|
||||
r"Select 1 /\*db_driver='mysql.connector%%3A1.2.3',dbapi_threadsafety=123,driver_paramstyle='test',mysql_client_version='1.2.3',traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
|
||||
@mock.patch("opentelemetry.instrumentation.dbapi.util_version")
|
||||
def test_executemany_mysqlclient_integration_comment(
|
||||
@ -485,6 +742,56 @@ class TestDBApiIntegration(TestBase):
|
||||
cursor.query,
|
||||
r"Select 1 /\*db_driver='MySQLdb%%3A1.2.3',dbapi_threadsafety=123,driver_paramstyle='test',mysql_client_version='123',traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
spans_list = self.memory_exporter.get_finished_spans()
|
||||
self.assertEqual(len(spans_list), 1)
|
||||
span = spans_list[0]
|
||||
self.assertEqual(
|
||||
span.attributes[SpanAttributes.DB_STATEMENT],
|
||||
"Select 1;",
|
||||
)
|
||||
|
||||
@mock.patch("opentelemetry.instrumentation.dbapi.util_version")
|
||||
def test_executemany_mysqlclient_integration_comment_stmt_enabled(
|
||||
self,
|
||||
mock_dbapi_util_version,
|
||||
):
|
||||
mock_dbapi_util_version.return_value = "1.2.3"
|
||||
connect_module = mock.MagicMock()
|
||||
connect_module.__name__ = "MySQLdb"
|
||||
connect_module.__version__ = "1.2.3"
|
||||
connect_module.apilevel = 123
|
||||
connect_module.threadsafety = 123
|
||||
connect_module.paramstyle = "test"
|
||||
connect_module._mysql = mock.MagicMock()
|
||||
connect_module._mysql.get_client_info = mock.MagicMock(
|
||||
return_value="123"
|
||||
)
|
||||
|
||||
db_integration = dbapi.DatabaseApiIntegration(
|
||||
"testname",
|
||||
"mysql",
|
||||
enable_commenter=True,
|
||||
commenter_options={"db_driver": True, "dbapi_level": False},
|
||||
connect_module=connect_module,
|
||||
enable_attribute_commenter=True,
|
||||
)
|
||||
|
||||
mock_connection = db_integration.wrapped_connection(
|
||||
mock_connect, {}, {}
|
||||
)
|
||||
cursor = mock_connection.cursor()
|
||||
cursor.executemany("Select 1;")
|
||||
self.assertRegex(
|
||||
cursor.query,
|
||||
r"Select 1 /\*db_driver='MySQLdb%%3A1.2.3',dbapi_threadsafety=123,driver_paramstyle='test',mysql_client_version='123',traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
spans_list = self.memory_exporter.get_finished_spans()
|
||||
self.assertEqual(len(spans_list), 1)
|
||||
span = spans_list[0]
|
||||
self.assertRegex(
|
||||
span.attributes[SpanAttributes.DB_STATEMENT],
|
||||
r"Select 1 /\*db_driver='MySQLdb%%3A1.2.3',dbapi_threadsafety=123,driver_paramstyle='test',mysql_client_version='123',traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
|
||||
def test_executemany_pymysql_integration_comment(self):
|
||||
connect_module = mock.MagicMock()
|
||||
@ -512,6 +819,48 @@ class TestDBApiIntegration(TestBase):
|
||||
cursor.query,
|
||||
r"Select 1 /\*db_driver='pymysql%%3A1.2.3',dbapi_threadsafety=123,driver_paramstyle='test',mysql_client_version='123',traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
spans_list = self.memory_exporter.get_finished_spans()
|
||||
self.assertEqual(len(spans_list), 1)
|
||||
span = spans_list[0]
|
||||
self.assertEqual(
|
||||
span.attributes[SpanAttributes.DB_STATEMENT],
|
||||
"Select 1;",
|
||||
)
|
||||
|
||||
def test_executemany_pymysql_integration_comment_stmt_enabled(self):
|
||||
connect_module = mock.MagicMock()
|
||||
connect_module.__name__ = "pymysql"
|
||||
connect_module.__version__ = "1.2.3"
|
||||
connect_module.apilevel = 123
|
||||
connect_module.threadsafety = 123
|
||||
connect_module.paramstyle = "test"
|
||||
connect_module.get_client_info = mock.MagicMock(return_value="123")
|
||||
|
||||
db_integration = dbapi.DatabaseApiIntegration(
|
||||
"testname",
|
||||
"mysql",
|
||||
enable_commenter=True,
|
||||
commenter_options={"db_driver": True, "dbapi_level": False},
|
||||
connect_module=connect_module,
|
||||
enable_attribute_commenter=True,
|
||||
)
|
||||
|
||||
mock_connection = db_integration.wrapped_connection(
|
||||
mock_connect, {}, {}
|
||||
)
|
||||
cursor = mock_connection.cursor()
|
||||
cursor.executemany("Select 1;")
|
||||
self.assertRegex(
|
||||
cursor.query,
|
||||
r"Select 1 /\*db_driver='pymysql%%3A1.2.3',dbapi_threadsafety=123,driver_paramstyle='test',mysql_client_version='123',traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
spans_list = self.memory_exporter.get_finished_spans()
|
||||
self.assertEqual(len(spans_list), 1)
|
||||
span = spans_list[0]
|
||||
self.assertRegex(
|
||||
span.attributes[SpanAttributes.DB_STATEMENT],
|
||||
r"Select 1 /\*db_driver='pymysql%%3A1.2.3',dbapi_threadsafety=123,driver_paramstyle='test',mysql_client_version='123',traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
|
||||
def test_executemany_flask_integration_comment(self):
|
||||
connect_module = mock.MagicMock()
|
||||
@ -544,6 +893,58 @@ class TestDBApiIntegration(TestBase):
|
||||
cursor.query,
|
||||
r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',flask=1,libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
spans_list = self.memory_exporter.get_finished_spans()
|
||||
self.assertEqual(len(spans_list), 1)
|
||||
span = spans_list[0]
|
||||
self.assertEqual(
|
||||
span.attributes[SpanAttributes.DB_STATEMENT],
|
||||
"Select 1;",
|
||||
)
|
||||
|
||||
clear_context = context.set_value(
|
||||
"SQLCOMMENTER_ORM_TAGS_AND_VALUES", {}, current_context
|
||||
)
|
||||
context.attach(clear_context)
|
||||
|
||||
def test_executemany_flask_integration_comment_stmt_enabled(self):
|
||||
connect_module = mock.MagicMock()
|
||||
connect_module.__name__ = "test"
|
||||
connect_module.__version__ = mock.MagicMock()
|
||||
connect_module.__libpq_version__ = 123
|
||||
connect_module.apilevel = 123
|
||||
connect_module.threadsafety = 123
|
||||
connect_module.paramstyle = "test"
|
||||
|
||||
db_integration = dbapi.DatabaseApiIntegration(
|
||||
"testname",
|
||||
"postgresql",
|
||||
enable_commenter=True,
|
||||
commenter_options={"db_driver": False, "dbapi_level": False},
|
||||
connect_module=connect_module,
|
||||
enable_attribute_commenter=True,
|
||||
)
|
||||
current_context = context.get_current()
|
||||
sqlcommenter_context = context.set_value(
|
||||
"SQLCOMMENTER_ORM_TAGS_AND_VALUES", {"flask": 1}, current_context
|
||||
)
|
||||
context.attach(sqlcommenter_context)
|
||||
|
||||
mock_connection = db_integration.wrapped_connection(
|
||||
mock_connect, {}, {}
|
||||
)
|
||||
cursor = mock_connection.cursor()
|
||||
cursor.executemany("Select 1;")
|
||||
self.assertRegex(
|
||||
cursor.query,
|
||||
r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',flask=1,libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
spans_list = self.memory_exporter.get_finished_spans()
|
||||
self.assertEqual(len(spans_list), 1)
|
||||
span = spans_list[0]
|
||||
self.assertRegex(
|
||||
span.attributes[SpanAttributes.DB_STATEMENT],
|
||||
r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',flask=1,libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||
)
|
||||
|
||||
clear_context = context.set_value(
|
||||
"SQLCOMMENTER_ORM_TAGS_AND_VALUES", {}, current_context
|
||||
@ -603,6 +1004,7 @@ class TestDBApiIntegration(TestBase):
|
||||
self.assertEqual(kwargs["enable_commenter"], False)
|
||||
self.assertEqual(kwargs["commenter_options"], None)
|
||||
self.assertEqual(kwargs["connect_module"], None)
|
||||
self.assertEqual(kwargs["enable_attribute_commenter"], False)
|
||||
|
||||
@mock.patch("opentelemetry.instrumentation.dbapi.DatabaseApiIntegration")
|
||||
def test_instrument_connection_kwargs_provided(self, mock_dbapiint):
|
||||
@ -619,6 +1021,7 @@ class TestDBApiIntegration(TestBase):
|
||||
enable_commenter=True,
|
||||
commenter_options={"foo": "bar"},
|
||||
connect_module=mock_connect_module,
|
||||
enable_attribute_commenter=True,
|
||||
)
|
||||
kwargs = mock_dbapiint.call_args[1]
|
||||
self.assertEqual(kwargs["connection_attributes"], {"foo": "bar"})
|
||||
@ -628,6 +1031,7 @@ class TestDBApiIntegration(TestBase):
|
||||
self.assertEqual(kwargs["enable_commenter"], True)
|
||||
self.assertEqual(kwargs["commenter_options"], {"foo": "bar"})
|
||||
self.assertIs(kwargs["connect_module"], mock_connect_module)
|
||||
self.assertEqual(kwargs["enable_attribute_commenter"], True)
|
||||
|
||||
def test_uninstrument_connection(self):
|
||||
connection = mock.Mock()
|
||||
|
Reference in New Issue
Block a user