Skip to content

Commit 9cb607b

Browse files
committed
add thread details customizer provider
1 parent 5ce6aff commit 9cb607b

File tree

6 files changed

+75
-0
lines changed

6 files changed

+75
-0
lines changed

sdk-autoconfigure-support/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ group = "io.opentelemetry.instrumentation"
77

88
dependencies {
99
api("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure")
10+
api("io.opentelemetry:opentelemetry-sdk-extension-incubator")
1011

1112
compileOnly("com.google.code.findbugs:annotations")
1213
testCompileOnly("com.google.code.findbugs:annotations")
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package io.opentelemetry.instrumentation.thread;
2+
3+
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
4+
import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
5+
import io.opentelemetry.sdk.trace.SpanProcessor;
6+
7+
public class ThreadDetailsComponentProvider implements ComponentProvider<SpanProcessor> {
8+
@Override
9+
public String getName() {
10+
return "thread_details";
11+
}
12+
13+
@Override
14+
public SpanProcessor create(DeclarativeConfigProperties config) {
15+
return new AddThreadDetailsSpanProcessor();
16+
}
17+
18+
@Override
19+
public Class<SpanProcessor> getType() {
20+
return SpanProcessor.class;
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package io.opentelemetry.instrumentation.thread;
2+
3+
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfigurationCustomizer;
4+
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfigurationCustomizerProvider;
5+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SpanProcessorModel;
6+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.TracerProviderModel;
7+
8+
public class ThreadDetailsConfigurationCustomizerProvider
9+
implements DeclarativeConfigurationCustomizerProvider {
10+
@Override
11+
public void customize(DeclarativeConfigurationCustomizer customizer) {
12+
customizer.addModelCustomizer(
13+
model -> {
14+
TracerProviderModel tracerProvider = model.getTracerProvider();
15+
if (tracerProvider == null) {
16+
return model;
17+
}
18+
tracerProvider
19+
.getProcessors()
20+
.add(new SpanProcessorModel().withAdditionalProperty("thread_details", null));
21+
return model;
22+
});
23+
}
24+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
io.opentelemetry.instrumentation.thread.ThreadDetailsComponentProvider
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
io.opentelemetry.instrumentation.thread.ThreadDetailsConfigurationCustomizerProvider
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package io.opentelemetry.instrumentation.thread;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import io.opentelemetry.sdk.OpenTelemetrySdk;
6+
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration;
7+
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfigurationBuilder;
8+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
9+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.TracerProviderModel;
10+
import org.junit.jupiter.api.Test;
11+
12+
class ThreadDetailsConfigurationCustomizerProviderTest {
13+
14+
@Test
15+
void addSpanProcessor() {
16+
OpenTelemetryConfigurationModel model =
17+
new DeclarativeConfigurationBuilder().customizeModel(
18+
new OpenTelemetryConfigurationModel()
19+
.withFileFormat("0.4")
20+
.withTracerProvider(new TracerProviderModel()));
21+
22+
try (OpenTelemetrySdk sdk = DeclarativeConfiguration.create(model)) {
23+
assertThat(sdk.toString()).containsOnlyOnce("AddThreadDetailsSpanProcessor");
24+
}
25+
}
26+
}

0 commit comments

Comments
 (0)