@@ -279,7 +279,7 @@ def test_executemany_comment(self):
279279 connect_module = mock .MagicMock ()
280280 connect_module .__name__ = "test"
281281 connect_module .__version__ = mock .MagicMock ()
282- connect_module .__libpq_version__ = 123
282+ connect_module .pq . version . return_value = 123
283283 connect_module .apilevel = 123
284284 connect_module .threadsafety = 123
285285 connect_module .paramstyle = "test"
@@ -312,7 +312,7 @@ def test_executemany_comment_stmt_enabled(self):
312312 connect_module = mock .MagicMock ()
313313 connect_module .__name__ = "test"
314314 connect_module .__version__ = mock .MagicMock ()
315- connect_module .__libpq_version__ = 123
315+ connect_module .pq . version . return_value = 123
316316 connect_module .apilevel = 123
317317 connect_module .threadsafety = 123
318318 connect_module .paramstyle = "test"
@@ -420,7 +420,7 @@ def test_executemany_comment_stmt_enabled_matches_db_statement_attribute(
420420 ):
421421 connect_module = mock .MagicMock ()
422422 connect_module .__version__ = mock .MagicMock ()
423- connect_module .__libpq_version__ = 123
423+ connect_module .pq . version . return_value = 123
424424 connect_module .apilevel = 123
425425 connect_module .threadsafety = 123
426426 connect_module .paramstyle = "test"
@@ -456,12 +456,12 @@ def test_executemany_comment_stmt_enabled_matches_db_statement_attribute(
456456 ).group ()
457457 self .assertEqual (cursor_span_id , db_statement_span_id )
458458
459- def test_compatible_build_version_psycopg_psycopg2_libpq (self ):
459+ def test_compatible_build_version_psycopg2_libpq (self ):
460460 connect_module = mock .MagicMock ()
461461 connect_module .__name__ = "test"
462462 connect_module .__version__ = mock .MagicMock ()
463- connect_module .pq = mock . MagicMock ()
464- connect_module .pq . __build_version__ = 123
463+ connect_module .pq . version . side_effect = AttributeError
464+ connect_module .__libpq_version__ = 123
465465 connect_module .apilevel = 123
466466 connect_module .threadsafety = 123
467467 connect_module .paramstyle = "test"
@@ -490,14 +490,47 @@ def test_compatible_build_version_psycopg_psycopg2_libpq(self):
490490 "Select 1;" ,
491491 )
492492
493- def test_compatible_build_version_psycopg_psycopg2_libpq_stmt_enabled (
493+ def test_compatible_build_version_psycopg_libpq (self ):
494+ connect_module = mock .MagicMock ()
495+ connect_module .__name__ = "test"
496+ connect_module .__version__ = mock .MagicMock ()
497+ connect_module .pq .version .return_value = 123
498+ connect_module .apilevel = 123
499+ connect_module .threadsafety = 123
500+ connect_module .paramstyle = "test"
501+
502+ db_integration = dbapi .DatabaseApiIntegration (
503+ "instrumenting_module_test_name" ,
504+ "postgresql" ,
505+ enable_commenter = True ,
506+ commenter_options = {"db_driver" : False , "dbapi_level" : False },
507+ connect_module = connect_module ,
508+ )
509+ mock_connection = db_integration .wrapped_connection (
510+ mock_connect , {}, {}
511+ )
512+ cursor = mock_connection .cursor ()
513+ cursor .executemany ("Select 1;" )
514+ self .assertRegex (
515+ cursor .query ,
516+ 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}'\*/;" ,
517+ )
518+ spans_list = self .memory_exporter .get_finished_spans ()
519+ self .assertEqual (len (spans_list ), 1 )
520+ span = spans_list [0 ]
521+ self .assertEqual (
522+ span .attributes [SpanAttributes .DB_STATEMENT ],
523+ "Select 1;" ,
524+ )
525+
526+ def test_no_libpq_version_when_we_dont_instrument_the_root_module (
494527 self ,
495528 ):
496529 connect_module = mock .MagicMock ()
497530 connect_module .__name__ = "test"
498531 connect_module .__version__ = mock .MagicMock ()
499- connect_module .pq = mock . MagicMock ()
500- connect_module .pq . __build_version__ = 123
532+ connect_module .pq . version . side_effect = AttributeError
533+ connect_module .__libpq_version__ = None
501534 connect_module .apilevel = 123
502535 connect_module .threadsafety = 123
503536 connect_module .paramstyle = "test"
@@ -517,20 +550,21 @@ def test_compatible_build_version_psycopg_psycopg2_libpq_stmt_enabled(
517550 cursor .executemany ("Select 1;" )
518551 self .assertRegex (
519552 cursor .query ,
520- 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}'\*/;" ,
553+ r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;" ,
521554 )
522555 spans_list = self .memory_exporter .get_finished_spans ()
523556 self .assertEqual (len (spans_list ), 1 )
524557 span = spans_list [0 ]
525558 self .assertRegex (
526559 span .attributes [SpanAttributes .DB_STATEMENT ],
527- 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}'\*/;" ,
560+ r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;" ,
528561 )
529562
530563 def test_executemany_psycopg2_integration_comment (self ):
531564 connect_module = mock .MagicMock ()
532565 connect_module .__name__ = "psycopg2"
533566 connect_module .__version__ = "1.2.3"
567+ connect_module .pq .version .side_effect = AttributeError
534568 connect_module .__libpq_version__ = 123
535569 connect_module .apilevel = 123
536570 connect_module .threadsafety = 123
@@ -564,6 +598,7 @@ def test_executemany_psycopg2_integration_comment_stmt_enabled(self):
564598 connect_module = mock .MagicMock ()
565599 connect_module .__name__ = "psycopg2"
566600 connect_module .__version__ = "1.2.3"
601+ connect_module .pq .version .side_effect = AttributeError
567602 connect_module .__libpq_version__ = 123
568603 connect_module .apilevel = 123
569604 connect_module .threadsafety = 123
@@ -598,8 +633,7 @@ def test_executemany_psycopg_integration_comment(self):
598633 connect_module = mock .MagicMock ()
599634 connect_module .__name__ = "psycopg"
600635 connect_module .__version__ = "1.2.3"
601- connect_module .pq = mock .MagicMock ()
602- connect_module .pq .__build_version__ = 123
636+ connect_module .pq .version .return_value = 123
603637 connect_module .apilevel = 123
604638 connect_module .threadsafety = 123
605639 connect_module .paramstyle = "test"
@@ -632,8 +666,7 @@ def test_executemany_psycopg_integration_comment_stmt_enabled(self):
632666 connect_module = mock .MagicMock ()
633667 connect_module .__name__ = "psycopg"
634668 connect_module .__version__ = "1.2.3"
635- connect_module .pq = mock .MagicMock ()
636- connect_module .pq .__build_version__ = 123
669+ connect_module .pq .version .return_value = 123
637670 connect_module .apilevel = 123
638671 connect_module .threadsafety = 123
639672 connect_module .paramstyle = "test"
@@ -887,8 +920,7 @@ def test_executemany_pymysql_integration_comment_stmt_enabled(self):
887920 def test_executemany_flask_integration_comment (self ):
888921 connect_module = mock .MagicMock ()
889922 connect_module .__name__ = "test"
890- connect_module .__version__ = mock .MagicMock ()
891- connect_module .__libpq_version__ = 123
923+ connect_module .pq .version .return_value = 123
892924 connect_module .apilevel = 123
893925 connect_module .threadsafety = 123
894926 connect_module .paramstyle = "test"
@@ -904,7 +936,7 @@ def test_executemany_flask_integration_comment(self):
904936 sqlcommenter_context = context .set_value (
905937 "SQLCOMMENTER_ORM_TAGS_AND_VALUES" , {"flask" : 1 }, current_context
906938 )
907- context .attach (sqlcommenter_context )
939+ token = context .attach (sqlcommenter_context )
908940
909941 mock_connection = db_integration .wrapped_connection (
910942 mock_connect , {}, {}
@@ -923,16 +955,13 @@ def test_executemany_flask_integration_comment(self):
923955 "Select 1;" ,
924956 )
925957
926- clear_context = context .set_value (
927- "SQLCOMMENTER_ORM_TAGS_AND_VALUES" , {}, current_context
928- )
929- context .attach (clear_context )
958+ context .detach (token )
930959
931960 def test_executemany_flask_integration_comment_stmt_enabled (self ):
932961 connect_module = mock .MagicMock ()
933962 connect_module .__name__ = "test"
934963 connect_module .__version__ = mock .MagicMock ()
935- connect_module .__libpq_version__ = 123
964+ connect_module .pq . version . return_value = 123
936965 connect_module .apilevel = 123
937966 connect_module .threadsafety = 123
938967 connect_module .paramstyle = "test"
@@ -949,7 +978,7 @@ def test_executemany_flask_integration_comment_stmt_enabled(self):
949978 sqlcommenter_context = context .set_value (
950979 "SQLCOMMENTER_ORM_TAGS_AND_VALUES" , {"flask" : 1 }, current_context
951980 )
952- context .attach (sqlcommenter_context )
981+ token = context .attach (sqlcommenter_context )
953982
954983 mock_connection = db_integration .wrapped_connection (
955984 mock_connect , {}, {}
@@ -968,10 +997,7 @@ def test_executemany_flask_integration_comment_stmt_enabled(self):
968997 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}'\*/;" ,
969998 )
970999
971- clear_context = context .set_value (
972- "SQLCOMMENTER_ORM_TAGS_AND_VALUES" , {}, current_context
973- )
974- context .attach (clear_context )
1000+ context .detach (token )
9751001
9761002 def test_callproc (self ):
9771003 db_integration = dbapi .DatabaseApiIntegration (
@@ -1096,7 +1122,7 @@ def test_non_string_sql_conversion(self):
10961122 connect_module = mock .MagicMock ()
10971123 connect_module .__name__ = "test"
10981124 connect_module .__version__ = "1.0"
1099- connect_module .__libpq_version__ = 123
1125+ connect_module .pq . version . return_value = 123
11001126 connect_module .apilevel = "2.0"
11011127 connect_module .threadsafety = 1
11021128 connect_module .paramstyle = "test"
0 commit comments