Skip to content

Commit d715550

Browse files
committed
updates
1 parent 9e6ed8b commit d715550

2 files changed

Lines changed: 106 additions & 8 deletions

File tree

  • instrumentation-api-incubator/src
    • main/java/io/opentelemetry/instrumentation/api/incubator/config/internal
    • test/java/io/opentelemetry/instrumentation/api/incubator/config/internal

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/config/internal/DbConfig.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,9 @@ private static Boolean getCommonSqlCommenterEnabled(OpenTelemetry openTelemetry)
7979
commonConfig.get("database").get("sqlcommenter/development").getBoolean("enabled");
8080
if (deprecatedValue != null) {
8181
warnIfDeprecatedDeclarativeConfigurationUsed(
82-
".instrumentation/development.java.common.database.sqlcommenter/development.enabled",
83-
".instrumentation/development.java.common.db.sqlcommenter/development.enabled");
82+
"instrumentation/development: java: common: database:"
83+
+ " sqlcommenter/development: enabled",
84+
"instrumentation/development: java: common: db: sqlcommenter/development: enabled");
8485
return deprecatedValue;
8586
}
8687

@@ -111,8 +112,8 @@ private static Boolean getCommonQuerySanitizationEnabled(OpenTelemetry openTelem
111112
commonConfig.get("database").get("statement_sanitizer").getBoolean("enabled");
112113
if (deprecatedStatementSanitizerValue != null) {
113114
warnIfDeprecatedDeclarativeConfigurationUsed(
114-
".instrumentation/development.java.common.database.statement_sanitizer.enabled",
115-
".instrumentation/development.java.common.db.query_sanitization.enabled");
115+
"instrumentation/development: java: common: database: statement_sanitizer: enabled",
116+
"instrumentation/development: java: common: db: query_sanitization: enabled");
116117
return deprecatedStatementSanitizerValue;
117118
}
118119

@@ -150,12 +151,12 @@ private static void warnIfDeprecatedDeclarativeConfigurationUsed(
150151
String deprecatedProperty, String replacementProperty) {
151152
if (warnedDeprecatedProperties.add(deprecatedProperty)) {
152153
logger.warning(
153-
"The "
154+
"The '"
154155
+ deprecatedProperty
155-
+ " declarative configuration is deprecated"
156-
+ " and will be removed in a future version. Use "
156+
+ "' declarative configuration is deprecated"
157+
+ " and will be removed in a future version. Use '"
157158
+ replacementProperty
158-
+ " instead.");
159+
+ "' instead.");
159160
}
160161
}
161162

instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/config/internal/DbConfigTest.java

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,13 @@
1212

1313
import io.opentelemetry.api.incubator.ExtendedOpenTelemetry;
1414
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
15+
import java.lang.reflect.Field;
16+
import java.util.ArrayList;
17+
import java.util.List;
18+
import java.util.Set;
19+
import java.util.logging.Handler;
20+
import java.util.logging.LogRecord;
21+
import java.util.logging.Logger;
1522
import org.junit.jupiter.api.Test;
1623

