From 0087b1a958f54a6a5d38c75dbf7cb80f6a5519cd Mon Sep 17 00:00:00 2001 From: jackshirazi Date: Mon, 24 Nov 2025 14:57:26 +0000 Subject: [PATCH 1/6] add extension dependencies --- dynamic-control/build.gradle.kts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/dynamic-control/build.gradle.kts b/dynamic-control/build.gradle.kts index e0a088b89..dcdc4e7a0 100644 --- a/dynamic-control/build.gradle.kts +++ b/dynamic-control/build.gradle.kts @@ -11,3 +11,22 @@ java { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } + +dependencies { + annotationProcessor("com.google.auto.service:auto-service") + compileOnly("com.google.auto.service:auto-service-annotations") + + compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure") + compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi") + + testCompileOnly("com.google.auto.service:auto-service-annotations") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") + testImplementation("org.junit.jupiter:junit-jupiter-api") + testCompileOnly("org.junit.jupiter:junit-jupiter-params") + + testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure") + testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi") + testImplementation("org.assertj:assertj-core") + testImplementation("org.mockito:mockito-inline") + testImplementation("org.mockito:mockito-junit-jupiter") +} From fb5df5122bc278f1387c5f78df908632d91d7489 Mon Sep 17 00:00:00 2001 From: jackshirazi Date: Mon, 24 Nov 2025 15:08:56 +0000 Subject: [PATCH 2/6] Create DynamicControlAutoConfiguration.java --- .../DynamicControlAutoConfiguration.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 dynamic-control/src/main/java/io/opentelemetry/contrib/dynamic/DynamicControlAutoConfiguration.java diff --git a/dynamic-control/src/main/java/io/opentelemetry/contrib/dynamic/DynamicControlAutoConfiguration.java b/dynamic-control/src/main/java/io/opentelemetry/contrib/dynamic/DynamicControlAutoConfiguration.java new file mode 100644 index 000000000..b3e0e6309 --- /dev/null +++ b/dynamic-control/src/main/java/io/opentelemetry/contrib/dynamic/DynamicControlAutoConfiguration.java @@ -0,0 +1,35 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.contrib.dynamic; + +import com.google.auto.service.AutoService; +import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer; +import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * AutoConfigurationCustomizerProvider for dynamic control extension. + * + *

