Skip to content

Commit 9116814

Browse files
committed
inferred spans
1 parent 6b63e67 commit 9116814

File tree

3 files changed

+43
-37
lines changed

3 files changed

+43
-37
lines changed

inferred-spans/src/main/java/io/opentelemetry/contrib/inferredspans/InferredSpansAutoConfig.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@
1111
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer;
1212
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider;
1313
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
14+
import io.opentelemetry.sdk.trace.SpanProcessor;
1415
import java.time.Duration;
1516
import java.util.Arrays;
17+
import java.util.Collections;
1618
import java.util.List;
1719
import java.util.function.BiConsumer;
1820
import java.util.function.Consumer;
@@ -44,17 +46,20 @@ public class InferredSpansAutoConfig implements AutoConfigurationCustomizerProvi
4446
public void customize(AutoConfigurationCustomizer config) {
4547
config.addTracerProviderCustomizer(
4648
(providerBuilder, properties) -> {
47-
if (isEnabled(properties)) {
48-
providerBuilder.addSpanProcessor(create(properties));
49-
} else {
50-
log.finest(
51-
"Not enabling inferred spans processor because " + ENABLED_OPTION + " is not set");
52-
}
49+
providerBuilder.addSpanProcessor(create(properties, /* enableByDefault= */ false));
5350
return providerBuilder;
5451
});
5552
}
5653

57-
static InferredSpansProcessor create(ConfigProperties properties) {
54+
static SpanProcessor create(ConfigProperties properties, boolean enableByDefault) {
55+
if (!properties.getBoolean(ENABLED_OPTION, enableByDefault)) {
56+
log.finest(
57+
"Not creating inferred spans processor because "
58+
+ ENABLED_OPTION
59+
+ " is not set to true");
60+
return SpanProcessor.composite(Collections.emptyList());
61+
}
62+
5863
InferredSpansProcessorBuilder builder = InferredSpansProcessor.builder();
5964

6065
PropertiesApplier applier = new PropertiesApplier(properties);
@@ -76,12 +81,7 @@ static InferredSpansProcessor create(ConfigProperties properties) {
7681
builder.parentOverrideHandler(constructParentOverrideHandler(parentOverrideHandlerName));
7782
}
7883

79-
InferredSpansProcessor spanProcessor = builder.build();
80-
return spanProcessor;
81-
}
82-
83-
static boolean isEnabled(ConfigProperties properties) {
84-
return properties.getBoolean(ENABLED_OPTION, false);
84+
return builder.build();
8585
}
8686

8787
@SuppressWarnings("unchecked")

inferred-spans/src/main/java/io/opentelemetry/contrib/inferredspans/InferredSpansComponentProvider.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@
1010
import io.opentelemetry.contrib.sdk.autoconfigure.ConfigPropertiesUtil;
1111
import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
1212
import io.opentelemetry.sdk.trace.SpanProcessor;
13+
import java.util.Collections;
1314

1415
@SuppressWarnings("rawtypes")
1516
@AutoService(ComponentProvider.class)
1617
public class InferredSpansComponentProvider implements ComponentProvider<SpanProcessor> {
18+
1719
@Override
1820
public String getName() {
1921
return "inferred_spans";
@@ -22,8 +24,9 @@ public String getName() {
2224
@Override
2325
public SpanProcessor create(DeclarativeConfigProperties config) {
2426
return InferredSpansAutoConfig.create(
25-
ConfigPropertiesUtil.resolveInstrumentationConfig(
26-
config, InferredSpansCustomizerProvider.TRANSLATION_MAP));
27+
ConfigPropertiesUtil.resolveConfig(
28+
config, Collections.singletonMap("otel.inferred.spans.", "")),
29+
/* enableByDefault= */ true);
2730
}
2831

2932
@Override

inferred-spans/src/test/java/io/opentelemetry/contrib/inferredspans/InferredSpansCustomizerProviderTest.java

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,40 @@
55

66
package io.opentelemetry.contrib.inferredspans;
77

8-
import static org.assertj.core.api.Assertions.assertThat;
9-
108
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration;
11-
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
9+
import org.junit.jupiter.api.Test;
10+
1211
import java.io.ByteArrayInputStream;
1312
import java.nio.charset.StandardCharsets;
14-
import org.junit.jupiter.api.Test;
13+
14+
import static org.assertj.core.api.Assertions.assertThat;
1515

1616
class InferredSpansCustomizerProviderTest {
1717

18+
private static final String FQDN =
19+
"spanProcessor=io.opentelemetry.contrib.inferredspans.InferredSpansProcessor";
20+
21+
@Test
22+
void enabled() {
23+
assertThat(create("")).contains(FQDN);
24+
}
25+
1826
@Test
19-
void declarativeConfig() {
27+
void disabled() {
28+
assertThat(create("enabled: false")).doesNotContain(FQDN);
29+
}
30+
31+
private static String create(String enabled) {
2032
String yaml =
2133
"file_format: 0.4\n"
2234
+ "tracer_provider:\n"
23-
+ "instrumentation/development:\n"
24-
+ " java:\n"
25-
+ " inferred_spans:\n"
26-
+ " enabled: true\n";
27-
28-
OpenTelemetryConfigurationModel model =
29-
DeclarativeConfiguration.parse(
30-
new ByteArrayInputStream(yaml.getBytes(StandardCharsets.UTF_8)));
31-
32-
new InferredSpansCustomizerProvider()
33-
.customize(
34-
c -> {
35-
OpenTelemetryConfigurationModel configurationModel = c.apply(model);
36-
assertThat(configurationModel.toString())
37-
.matches(
38-
".*SpanProcessorModel@.{8}\\[batch=<null>,simple=<null>,additionalProperties=\\{inferred_spans=null}.*");
39-
});
35+
+ " processors:\n"
36+
+ " - inferred_spans:\n"
37+
+ " "
38+
+ enabled
39+
+ "\n";
40+
return DeclarativeConfiguration.parseAndCreate(
41+
new ByteArrayInputStream(yaml.getBytes(StandardCharsets.UTF_8)))
42+
.toString();
4043
}
4144
}

0 commit comments

Comments
 (0)