Skip to content

Commit b9a52e9

Browse files
Add get_traced_cnx or cur_proxy tests
1 parent cb9a475 commit b9a52e9

File tree

1 file changed

+94
-1
lines changed

1 file changed

+94
-1
lines changed

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

Lines changed: 94 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,15 @@
1515
from unittest import mock
1616

1717
import mysql.connector
18+
import pytest
1819

1920
import opentelemetry.instrumentation.mysql
2021
from opentelemetry import trace as trace_api
21-
from opentelemetry.instrumentation.mysql import MySQLInstrumentor
22+
from opentelemetry.instrumentation.mysql import (
23+
MySQLInstrumentor,
24+
get_traced_connection_proxy,
25+
get_traced_cursor_proxy,
26+
)
2227
from opentelemetry.sdk import resources
2328
from opentelemetry.test.test_base import TestBase
2429

@@ -33,6 +38,10 @@ def connect_and_execute_query():
3338

3439

3540
class TestMysqlIntegration(TestBase):
41+
@pytest.fixture(autouse=True)
42+
def inject_fixtures(self, caplog):
43+
self.caplog = caplog # pylint: disable=attribute-defined-outside-init
44+
3645
def tearDown(self):
3746
super().tearDown()
3847
with self.disable_logging():
@@ -372,3 +381,87 @@ def test_uninstrument_connection(self, mock_connect):
372381

373382
spans_list = self.memory_exporter.get_finished_spans()
374383
self.assertEqual(len(spans_list), 1)
384+
385+
def test_get_traced_cursor_proxy_with_enable_commenter_cursor(self):
386+
mock_cursor = mock.Mock()
387+
mock_dbapiint = mock.Mock()
388+
mock_enable = mock.Mock()
389+
proxy = get_traced_cursor_proxy(
390+
mock_cursor,
391+
mock_dbapiint,
392+
mock_enable,
393+
)
394+
self.assertIs(proxy.__wrapped__, mock_cursor)
395+
self.assertIs(proxy._cursor_tracer._db_api_integration, mock_dbapiint)
396+
self.assertIs(proxy._cursor_tracer._commenter_enabled, mock_enable)
397+
398+
def test_get_traced_connection_proxy_not_dbapi_enable_commenter(self):
399+
mock_connection = mock.Mock()
400+
mock_dbapiint = mock.Mock()
401+
mock_dbapiint.enable_commenter = False
402+
cnx_proxy = get_traced_connection_proxy(
403+
mock_connection,
404+
mock_dbapiint,
405+
)
406+
self.assertIs(cnx_proxy.__wrapped__, mock_connection)
407+
cur_proxy = cnx_proxy.cursor()
408+
self.assertIs(
409+
cur_proxy._cursor_tracer._db_api_integration, mock_dbapiint
410+
)
411+
self.assertFalse(cur_proxy._cursor_tracer._commenter_enabled)
412+
413+
def test_get_traced_connection_proxy_dbapi_enable_commenter_none_prepared_cursor(
414+
self,
415+
):
416+
mock_connection = mock.Mock()
417+
mock_dbapiint = mock.Mock()
418+
mock_dbapiint.enable_commenter = True
419+
cnx_proxy = get_traced_connection_proxy(
420+
mock_connection,
421+
mock_dbapiint,
422+
)
423+
self.assertIs(cnx_proxy.__wrapped__, mock_connection)
424+
cur_proxy = cnx_proxy.cursor()
425+
self.assertIs(
426+
cur_proxy._cursor_tracer._db_api_integration, mock_dbapiint
427+
)
428+
self.assertTrue(cur_proxy._cursor_tracer._commenter_enabled)
429+
430+
def test_get_traced_connection_proxy_dbapi_enable_commenter_not_prepared_cursor(
431+
self,
432+
):
433+
mock_connection = mock.Mock()
434+
mock_dbapiint = mock.Mock()
435+
mock_dbapiint.enable_commenter = True
436+
cnx_proxy = get_traced_connection_proxy(
437+
mock_connection,
438+
mock_dbapiint,
439+
)
440+
self.assertIs(cnx_proxy.__wrapped__, mock_connection)
441+
cur_proxy = cnx_proxy.cursor(prepared=False)
442+
self.assertIs(
443+
cur_proxy._cursor_tracer._db_api_integration, mock_dbapiint
444+
)
445+
self.assertTrue(cur_proxy._cursor_tracer._commenter_enabled)
446+
447+
def test_get_traced_connection_proxy_dbapi_enable_commenter_prepared_cursor(
448+
self,
449+
):
450+
mock_connection = mock.Mock()
451+
mock_dbapiint = mock.Mock()
452+
mock_dbapiint.enable_commenter = True
453+
mock_dbapiint.connect_module.__name__ = "foo-module"
454+
cnx_proxy = get_traced_connection_proxy(
455+
mock_connection,
456+
mock_dbapiint,
457+
)
458+
self.assertIs(cnx_proxy.__wrapped__, mock_connection)
459+
cur_proxy = cnx_proxy.cursor(prepared=True)
460+
self.assertIs(
461+
cur_proxy._cursor_tracer._db_api_integration, mock_dbapiint
462+
)
463+
self.assertFalse(cur_proxy._cursor_tracer._commenter_enabled)
464+
assert (
465+
self.caplog.records[0].getMessage()
466+
== "sqlcomment is not supported for query statements executed by cursors with native prepared statement support. Disabling sqlcommenting for instrumentation of foo-module."
467+
)

0 commit comments

Comments
 (0)