This extension provides a skeleton for dynamic control of agent features. Currently, it only + * logs when loaded by the agent. + */ +@AutoService(AutoConfigurationCustomizerProvider.class) +public class DynamicControlAutoConfiguration implements AutoConfigurationCustomizerProvider { + + private static final Logger logger = + Logger.getLogger(DynamicControlAutoConfiguration.class.getName()); + + @Override + public void customize(AutoConfigurationCustomizer autoConfiguration) { + logger.log(Level.INFO, "Dynamic control extension has been loaded by the agent"); + } + + @Override + public int order() { + return 0; + } +} From 3edaa42f2866c0737fcda4bf0c36ed602617d03e Mon Sep 17 00:00:00 2001 From: jackshirazi Date: Mon, 24 Nov 2025 15:11:27 +0000 Subject: [PATCH 3/6] Create DynamicControlAutoConfigurationTest.java --- .../DynamicControlAutoConfigurationTest.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 dynamic-control/src/test/java/io/opentelemetry/contrib/dynamic/DynamicControlAutoConfigurationTest.java diff --git a/dynamic-control/src/test/java/io/opentelemetry/contrib/dynamic/DynamicControlAutoConfigurationTest.java b/dynamic-control/src/test/java/io/opentelemetry/contrib/dynamic/DynamicControlAutoConfigurationTest.java new file mode 100644 index 000000000..c01c687af --- /dev/null +++ b/dynamic-control/src/test/java/io/opentelemetry/contrib/dynamic/DynamicControlAutoConfigurationTest.java @@ -0,0 +1,34 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.contrib.dynamic; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; + +import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer; +import org.junit.jupiter.api.Test; + +class DynamicControlAutoConfigurationTest { + + @Test + void testCustomize() { + DynamicControlAutoConfiguration config = new DynamicControlAutoConfiguration(); + AutoConfigurationCustomizer customizer = mock(AutoConfigurationCustomizer.class); + + config.customize(customizer); + + // The customize method should not throw and should be callable + // Logging is tested manually or via integration tests + } + + @Test + void testOrder() { + //This is a placeholder test, just to have something + DynamicControlAutoConfiguration config = new DynamicControlAutoConfiguration(); + // Default order should be 0 + assertThat(config.order()).isEqualTo(0); + } +} From 39ef34a0dc57623b7856b7e35f0e5701029e75c2 Mon Sep 17 00:00:00 2001 From: jackshirazi Date: Mon, 24 Nov 2025 15:18:04 +0000 Subject: [PATCH 4/6] spotless --- .../contrib/dynamic/DynamicControlAutoConfigurationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-control/src/test/java/io/opentelemetry/contrib/dynamic/DynamicControlAutoConfigurationTest.java b/dynamic-control/src/test/java/io/opentelemetry/contrib/dynamic/DynamicControlAutoConfigurationTest.java index c01c687af..061961422 100644 --- a/dynamic-control/src/test/java/io/opentelemetry/contrib/dynamic/DynamicControlAutoConfigurationTest.java +++ b/dynamic-control/src/test/java/io/opentelemetry/contrib/dynamic/DynamicControlAutoConfigurationTest.java @@ -26,7 +26,7 @@ void testCustomize() { @Test void testOrder() { - //This is a placeholder test, just to have something + // This is a placeholder test, just to have something DynamicControlAutoConfiguration config = new DynamicControlAutoConfiguration(); // Default order should be 0 assertThat(config.order()).isEqualTo(0); From 67d38973dc88fe2d8c5ae61684b4588880a5500c Mon Sep 17 00:00:00 2001 From: jackshirazi Date: Mon, 24 Nov 2025 15:50:13 +0000 Subject: [PATCH 5/6] bump for repeating tests --- .../contrib/dynamic/DynamicControlAutoConfiguration.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-control/src/main/java/io/opentelemetry/contrib/dynamic/DynamicControlAutoConfiguration.java b/dynamic-control/src/main/java/io/opentelemetry/contrib/dynamic/DynamicControlAutoConfiguration.java index b3e0e6309..4a8f4f7ec 100644 --- a/dynamic-control/src/main/java/io/opentelemetry/contrib/dynamic/DynamicControlAutoConfiguration.java +++ b/dynamic-control/src/main/java/io/opentelemetry/contrib/dynamic/DynamicControlAutoConfiguration.java @@ -14,7 +14,7 @@ /** * AutoConfigurationCustomizerProvider for dynamic control extension. * - *

This extension provides a skeleton for dynamic control of agent features. Currently, it only + *

This extension provides a skeleton for dynamic control of agent features. Currently, it just * logs when loaded by the agent. */ @AutoService(AutoConfigurationCustomizerProvider.class) From d84c187fa426fed10f2884a9c7d3bf5207abfe11 Mon Sep 17 00:00:00 2001 From: jackshirazi Date: Mon, 24 Nov 2025 16:01:40 +0000 Subject: [PATCH 6/6] bump for repeating tests --- .../contrib/dynamic/DynamicControlAutoConfiguration.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-control/src/main/java/io/opentelemetry/contrib/dynamic/DynamicControlAutoConfiguration.java b/dynamic-control/src/main/java/io/opentelemetry/contrib/dynamic/DynamicControlAutoConfiguration.java index 4a8f4f7ec..b3e0e6309 100644 --- a/dynamic-control/src/main/java/io/opentelemetry/contrib/dynamic/DynamicControlAutoConfiguration.java +++ b/dynamic-control/src/main/java/io/opentelemetry/contrib/dynamic/DynamicControlAutoConfiguration.java @@ -14,7 +14,7 @@ /** * AutoConfigurationCustomizerProvider for dynamic control extension. * - *

This extension provides a skeleton for dynamic control of agent features. Currently, it just + *

This extension provides a skeleton for dynamic control of agent features. Currently, it only * logs when loaded by the agent. */ @AutoService(AutoConfigurationCustomizerProvider.class)