1724
class DbConfigTest {
@@ -72,6 +79,43 @@ void commonSqlCommenterPropertyIsUsedAsFallback() {
7279
assertThat(DbConfig.isSqlCommenterEnabled(openTelemetry, "jdbc")).isTrue();
7380
}
7481

82+
@Test
83+
void deprecatedCommonSqlCommenterConfigWarningUsesFutureVersionMessage() throws Exception {
84+
ExtendedOpenTelemetry openTelemetry = mock(ExtendedOpenTelemetry.class);
85+
DeclarativeConfigProperties commonConfig =
86+
mock(DeclarativeConfigProperties.class, RETURNS_DEEP_STUBS);
87+
DeclarativeConfigProperties instrumentationConfig =
88+
mock(DeclarativeConfigProperties.class, RETURNS_DEEP_STUBS);
89+
when(openTelemetry.getInstrumentationConfig("common")).thenReturn(commonConfig);
90+
when(openTelemetry.getInstrumentationConfig("jdbc")).thenReturn(instrumentationConfig);
91+
when(instrumentationConfig.get("sqlcommenter/development").getBoolean("enabled"))
92+
.thenReturn(null);
93+
when(commonConfig.get("db").get("sqlcommenter/development").getBoolean("enabled"))
94+
.thenReturn(null);
95+
when(commonConfig.get("database").get("sqlcommenter/development").getBoolean("enabled"))
96+
.thenReturn(true);
97+
98+
clearDeprecatedWarnings();
99+
Logger logger = Logger.getLogger(DbConfig.class.getName());
100+
TestHandler handler = new TestHandler();
101+
logger.addHandler(handler);
102+
try {
103+
assertThat(DbConfig.isSqlCommenterEnabled(openTelemetry, "jdbc")).isTrue();
104+
105+
assertThat(handler.records).hasSize(1);
106+
assertThat(handler.records.get(0).getMessage())
107+
.isEqualTo(
108+
"The 'instrumentation/development: java: common: database:"
109+
+ " sqlcommenter/development: enabled' declarative configuration is"
110+
+ " deprecated and will be removed in a future version. Use"
111+
+ " 'instrumentation/development: java: common: db:"
112+
+ " sqlcommenter/development: enabled' instead.");
113+
} finally {
114+
logger.removeHandler(handler);
115+
clearDeprecatedWarnings();
116+
}
117+
}
118+
75119
@Test
76120
void newInstrumentationQuerySanitizationTakesPrecedenceOverDeprecatedConfig() {
77121
ExtendedOpenTelemetry openTelemetry = mock(ExtendedOpenTelemetry.class);
@@ -94,4 +138,57 @@ void deprecatedInstrumentationQuerySanitizationConfigIsUsedAsFallback() {
94138

95139
assertThat(DbConfig.isQuerySanitizationEnabled(openTelemetry, "jdbc")).isFalse();
96140
}
141+
142+
@Test
143+
void deprecatedCommonStatementSanitizerConfigWarningUsesFutureVersionMessage() throws Exception {
144+
ExtendedOpenTelemetry openTelemetry = mock(ExtendedOpenTelemetry.class);
145+
DeclarativeConfigProperties commonConfig =
146+
mock(DeclarativeConfigProperties.class, RETURNS_DEEP_STUBS);
147+
when(openTelemetry.getInstrumentationConfig("common")).thenReturn(commonConfig);
148+
when(commonConfig.get("db").get("query_sanitization").getBoolean("enabled")).thenReturn(null);
149+
when(commonConfig.get("database").get("statement_sanitizer").getBoolean("enabled"))
150+
.thenReturn(false);
151+
152+
clearDeprecatedWarnings();
153+
Logger logger = Logger.getLogger(DbConfig.class.getName());
154+
TestHandler handler = new TestHandler();
155+
logger.addHandler(handler);
156+
try {
157+
assertThat(DbConfig.isCommonQuerySanitizationEnabled(openTelemetry)).isFalse();
158+
159+
assertThat(handler.records).hasSize(1);
160+
assertThat(handler.records.get(0).getMessage())
161+
.isEqualTo(
162+
"The 'instrumentation/development: java: common: database:"
163+
+ " statement_sanitizer: enabled' declarative configuration is"
164+
+ " deprecated and will be removed in a future version. Use"
165+
+ " 'instrumentation/development: java: common: db: query_sanitization:"
166+
+ " enabled' instead.");
167+
} finally {
168+
logger.removeHandler(handler);
169+
clearDeprecatedWarnings();
170+
}
171+
}
172+
173+
private static void clearDeprecatedWarnings() throws Exception {
174+
Field warnedDeprecatedPropertiesField =
175+
DbConfig.class.getDeclaredField("warnedDeprecatedProperties");
176+
warnedDeprecatedPropertiesField.setAccessible(true);
177+
((Set<?>) warnedDeprecatedPropertiesField.get(null)).clear();
178+
}
179+
180+
private static final class TestHandler extends Handler {
181+
private final List<LogRecord> records = new ArrayList<>();
182+
183+
@Override
184+
public void publish(LogRecord record) {
185+
records.add(record);
186+
}
187+
188+
@Override
189+
public void flush() {}
190+
191+
@Override
192+
public void close() {}
193+
}
97194
}

0 commit comments

Comments
 (0)