55
66package io .opentelemetry .javaagent .instrumentation .jdbc .test ;
77
8+ import static io .opentelemetry .instrumentation .api .internal .SemconvStability .emitStableDatabaseSemconv ;
9+ import static io .opentelemetry .instrumentation .testing .junit .db .SemconvStabilityUtil .maybeStable ;
810import static io .opentelemetry .sdk .testing .assertj .OpenTelemetryAssertions .equalTo ;
911import static io .opentelemetry .sdk .testing .assertj .OpenTelemetryAssertions .satisfies ;
1012import static io .opentelemetry .semconv .ServerAttributes .SERVER_ADDRESS ;
@@ -372,18 +374,20 @@ public void testBasicStatement(
372374 .hasParent (trace .getSpan (0 ))
373375 .hasAttributesSatisfyingExactly (
374376 equalTo (DB_SYSTEM , system ),
375- equalTo (DB_NAME , dbNameLower ),
377+ equalTo (maybeStable ( DB_NAME ) , dbNameLower ),
376378 satisfies (
377379 DB_USER ,
378380 val -> {
379- if (username != null ) {
381+ if (emitStableDatabaseSemconv ()) {
382+ val .isNull ();
383+ } else {
380384 val .isEqualTo (username );
381385 }
382386 }),
383- equalTo (DB_CONNECTION_STRING , url ),
384- equalTo (DB_STATEMENT , sanitizedQuery ),
385- equalTo (DB_OPERATION , "SELECT" ),
386- equalTo (DB_SQL_TABLE , table ))));
387+ equalTo (DB_CONNECTION_STRING , emitStableDatabaseSemconv () ? null : url ),
388+ equalTo (maybeStable ( DB_STATEMENT ) , sanitizedQuery ),
389+ equalTo (maybeStable ( DB_OPERATION ) , "SELECT" ),
390+ equalTo (maybeStable ( DB_SQL_TABLE ) , table ))));
387391 }
388392
389393 static Stream <Arguments > preparedStatementStream () throws SQLException {
@@ -497,18 +501,20 @@ void testPreparedStatementExecute(
497501 .hasParent (trace .getSpan (0 ))
498502 .hasAttributesSatisfying (
499503 equalTo (DB_SYSTEM , system ),
500- equalTo (DB_NAME , dbNameLower ),
504+ equalTo (maybeStable ( DB_NAME ) , dbNameLower ),
501505 satisfies (
502506 DB_USER ,
503507 val -> {
504- if (username != null ) {
508+ if (emitStableDatabaseSemconv ()) {
509+ val .isNull ();
510+ } else {
505511 val .isEqualTo (username );
506512 }
507513 }),
508- equalTo (DB_CONNECTION_STRING , url ),
509- equalTo (DB_STATEMENT , sanitizedQuery ),
510- equalTo (DB_OPERATION , "SELECT" ),
511- equalTo (DB_SQL_TABLE , table ))));
514+ equalTo (DB_CONNECTION_STRING , emitStableDatabaseSemconv () ? null : url ),
515+ equalTo (maybeStable ( DB_STATEMENT ) , sanitizedQuery ),
516+ equalTo (maybeStable ( DB_OPERATION ) , "SELECT" ),
517+ equalTo (maybeStable ( DB_SQL_TABLE ) , table ))));
512518 }
513519
514520 @ ParameterizedTest
@@ -540,18 +546,20 @@ void testPreparedStatementQuery(
540546 .hasParent (trace .getSpan (0 ))
541547 .hasAttributesSatisfying (
542548 equalTo (DB_SYSTEM , system ),
543- equalTo (DB_NAME , dbNameLower ),
549+ equalTo (maybeStable ( DB_NAME ) , dbNameLower ),
544550 satisfies (
545551 DB_USER ,
546552 val -> {
547- if (username != null ) {
553+ if (emitStableDatabaseSemconv ()) {
554+ val .isNull ();
555+ } else {
548556 val .isEqualTo (username );
549557 }
550558 }),
551- equalTo (DB_CONNECTION_STRING , url ),
552- equalTo (DB_STATEMENT , sanitizedQuery ),
553- equalTo (DB_OPERATION , "SELECT" ),
554- equalTo (DB_SQL_TABLE , table ))));
559+ equalTo (DB_CONNECTION_STRING , emitStableDatabaseSemconv () ? null : url ),
560+ equalTo (maybeStable ( DB_STATEMENT ) , sanitizedQuery ),
561+ equalTo (maybeStable ( DB_OPERATION ) , "SELECT" ),
562+ equalTo (maybeStable ( DB_SQL_TABLE ) , table ))));
555563 }
556564
557565 @ ParameterizedTest
@@ -583,18 +591,20 @@ void testPreparedCall(
583591 .hasParent (trace .getSpan (0 ))
584592 .hasAttributesSatisfying (
585593 equalTo (DB_SYSTEM , system ),
586- equalTo (DB_NAME , dbNameLower ),
594+ equalTo (maybeStable ( DB_NAME ) , dbNameLower ),
587595 satisfies (
588596 DB_USER ,
589597 val -> {
590- if (username != null ) {
598+ if (emitStableDatabaseSemconv ()) {
599+ val .isNull ();
600+ } else {
591601 val .isEqualTo (username );
592602 }
593603 }),
594- equalTo (DB_CONNECTION_STRING , url ),
595- equalTo (DB_STATEMENT , sanitizedQuery ),
596- equalTo (DB_OPERATION , "SELECT" ),
597- equalTo (DB_SQL_TABLE , table ))));
604+ equalTo (DB_CONNECTION_STRING , emitStableDatabaseSemconv () ? null : url ),
605+ equalTo (maybeStable ( DB_STATEMENT ) , sanitizedQuery ),
606+ equalTo (maybeStable ( DB_OPERATION ) , "SELECT" ),
607+ equalTo (maybeStable ( DB_SQL_TABLE ) , table ))));
598608 }
599609
600610 static Stream <Arguments > statementUpdateStream () throws SQLException {
@@ -725,18 +735,20 @@ void testStatementUpdate(
725735 .hasParent (trace .getSpan (0 ))
726736 .hasAttributesSatisfying (
727737 equalTo (DB_SYSTEM , system ),
728- equalTo (DB_NAME , dbNameLower ),
738+ equalTo (maybeStable ( DB_NAME ) , dbNameLower ),
729739 satisfies (
730740 DB_USER ,
731741 val -> {
732- if (username != null ) {
742+ if (emitStableDatabaseSemconv ()) {
743+ val .isNull ();
744+ } else {
733745 val .isEqualTo (username );
734746 }
735747 }),
736- equalTo (DB_CONNECTION_STRING , url ),
737- equalTo (DB_STATEMENT , query ),
738- equalTo (DB_OPERATION , "CREATE TABLE" ),
739- equalTo (DB_SQL_TABLE , table ))));
748+ equalTo (DB_CONNECTION_STRING , emitStableDatabaseSemconv () ? null : url ),
749+ equalTo (maybeStable ( DB_STATEMENT ) , query ),
750+ equalTo (maybeStable ( DB_OPERATION ) , "CREATE TABLE" ),
751+ equalTo (maybeStable ( DB_SQL_TABLE ) , table ))));
740752 }
741753
742754 static Stream <Arguments > preparedStatementUpdateStream () throws SQLException {
@@ -833,18 +845,20 @@ void testPreparedStatementUpdate(
833845 .hasParent (trace .getSpan (0 ))
834846 .hasAttributesSatisfying (
835847 equalTo (DB_SYSTEM , system ),
836- equalTo (DB_NAME , dbNameLower ),
848+ equalTo (maybeStable ( DB_NAME ) , dbNameLower ),
837849 satisfies (
838850 DB_USER ,
839851 val -> {
840- if (username != null ) {
852+ if (emitStableDatabaseSemconv ()) {
853+ val .isNull ();
854+ } else {
841855 val .isEqualTo (username );
842856 }
843857 }),
844- equalTo (DB_CONNECTION_STRING , url ),
845- equalTo (DB_STATEMENT , query ),
846- equalTo (DB_OPERATION , "CREATE TABLE" ),
847- equalTo (DB_SQL_TABLE , table ))));
858+ equalTo (DB_CONNECTION_STRING , emitStableDatabaseSemconv () ? null : url ),
859+ equalTo (maybeStable ( DB_STATEMENT ) , query ),
860+ equalTo (maybeStable ( DB_OPERATION ) , "CREATE TABLE" ),
861+ equalTo (maybeStable ( DB_SQL_TABLE ) , table ))));
848862 }
849863
850864 static Stream <Arguments > connectionConstructorStream () {
@@ -946,18 +960,20 @@ void testConnectionConstructorThrowing(
946960 .hasParent (trace .getSpan (0 ))
947961 .hasAttributesSatisfying (
948962 equalTo (DB_SYSTEM , system ),
949- equalTo (DB_NAME , dbNameLower ),
963+ equalTo (maybeStable ( DB_NAME ) , dbNameLower ),
950964 satisfies (
951965 DB_USER ,
952966 val -> {
953- if (username != null ) {
967+ if (emitStableDatabaseSemconv ()) {
968+ val .isNull ();
969+ } else {
954970 val .isEqualTo (username );
955971 }
956972 }),
957- equalTo (DB_CONNECTION_STRING , url ),
958- equalTo (DB_STATEMENT , sanitizedQuery ),
959- equalTo (DB_OPERATION , "SELECT" ),
960- equalTo (DB_SQL_TABLE , table ))));
973+ equalTo (DB_CONNECTION_STRING , emitStableDatabaseSemconv () ? null : url ),
974+ equalTo (maybeStable ( DB_STATEMENT ) , sanitizedQuery ),
975+ equalTo (maybeStable ( DB_OPERATION ) , "SELECT" ),
976+ equalTo (maybeStable ( DB_SQL_TABLE ) , table ))));
961977 }
962978
963979 static Stream <Arguments > getConnectionStream () {
@@ -1025,12 +1041,16 @@ void testGetConnection(
10251041 satisfies (
10261042 DB_USER ,
10271043 val -> {
1028- if (user != null ) {
1044+ if (emitStableDatabaseSemconv ()) {
1045+ val .isNull ();
1046+ } else {
10291047 val .isEqualTo (user );
10301048 }
10311049 }),
1032- equalTo (DB_NAME , "jdbcunittest" ),
1033- equalTo (DB_CONNECTION_STRING , connectionString ))));
1050+ equalTo (maybeStable (DB_NAME ), "jdbcunittest" ),
1051+ equalTo (
1052+ DB_CONNECTION_STRING ,
1053+ emitStableDatabaseSemconv () ? null : connectionString ))));
10341054 if (recursive ) {
10351055 assertions .add (
10361056 span ->
@@ -1046,12 +1066,16 @@ void testGetConnection(
10461066 satisfies (
10471067 DB_USER ,
10481068 val -> {
1049- if (user != null ) {
1069+ if (emitStableDatabaseSemconv ()) {
1070+ val .isNull ();
1071+ } else {
10501072 val .isEqualTo (user );
10511073 }
10521074 }),
1053- equalTo (DB_NAME , "jdbcunittest" ),
1054- equalTo (DB_CONNECTION_STRING , connectionString )));
1075+ equalTo (maybeStable (DB_NAME ), "jdbcunittest" ),
1076+ equalTo (
1077+ DB_CONNECTION_STRING ,
1078+ emitStableDatabaseSemconv () ? null : connectionString )));
10551079 }
10561080 trace .hasSpansSatisfyingExactly (assertions );
10571081 });
@@ -1085,8 +1109,10 @@ void testGetClientInfoException(String query) throws SQLException {
10851109 .hasParent (trace .getSpan (0 ))
10861110 .hasAttributesSatisfying (
10871111 equalTo (DB_SYSTEM , "other_sql" ),
1088- equalTo (DB_STATEMENT , "testing ?" ),
1089- equalTo (DB_CONNECTION_STRING , "testdb://localhost" ),
1112+ equalTo (maybeStable (DB_STATEMENT ), "testing ?" ),
1113+ equalTo (
1114+ DB_CONNECTION_STRING ,
1115+ emitStableDatabaseSemconv () ? null : "testdb://localhost" ),
10901116 equalTo (SERVER_ADDRESS , "localhost" ))));
10911117 }
10921118
@@ -1166,11 +1192,13 @@ void testProduceProperSpanName(
11661192 .hasParent (trace .getSpan (0 ))
11671193 .hasAttributesSatisfying (
11681194 equalTo (DB_SYSTEM , "other_sql" ),
1169- equalTo (DB_NAME , databaseName ),
1170- equalTo (DB_CONNECTION_STRING , "testdb://localhost" ),
1171- equalTo (DB_STATEMENT , sanitizedQuery ),
1172- equalTo (DB_OPERATION , operation ),
1173- equalTo (DB_SQL_TABLE , table ),
1195+ equalTo (maybeStable (DB_NAME ), databaseName ),
1196+ equalTo (
1197+ DB_CONNECTION_STRING ,
1198+ emitStableDatabaseSemconv () ? null : "testdb://localhost" ),
1199+ equalTo (maybeStable (DB_STATEMENT ), sanitizedQuery ),
1200+ equalTo (maybeStable (DB_OPERATION ), operation ),
1201+ equalTo (maybeStable (DB_SQL_TABLE ), table ),
11741202 equalTo (SERVER_ADDRESS , "localhost" ))));
11751203 }
11761204
@@ -1214,12 +1242,16 @@ void testConnectionCached(String connectionPoolName) throws SQLException {
12141242 .hasKind (SpanKind .CLIENT )
12151243 .hasAttributesSatisfying (
12161244 equalTo (DB_SYSTEM , "hsqldb" ),
1217- equalTo (DB_NAME , dbNameLower ),
1218- equalTo (DB_USER , "SA" ),
1219- equalTo (DB_CONNECTION_STRING , "hsqldb:mem:" ),
1220- equalTo (DB_STATEMENT , "SELECT ? FROM INFORMATION_SCHEMA.SYSTEM_USERS" ),
1221- equalTo (DB_OPERATION , "SELECT" ),
1222- equalTo (DB_SQL_TABLE , "INFORMATION_SCHEMA.SYSTEM_USERS" )));
1245+ equalTo (maybeStable (DB_NAME ), dbNameLower ),
1246+ equalTo (DB_USER , emitStableDatabaseSemconv () ? null : "SA" ),
1247+ equalTo (
1248+ DB_CONNECTION_STRING ,
1249+ emitStableDatabaseSemconv () ? null : "hsqldb:mem:" ),
1250+ equalTo (
1251+ maybeStable (DB_STATEMENT ),
1252+ "SELECT ? FROM INFORMATION_SCHEMA.SYSTEM_USERS" ),
1253+ equalTo (maybeStable (DB_OPERATION ), "SELECT" ),
1254+ equalTo (maybeStable (DB_SQL_TABLE ), "INFORMATION_SCHEMA.SYSTEM_USERS" )));
12231255 for (int i = 0 ; i < numQueries ; i ++) {
12241256 assertions .add (traceAssertConsumer );
12251257 }
@@ -1284,10 +1316,12 @@ void testHandleRecursiveStatements(
12841316 .hasParent (trace .getSpan (0 ))
12851317 .hasAttributesSatisfying (
12861318 equalTo (DB_SYSTEM , "other_sql" ),
1287- equalTo (DB_CONNECTION_STRING , "testdb://localhost" ),
1288- equalTo (DB_STATEMENT , "SELECT * FROM table" ),
1289- equalTo (DB_OPERATION , "SELECT" ),
1290- equalTo (DB_SQL_TABLE , "table" ),
1319+ equalTo (
1320+ DB_CONNECTION_STRING ,
1321+ emitStableDatabaseSemconv () ? null : "testdb://localhost" ),
1322+ equalTo (maybeStable (DB_STATEMENT ), "SELECT * FROM table" ),
1323+ equalTo (maybeStable (DB_OPERATION ), "SELECT" ),
1324+ equalTo (maybeStable (DB_SQL_TABLE ), "table" ),
12911325 equalTo (SERVER_ADDRESS , "localhost" ))));
12921326 }
12931327
0 commit comments