Skip to content

Commit 0de105a

Browse files
committed
Add database semconv stability tests: jdbc
1 parent 29da88e commit 0de105a

File tree

5 files changed

+127
-74
lines changed

5 files changed

+127
-74
lines changed

instrumentation/jdbc/javaagent/build.gradle.kts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,4 +70,12 @@ tasks {
7070
check {
7171
dependsOn(testSlick)
7272
}
73+
74+
val testStableSemconv by registering(Test::class) {
75+
jvmArgs("-Dotel.semconv-stability.opt-in=database")
76+
}
77+
78+
check {
79+
dependsOn(testStableSemconv)
80+
}
7381
}

instrumentation/jdbc/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jdbc/test/JdbcInstrumentationTest.java

Lines changed: 99 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
package 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;
810
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
911
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies;
1012
import 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

instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package io.opentelemetry.instrumentation.jdbc.datasource;
77

8+
import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable;
89
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
910
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT;
1011
import static org.assertj.core.api.Assertions.assertThat;
@@ -42,7 +43,7 @@ void buildWithDefaults() throws SQLException {
4243
span -> span.hasName("TestDataSource.getConnection"),
4344
span ->
4445
span.hasName("SELECT dbname")
45-
.hasAttribute(equalTo(DB_STATEMENT, "SELECT ?;"))));
46+
.hasAttribute(equalTo(maybeStable(DB_STATEMENT), "SELECT ?;"))));
4647
}
4748

4849
@Test
@@ -118,7 +119,7 @@ void buildWithSanitizationDisabled() throws SQLException {
118119
span -> span.hasName("TestDataSource.getConnection"),
119120
span ->
120121
span.hasName("SELECT dbname")
121-
.hasAttribute(equalTo(DB_STATEMENT, "SELECT 1;"))));
122+
.hasAttribute(equalTo(maybeStable(DB_STATEMENT), "SELECT 1;"))));
122123
}
123124

124125
@Test

instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/OpenTelemetryDataSourceTest.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
package io.opentelemetry.instrumentation.jdbc.datasource;
77

8+
import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv;
9+
import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable;
810
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
911
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING;
1012
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME;
@@ -58,8 +60,12 @@ void shouldEmitGetConnectionSpans(GetConnectionFunction getConnection) throws SQ
5860
TestDataSource.class.getName()),
5961
equalTo(CodeIncubatingAttributes.CODE_FUNCTION, "getConnection"),
6062
equalTo(DB_SYSTEM, "postgresql"),
61-
equalTo(DB_NAME, "dbname"),
62-
equalTo(DB_CONNECTION_STRING, "postgresql://127.0.0.1:5432"))));
63+
equalTo(maybeStable(DB_NAME), "dbname"),
64+
equalTo(
65+
DB_CONNECTION_STRING,
66+
emitStableDatabaseSemconv()
67+
? null
68+
: "postgresql://127.0.0.1:5432"))));
6369

6470
assertThat(connection).isExactlyInstanceOf(OpenTelemetryConnection.class);
6571
DbInfo dbInfo = ((OpenTelemetryConnection) connection).getDbInfo();

0 commit comments

Comments
 (0)