Skip to content

Commit a36770e

Browse files
committed
add more tests
1 parent 91cb16f commit a36770e

File tree

4 files changed

+65
-22
lines changed

4 files changed

+65
-22
lines changed

javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/DeclarativeConfigPropertiesBridge.java

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,14 @@
1212
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
1313
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1414
import java.time.Duration;
15+
import java.util.Arrays;
1516
import java.util.Collections;
1617
import java.util.HashMap;
18+
import java.util.HashSet;
1719
import java.util.List;
1820
import java.util.Map;
1921
import java.util.Objects;
22+
import java.util.Set;
2023
import java.util.function.BiFunction;
2124
import java.util.stream.Collectors;
2225
import javax.annotation.Nullable;
@@ -57,6 +60,8 @@ public final class DeclarativeConfigPropertiesBridge implements ConfigProperties
5760

5861
private static final Map<String, String> JAVA_MAPPING_RULES = new HashMap<>();
5962
private static final Map<String, String> GENERAL_MAPPING_RULES = new HashMap<>();
63+
private static final Set<String> AGENT_LOGGING_OUTPUTS =
64+
new HashSet<>(Arrays.asList("application", "simple"));
6065

6166
// The node at .instrumentation.java
6267
private final DeclarativeConfigProperties instrumentationJavaNode;
@@ -242,18 +247,29 @@ private static String getJavaPath(String property) {
242247

243248
private String agentLoggerName() {
244249
DeclarativeConfigProperties logOutput = getLogOutput();
245-
DeclarativeConfigProperties application = logOutput.getStructured("application");
246-
DeclarativeConfigProperties simple = logOutput.getStructured("simple");
247-
if (application != null) {
248-
if (simple != null) {
249-
throw new DeclarativeConfigException(
250-
"Both 'application' and 'simple' log output are configured. "
251-
+ "Please choose one of them.");
252-
}
253-
return "application";
250+
Set<String> names = logOutput.getPropertyKeys();
251+
252+
if (names.isEmpty()) {
253+
// no log output configured, use the default
254+
return "simple";
255+
}
256+
257+
if (names.size() > 1) {
258+
throw new DeclarativeConfigException(
259+
"Multiple log output formats are configured: "
260+
+ String.join(", ", names)
261+
+ ". Please choose one of them.");
262+
}
263+
264+
String name = names.iterator().next();
265+
if (!AGENT_LOGGING_OUTPUTS.contains(name)) {
266+
throw new DeclarativeConfigException(
267+
"Unsupported log output format: '"
268+
+ name
269+
+ "' . Supported formats are: "
270+
+ String.join(", ", AGENT_LOGGING_OUTPUTS));
254271
}
255-
// simple is the default
256-
return "simple";
272+
return name;
257273
}
258274

259275
private DeclarativeConfigProperties getLogOutput() {

javaagent-extension-api/src/test/java/io/opentelemetry/javaagent/extension/DeclarativeConfigPropertiesBridgeTest.java

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
package io.opentelemetry.javaagent.extension;
77

88
import static org.assertj.core.api.Assertions.assertThat;
9+
import static org.assertj.core.api.Assertions.assertThatThrownBy;
910
import static org.assertj.core.data.MapEntry.entry;
1011

12+
import io.opentelemetry.api.incubator.config.DeclarativeConfigException;
1113
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1214
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration;
1315
import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider;
@@ -29,23 +31,24 @@ class DeclarativeConfigPropertiesBridgeTest {
2931

3032
@BeforeEach
3133
void setup() {
32-
OpenTelemetryConfigurationModel model =
33-
DeclarativeConfiguration.parse(
34-
DeclarativeConfigPropertiesBridgeTest.class
35-
.getClassLoader()
36-
.getResourceAsStream("config.yaml"));
37-
SdkConfigProvider configProvider = SdkConfigProvider.create(model);
38-
String logLevel = "DEBUG";
39-
bridge =
40-
new DeclarativeConfigPropertiesBridge(Objects.requireNonNull(configProvider), logLevel);
34+
bridge = create("config.yaml");
4135

4236
OpenTelemetryConfigurationModel emptyModel =
4337
new OpenTelemetryConfigurationModel()
4438
.withAdditionalProperty("instrumentation/development", new InstrumentationModel());
4539
SdkConfigProvider emptyConfigProvider = SdkConfigProvider.create(emptyModel);
4640
emptyBridge =
47-
new DeclarativeConfigPropertiesBridge(
48-
Objects.requireNonNull(emptyConfigProvider), logLevel);
41+
new DeclarativeConfigPropertiesBridge(Objects.requireNonNull(emptyConfigProvider), "DEBUG");
42+
}
43+
44+
private static DeclarativeConfigPropertiesBridge create(String name) {
45+
OpenTelemetryConfigurationModel model =
46+
DeclarativeConfiguration.parse(
47+
DeclarativeConfigPropertiesBridgeTest.class.getClassLoader().getResourceAsStream(name));
48+
SdkConfigProvider configProvider = SdkConfigProvider.create(model);
49+
DeclarativeConfigPropertiesBridge configPropertiesBridge =
50+
new DeclarativeConfigPropertiesBridge(Objects.requireNonNull(configProvider), "DEBUG");
51+
return configPropertiesBridge;
4952
}
5053

5154
@Test
@@ -142,8 +145,13 @@ void common() {
142145
void agent() {
143146
assertThat(bridge.getBoolean("otel.javaagent.debug")).isTrue();
144147
assertThat(bridge.getBoolean("otel.javaagent.experimental.indy")).isTrue();
148+
145149
assertThat(bridge.getString("otel.javaagent.logging")).isEqualTo("application");
146150
assertThat(bridge.getInt("otel.javaagent.logging.application.logs-buffer-max-records"))
147151
.isEqualTo(1000);
152+
assertThat(create("agent-logging-simple.yaml").getString("otel.javaagent.logging"))
153+
.isEqualTo("simple");
154+
assertThatThrownBy(() -> create("agent-logging-both.yaml").getString("otel.javaagent.logging"))
155+
.isInstanceOf(DeclarativeConfigException.class);
148156
}
149157
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
file_format: 0.4
2+
disabled: true
3+
log_level: DEBUG
4+
instrumentation/development:
5+
java:
6+
agent:
7+
logging:
8+
output:
9+
application:
10+
simple:
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
file_format: 0.4
2+
disabled: true
3+
log_level: DEBUG
4+
instrumentation/development:
5+
java:
6+
agent:
7+
logging:
8+
output:
9+
simple:

0 commit comments

Comments
 (0)