diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle b/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle index 0b30ced72d..d4d8628193 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle @@ -174,6 +174,7 @@ dependencies { testImplementation("org.springframework.restdocs:spring-restdocs-webtestclient") testImplementation("org.springframework.security:spring-security-test") testImplementation("org.yaml:snakeyaml") + testImplementation("uk.org.webcompere:system-stubs-jupiter:2.1.7") testRuntimeOnly("jakarta.management.j2ee:jakarta.management.j2ee-api") testRuntimeOnly("jakarta.transaction:jakarta.transaction-api") diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpMetricsProperties.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpMetricsProperties.java index 60021201c1..bcda23c88c 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpMetricsProperties.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpMetricsProperties.java @@ -39,7 +39,7 @@ public class OtlpMetricsProperties extends StepRegistryProperties { /** * URI of the OTLP server. */ - private String url = "http://localhost:4318/v1/metrics"; + private String url; /** * Aggregation temporality of sums. It defines the way additive values are expressed. diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpMetricsPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpMetricsPropertiesConfigAdapterTests.java index bd2bba76f3..8a157249ce 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpMetricsPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpMetricsPropertiesConfigAdapterTests.java @@ -23,6 +23,7 @@ import io.micrometer.registry.otlp.AggregationTemporality; import io.micrometer.registry.otlp.HistogramFlavor; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import uk.org.webcompere.systemstubs.SystemStubs; import org.springframework.boot.actuate.autoconfigure.metrics.export.otlp.OtlpMetricsExportAutoConfiguration.PropertiesOtlpMetricsConnectionDetails; import org.springframework.boot.actuate.autoconfigure.opentelemetry.OpenTelemetryProperties; @@ -54,6 +55,23 @@ class OtlpMetricsPropertiesConfigAdapterTests { this.connectionDetails = new PropertiesOtlpMetricsConnectionDetails(this.properties); } + @Test + void whenPropertiesUrlIsNotSetAdapterUrlReturnsDefault() { + assertThat(createAdapter().url()).isEqualTo("http://localhost:4318/v1/metrics"); + } + + @Test + void whenPropertiesUrlIsNotSetAndOtelExporterOtlpEndpointIsSetAdapterUrlUsesIt() throws Exception { + SystemStubs.withEnvironmentVariable("OTEL_EXPORTER_OTLP_ENDPOINT", "https://my-endpoint") + .execute(() -> assertThat(createAdapter().url()).isEqualTo("https://my-endpoint/v1/metrics")); + } + + @Test + void whenPropertiesUrlIsNotSetAndOtelExporterOtlpMetricsEndpointIsSetAdapterUrlUsesIt() throws Exception { + SystemStubs.withEnvironmentVariable("OTEL_EXPORTER_OTLP_METRICS_ENDPOINT", "https://my-endpoint") + .execute(() -> assertThat(createAdapter().url()).isEqualTo("https://my-endpoint/v1/metrics")); + } + @Test void whenPropertiesUrlIsSetAdapterUrlReturnsIt() { this.properties.setUrl("http://another-url:4318/v1/metrics"); diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpMetricsPropertiesTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpMetricsPropertiesTests.java index 36f2f85af6..d3f51f044c 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpMetricsPropertiesTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpMetricsPropertiesTests.java @@ -35,7 +35,6 @@ class OtlpMetricsPropertiesTests extends StepRegistryPropertiesTests { OtlpMetricsProperties properties = new OtlpMetricsProperties(); OtlpConfig config = OtlpConfig.DEFAULT; assertStepRegistryDefaultValues(properties, config); - assertThat(properties.getUrl()).isEqualTo(config.url()); assertThat(properties.getAggregationTemporality()).isSameAs(config.aggregationTemporality()); assertThat(properties.getHistogramFlavor()).isSameAs(config.histogramFlavor()); assertThat(properties.getMaxScale()).isEqualTo(config.maxScale());