From 4c37e621e49a4fb78333da1d01c942566a44a7e1 Mon Sep 17 00:00:00 2001 From: Mirko Sobeck Date: Tue, 10 Jan 2023 17:31:40 +0100 Subject: [PATCH 1/4] Add missing Micrometer PropertiesConfigAdapterTests --- .../export/wavefront/WavefrontPropertiesConfigAdapterTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/wavefront/WavefrontPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/wavefront/WavefrontPropertiesConfigAdapterTests.java index 6660d9319955..186e2cdf9ff6 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/wavefront/WavefrontPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/wavefront/WavefrontPropertiesConfigAdapterTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2022 the original author or authors. + * Copyright 2012-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. From 8a8709fd021329afb190a0c0cd8091b6bfd8a043 Mon Sep 17 00:00:00 2001 From: Mirko Sobeck Date: Tue, 10 Jan 2023 17:33:49 +0100 Subject: [PATCH 2/4] Fix spelling mistake in DatadogProperties --- .../metrics/export/datadog/DatadogProperties.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogProperties.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogProperties.java index b60f60d49465..ec9e0e2d6fcf 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogProperties.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogProperties.java @@ -36,8 +36,8 @@ public class DatadogProperties extends StepRegistryProperties { private String apiKey; /** - * Datadog application key. Not strictly required, but improves the Datadog experience - * by sending meter descriptions, types, and base units to Datadog. + * Datadog's application key. Not strictly required, but improves the Datadog + * experience by sending meter descriptions, types, and base units to Datadog. */ private String applicationKey; From 93c46b86b0318c730ea2b12275deb2dad154da51 Mon Sep 17 00:00:00 2001 From: Mirko Sobeck Date: Tue, 10 Jan 2023 17:41:14 +0100 Subject: [PATCH 3/4] Test Micrometer config to property exposure --- .../TestConfigsToPropertiesExposure.java | 80 +++++++++++++++++++ ...AppOpticsPropertiesConfigAdapterTests.java | 9 ++- .../AtlasPropertiesConfigAdapterTests.java | 8 ++ .../DatadogPropertiesConfigAdapterTests.java | 8 ++ ...DynatracePropertiesConfigAdapterTests.java | 9 ++- .../ElasticPropertiesConfigAdapterTests.java | 10 ++- .../GangliaPropertiesConfigAdapterTests.java | 8 ++ .../GraphitePropertiesConfigAdapterTests.java | 8 ++ .../HumioPropertiesConfigAdapterTests.java | 7 ++ .../InfluxPropertiesConfigAdapterTests.java | 6 ++ .../jmx/JmxPropertiesConfigAdapterTests.java | 7 ++ .../KairosPropertiesConfigAdapterTests.java | 6 ++ .../NewRelicPropertiesConfigAdapterTests.java | 8 ++ .../OtlpPropertiesConfigAdapterTests.java | 6 ++ ...rometheusPropertiesConfigAdapterTests.java | 8 ++ .../SignalFXPropertiesConfigAdapterTests.java | 8 ++ .../SimplePropertiesConfigAdapterTests.java | 8 ++ ...ackdriverPropertiesConfigAdapterTests.java | 7 ++ .../StatsdPropertiesConfigAdapterTests.java | 7 ++ ...WavefrontPropertiesConfigAdapterTests.java | 10 +++ 20 files changed, 225 insertions(+), 3 deletions(-) create mode 100644 spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/TestConfigsToPropertiesExposure.java diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/TestConfigsToPropertiesExposure.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/TestConfigsToPropertiesExposure.java new file mode 100644 index 000000000000..7c0c839aeda7 --- /dev/null +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/TestConfigsToPropertiesExposure.java @@ -0,0 +1,80 @@ +package org.springframework.boot.actuate.autoconfigure.metrics.export; + +import java.lang.reflect.Method; +import java.time.Duration; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import org.apache.commons.lang3.ClassUtils; +import org.junit.Assert; + +import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.PropertiesConfigAdapter; + +public class TestConfigsToPropertiesExposure { + /** + * Assertion to test if default methods of a given config are overridden by the adapter which implements it. + * This can be an indicator for micrometer config fields, that have been forgotten to expose via spring properties. + * Not overridden default methods in adapters are the most common cause of forgotten field exposure, because + * they do not for force an override. + * + * @param config micrometer config + * @param adapter adapter for properties {@link PropertiesConfigAdapter} + * @param excludedConfigMethods config methods that should be excluded for the assertion + */ + public static void assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(Class config, Class> adapter, String... excludedConfigMethods) { + List configDefaultMethodNames = Arrays.stream(config.getDeclaredMethods()) + .filter(method -> method.isDefault() && isSettableUsingProperties(method.getReturnType())) + .map(Method::getName) + .collect(Collectors.toList()); + + configDefaultMethodNames.removeAll(Arrays.stream(excludedConfigMethods).toList()); + List notOverriddenDefaultMethods = new ArrayList<>(configDefaultMethodNames); + + Class currentClass = adapter; + // loop through adapter class and superclasses to find not overridden config methods + while (!Object.class.equals(currentClass)) { + List overriddenClassDefaultMethods = Arrays.stream(currentClass.getDeclaredMethods()) + .map(Method::getName) + .filter(configDefaultMethodNames::contains) + .toList(); + + notOverriddenDefaultMethods.removeAll(overriddenClassDefaultMethods); + currentClass = currentClass.getSuperclass(); + } + + if (notOverriddenDefaultMethods.size() >= 1) { + Assert.fail("Found config default methods that are not overridden by the related PropertiesConfigAdapter: \n" + + notOverriddenDefaultMethods + "\n" + + "This could be an indicator for not exposed properties fields.\n" + + "Please check if the fields are meant to be exposed and if not, " + + "exclude them from this test by providing them to the method."); + } + } + + /** + * Guess if a class can be set using properties. + * This will only catch the basic use cases regarding the micrometer configs to + * filter out methods that are not likely to be designed to be set via properties. + *
+	 *     isSettableUsingProperties(String.class) = true
+	 *     isSettableUsingProperties(boolean.class) = true
+	 *     isSettableUsingProperties(Object.class) = false
+	 * 
+ * + * @param clazz Class + * @return is likely to be settable using properties + */ + private static boolean isSettableUsingProperties(Class clazz) { + if (Void.TYPE.equals(clazz)) { + return false; + } + + if (ClassUtils.isPrimitiveOrWrapper(clazz)) { + return true; + } + + return List.of(Duration.class, String.class).contains(clazz); + } +} diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/appoptics/AppOpticsPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/appoptics/AppOpticsPropertiesConfigAdapterTests.java index 6b5de57c7fae..6d6dd6c160be 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/appoptics/AppOpticsPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/appoptics/AppOpticsPropertiesConfigAdapterTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2020 the original author or authors. + * Copyright 2012-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,11 +16,13 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.appoptics; +import io.micrometer.appoptics.AppOpticsConfig; import org.junit.jupiter.api.Test; import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryPropertiesConfigAdapterTests; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link AppOpticsPropertiesConfigAdapter}. @@ -68,4 +70,9 @@ void whenPropertiesFloorTimesIsSetAdapterFloorTimesReturnsIt() { assertThat(createConfigAdapter(properties).floorTimes()).isTrue(); } + @Test + void allDefaultConfigMethodsAreOverriddenByAtlasPropertiesConfigAdapter() { + assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(AppOpticsConfig.class, AppOpticsPropertiesConfigAdapter.class, + "connectTimeout"); + } } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasPropertiesConfigAdapterTests.java index 48b777c69d38..628e4630b6f9 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasPropertiesConfigAdapterTests.java @@ -18,9 +18,11 @@ import java.time.Duration; +import com.netflix.spectator.atlas.AtlasConfig; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link AtlasPropertiesConfigAdapter}. @@ -116,4 +118,10 @@ void whenPropertiesEvalUriIsSetAdapterEvalUriReturnsIt() { .isEqualTo("https://atlas.example.com/evaluate"); } + @Test + void allConfigDefaultMethodsAreOverriddenByAdapter() { + assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(AtlasConfig.class, AtlasPropertiesConfigAdapter.class, + "lwcIgnorePublishStep", "initialPollingDelay", "autoStart", "lwcStep", "validTagCharacters"); + } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogPropertiesConfigAdapterTests.java index b47892c439a5..eb45feb968a7 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogPropertiesConfigAdapterTests.java @@ -16,11 +16,13 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.datadog; +import io.micrometer.datadog.DatadogConfig; import org.junit.jupiter.api.Test; import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryPropertiesConfigAdapterTests; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link DatadogPropertiesConfigAdapter}. @@ -76,4 +78,10 @@ void whenPropertiesUriIsSetAdapterUriReturnsIt() { assertThat(createConfigAdapter(properties).uri()).isEqualTo("https://app.example.com/api/v1/series"); } + @Test + void allConfigDefaultMethodsAreOverriddenByAdapter() { + assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(DatadogConfig.class, + DatadogPropertiesConfigAdapter.class); + } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/dynatrace/DynatracePropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/dynatrace/DynatracePropertiesConfigAdapterTests.java index 86143ac76f5f..1467dad4518a 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/dynatrace/DynatracePropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/dynatrace/DynatracePropertiesConfigAdapterTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2022 the original author or authors. + * Copyright 2012-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,9 +19,11 @@ import java.util.HashMap; import io.micrometer.dynatrace.DynatraceApiVersion; +import io.micrometer.dynatrace.DynatraceConfig; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link DynatracePropertiesConfigAdapter}. @@ -125,4 +127,9 @@ void defaultValues() { assertThat(properties.getV2().isUseDynatraceSummaryInstruments()).isTrue(); } + @Test + void allConfigDefaultMethodsAreOverriddenByAdapter() { + assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(DynatraceConfig.class, DynatracePropertiesConfigAdapter.class, + "documentType"); + } } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/elastic/ElasticPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/elastic/ElasticPropertiesConfigAdapterTests.java index 8e5313370358..0b07ee42c632 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/elastic/ElasticPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/elastic/ElasticPropertiesConfigAdapterTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2021 the original author or authors. + * Copyright 2012-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,9 +16,11 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.elastic; +import io.micrometer.elastic.ElasticConfig; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link ElasticPropertiesConfigAdapter}. @@ -97,4 +99,10 @@ void whenPropertiesApiKeyCredentialsIsSetAdapterPipelineReturnsIt() { assertThat(new ElasticPropertiesConfigAdapter(properties).apiKeyCredentials()).isEqualTo("secret"); } + @Test + void allConfigDefaultMethodsAreOverriddenByAdapter() { + assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(ElasticConfig.class, ElasticPropertiesConfigAdapter.class, + "documentType" + ); + } } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaPropertiesConfigAdapterTests.java index 3afd087f8b6a..756d1fee4520 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaPropertiesConfigAdapterTests.java @@ -20,9 +20,11 @@ import java.util.concurrent.TimeUnit; import info.ganglia.gmetric4j.gmetric.GMetric.UDPAddressingMode; +import io.micrometer.ganglia.GangliaConfig; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link GangliaPropertiesConfigAdapter}. @@ -81,4 +83,10 @@ void whenPropertiesPortIsSetAdapterPortReturnsIt() { assertThat(new GangliaPropertiesConfigAdapter(properties).port()).isEqualTo(4242); } + @Test + void allConfigDefaultMethodsAreOverriddenByAdapter() { + assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(GangliaConfig.class, + GangliaPropertiesConfigAdapter.class, "protocolVersion"); + } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphitePropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphitePropertiesConfigAdapterTests.java index 68e6bef9cf5c..d9ba72e61d17 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphitePropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphitePropertiesConfigAdapterTests.java @@ -19,10 +19,12 @@ import java.time.Duration; import java.util.concurrent.TimeUnit; +import io.micrometer.graphite.GraphiteConfig; import io.micrometer.graphite.GraphiteProtocol; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link GraphitePropertiesConfigAdapter}. @@ -94,4 +96,10 @@ void whenPropertiesTagsAsPrefixIsSetAdapterTagsAsPrefixReturnsIt() { assertThat(new GraphitePropertiesConfigAdapter(properties).tagsAsPrefix()).isEqualTo(new String[] { "worker" }); } + @Test + void allConfigDefaultMethodsAreOverriddenByAdapter() { + assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(GraphiteConfig.class, + GraphitePropertiesConfigAdapter.class); + } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/humio/HumioPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/humio/HumioPropertiesConfigAdapterTests.java index dffce7e8eb3e..d8758bcfd7da 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/humio/HumioPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/humio/HumioPropertiesConfigAdapterTests.java @@ -18,9 +18,11 @@ import java.util.Collections; +import io.micrometer.humio.HumioConfig; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link HumioPropertiesConfigAdapter}. @@ -51,4 +53,9 @@ void whenPropertiesUriIsSetAdapterUriReturnsIt() { assertThat(new HumioPropertiesConfigAdapter(properties).uri()).isEqualTo("https://humio.example.com"); } + @Test + void allConfigDefaultMethodsAreOverriddenByAdapter() { + assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(HumioConfig.class, HumioPropertiesConfigAdapter.class, + "connectTimeout"); + } } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxPropertiesConfigAdapterTests.java index 2d86262c668a..2c5b0f022d64 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxPropertiesConfigAdapterTests.java @@ -17,9 +17,11 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.influx; import io.micrometer.influx.InfluxApiVersion; +import io.micrometer.influx.InfluxConfig; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link InfluxPropertiesConfigAdapter}. @@ -58,4 +60,8 @@ void adaptInfluxV2BasicConfig() { assertThat(adapter.token()).isEqualTo("token"); } + @Test + void allConfigDefaultMethodsAreOverriddenByAdapter() { + assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(InfluxConfig.class, InfluxPropertiesConfigAdapter.class); + } } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/jmx/JmxPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/jmx/JmxPropertiesConfigAdapterTests.java index 6ee12bfd5ada..87e945bcf838 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/jmx/JmxPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/jmx/JmxPropertiesConfigAdapterTests.java @@ -18,9 +18,11 @@ import java.time.Duration; +import io.micrometer.jmx.JmxConfig; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link JmxPropertiesConfigAdapter}. @@ -43,4 +45,9 @@ void whenPropertiesDomainIsSetAdapterDomainReturnsIt() { assertThat(new JmxPropertiesConfigAdapter(properties).domain()).isEqualTo("abc"); } + @Test + void allConfigDefaultMethodsAreOverriddenByAdapter() { + assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(JmxConfig.class, JmxPropertiesConfigAdapter.class); + } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/kairos/KairosPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/kairos/KairosPropertiesConfigAdapterTests.java index 711069faff72..29d658349120 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/kairos/KairosPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/kairos/KairosPropertiesConfigAdapterTests.java @@ -16,11 +16,13 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.kairos; +import io.micrometer.kairos.KairosConfig; import org.junit.jupiter.api.Test; import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryPropertiesConfigAdapterTests; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link KairosPropertiesConfigAdapter}. @@ -62,4 +64,8 @@ void whenPropertiesPasswordIsSetAdapterPasswordReturnsIt() { assertThat(createConfigAdapter(properties).password()).isEqualTo("secret"); } + @Test + void allConfigDefaultMethodsAreOverriddenByAdapter() { + assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(KairosConfig.class, KairosPropertiesConfigAdapter.class); + } } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/newrelic/NewRelicPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/newrelic/NewRelicPropertiesConfigAdapterTests.java index 5ef2fd99e7fd..e05b6384edb3 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/newrelic/NewRelicPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/newrelic/NewRelicPropertiesConfigAdapterTests.java @@ -17,11 +17,13 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.newrelic; import io.micrometer.newrelic.ClientProviderType; +import io.micrometer.newrelic.NewRelicConfig; import org.junit.jupiter.api.Test; import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryPropertiesConfigAdapterTests; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link NewRelicPropertiesConfigAdapter}. @@ -83,4 +85,10 @@ void whenPropertiesUriIsSetAdapterUriReturnsIt() { assertThat(createConfigAdapter(properties).uri()).isEqualTo("https://example.newrelic.com"); } + @Test + void allConfigDefaultMethodsAreOverriddenByAdapter() { + assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(NewRelicConfig.class, + NewRelicPropertiesConfigAdapter.class); + } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpPropertiesConfigAdapterTests.java index 3253e01ccd28..9e26d8e1c90d 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpPropertiesConfigAdapterTests.java @@ -18,9 +18,11 @@ import java.util.Map; +import io.micrometer.registry.otlp.OtlpConfig; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link OtlpPropertiesConfigAdapter}. @@ -51,4 +53,8 @@ void whenPropertiesHeadersIsSetAdapterHeadersReturnsIt() { assertThat(new OtlpPropertiesConfigAdapter(properties).headers()).containsEntry("header", "value"); } + @Test + void allConfigDefaultMethodsAreOverriddenByAdapter() { + assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(OtlpConfig.class, OtlpPropertiesConfigAdapter.class); + } } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapterTests.java index 66aa5920aa1a..810a61513f9e 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapterTests.java @@ -19,9 +19,11 @@ import java.time.Duration; import io.micrometer.prometheus.HistogramFlavor; +import io.micrometer.prometheus.PrometheusConfig; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link PrometheusPropertiesConfigAdapter}. @@ -52,4 +54,10 @@ void whenPropertiesStepIsSetAdapterStepReturnsIt() { assertThat(new PrometheusPropertiesConfigAdapter(properties).step()).isEqualTo(Duration.ofSeconds(30)); } + @Test + void allConfigDefaultMethodsAreOverriddenByAdapter() { + assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(PrometheusConfig.class, + PrometheusPropertiesConfigAdapter.class); + } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/signalfx/SignalFXPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/signalfx/SignalFXPropertiesConfigAdapterTests.java index 03ed7435b533..f4c392e7be1f 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/signalfx/SignalFXPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/signalfx/SignalFXPropertiesConfigAdapterTests.java @@ -16,11 +16,13 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.signalfx; +import io.micrometer.signalfx.SignalFxConfig; import org.junit.jupiter.api.Test; import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryPropertiesConfigAdapterTests; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link SignalFxPropertiesConfigAdapter}. @@ -62,4 +64,10 @@ void whenPropertiesSourceIsSetAdapterSourceReturnsIt() { assertThat(createConfigAdapter(properties).source()).isEqualTo("DESKTOP-GA5"); } + @Test + void allConfigDefaultMethodsAreOverriddenByAdapter() { + assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(SignalFxConfig.class, + SignalFxPropertiesConfigAdapter.class, "publishDeltaHistogram", "publishCumulativeHistogram"); + } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimplePropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimplePropertiesConfigAdapterTests.java index c62ddaeebc89..2f1edd1b0ce2 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimplePropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimplePropertiesConfigAdapterTests.java @@ -19,11 +19,13 @@ import java.time.Duration; import io.micrometer.core.instrument.simple.CountingMode; +import io.micrometer.core.instrument.simple.SimpleConfig; import org.junit.jupiter.api.Test; import org.springframework.boot.actuate.autoconfigure.metrics.export.signalfx.SignalFxPropertiesConfigAdapter; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link SignalFxPropertiesConfigAdapter}. @@ -46,4 +48,10 @@ void whenPropertiesAccessTokenIsSetAdapterAccessTokenReturnsIt() { assertThat(new SimplePropertiesConfigAdapter(properties).mode()).isEqualTo(CountingMode.STEP); } + @Test + void allConfigDefaultMethodsAreOverriddenByAdapter() { + assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(SimpleConfig.class, + SimplePropertiesConfigAdapter.class); + } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesConfigAdapterTests.java index 6018cbc91ff4..6e52f5490923 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesConfigAdapterTests.java @@ -19,9 +19,11 @@ import java.util.HashMap; import java.util.Map; +import io.micrometer.stackdriver.StackdriverConfig; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link StackdriverPropertiesConfigAdapter}. @@ -62,4 +64,9 @@ void whenPropertiesUseSemanticMetricTypesIsSetAdapterUseSemanticMetricTypesRetur assertThat(new StackdriverPropertiesConfigAdapter(properties).useSemanticMetricTypes()).isTrue(); } + @Test + void allConfigDefaultMethodsAreOverriddenByAdapter() { + assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(StackdriverConfig.class, StackdriverPropertiesConfigAdapter.class, + "metricTypePrefix"); + } } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesConfigAdapterTests.java index e6bce8be431d..af0551f89864 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesConfigAdapterTests.java @@ -18,11 +18,13 @@ import java.time.Duration; +import io.micrometer.statsd.StatsdConfig; import io.micrometer.statsd.StatsdFlavor; import io.micrometer.statsd.StatsdProtocol; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link StatsdPropertiesConfigAdapter}. @@ -104,4 +106,9 @@ void whenPropertiesBufferedIsSetAdapterBufferedReturnsIt() { assertThat(new StatsdPropertiesConfigAdapter(properties).buffered()).isEqualTo(properties.isBuffered()); } + @Test + void allConfigDefaultMethodsAreOverriddenByAdapter() { + assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(StatsdConfig.class, StatsdPropertiesConfigAdapter.class, + "queueSize"); + } } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/wavefront/WavefrontPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/wavefront/WavefrontPropertiesConfigAdapterTests.java index 186e2cdf9ff6..956828ad50a8 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/wavefront/WavefrontPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/wavefront/WavefrontPropertiesConfigAdapterTests.java @@ -18,6 +18,7 @@ import java.net.URI; +import io.micrometer.wavefront.WavefrontConfig; import org.junit.jupiter.api.Test; import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.PushRegistryPropertiesConfigAdapterTests; @@ -25,6 +26,7 @@ import org.springframework.boot.actuate.autoconfigure.wavefront.WavefrontProperties.Metrics.Export; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link WavefrontPropertiesConfigAdapter}. @@ -82,4 +84,12 @@ void whenPropertiesSourceIsSetAdapterSourceReturnsIt() { assertThat(new WavefrontPropertiesConfigAdapter(properties).source()).isEqualTo("DESKTOP-GA5"); } + @Test + void allConfigDefaultMethodsAreOverriddenByAdapter() { + assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(WavefrontConfig.class, WavefrontPropertiesConfigAdapter.class, + "distributionPort", + "reportMinuteDistribution", + "reportHourDistribution", + "reportDayDistribution"); + } } From 3ced29c3b7f7696354869519a2eb03dd6bbafaff Mon Sep 17 00:00:00 2001 From: Mirko Sobeck Date: Tue, 7 Feb 2023 18:33:33 +0100 Subject: [PATCH 4/4] Fix checkstyle issues --- .../TestConfigsToPropertiesExposure.java | 83 +++++++++++++------ ...AppOpticsPropertiesConfigAdapterTests.java | 7 +- .../AtlasPropertiesConfigAdapterTests.java | 8 +- .../DatadogPropertiesConfigAdapterTests.java | 4 +- ...DynatracePropertiesConfigAdapterTests.java | 8 +- .../ElasticPropertiesConfigAdapterTests.java | 9 +- .../GangliaPropertiesConfigAdapterTests.java | 5 +- .../GraphitePropertiesConfigAdapterTests.java | 5 +- .../HumioPropertiesConfigAdapterTests.java | 8 +- .../InfluxPropertiesConfigAdapterTests.java | 7 +- .../jmx/JmxPropertiesConfigAdapterTests.java | 6 +- .../KairosPropertiesConfigAdapterTests.java | 6 +- .../NewRelicPropertiesConfigAdapterTests.java | 4 +- .../OtlpPropertiesConfigAdapterTests.java | 7 +- ...rometheusPropertiesConfigAdapterTests.java | 5 +- .../SignalFXPropertiesConfigAdapterTests.java | 4 +- .../SimplePropertiesConfigAdapterTests.java | 4 +- ...ackdriverPropertiesConfigAdapterTests.java | 8 +- .../StatsdPropertiesConfigAdapterTests.java | 8 +- ...WavefrontPropertiesConfigAdapterTests.java | 11 ++- 20 files changed, 130 insertions(+), 77 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/TestConfigsToPropertiesExposure.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/TestConfigsToPropertiesExposure.java index 7c0c839aeda7..607261591488 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/TestConfigsToPropertiesExposure.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/TestConfigsToPropertiesExposure.java @@ -1,3 +1,19 @@ +/* + * Copyright 2012-2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.springframework.boot.actuate.autoconfigure.metrics.export; import java.lang.reflect.Method; @@ -7,62 +23,74 @@ import java.util.List; import java.util.stream.Collectors; -import org.apache.commons.lang3.ClassUtils; import org.junit.Assert; import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.PropertiesConfigAdapter; -public class TestConfigsToPropertiesExposure { +/** + * Utility to test that all Micrometer config values are exposed via properties and + * settable using the corresponding {@link PropertiesConfigAdapter} implementation. + * + * @author Mirko Sobeck + */ +public final class TestConfigsToPropertiesExposure { + + private TestConfigsToPropertiesExposure() { + + } + + private static final List> classesForPropertiesList = List.of(Boolean.class, Byte.class, Character.class, + Short.class, Integer.class, Long.class, Double.class, Float.class, String.class, Duration.class); + /** - * Assertion to test if default methods of a given config are overridden by the adapter which implements it. - * This can be an indicator for micrometer config fields, that have been forgotten to expose via spring properties. - * Not overridden default methods in adapters are the most common cause of forgotten field exposure, because + * Assertion to test if default methods of a given config are overridden by the + * adapter which implements it. This can be an indicator for micrometer config fields, + * that have been forgotten to expose via spring properties. Not overridden default + * methods in adapters are the most common cause of forgotten field exposure, because * they do not for force an override. - * * @param config micrometer config * @param adapter adapter for properties {@link PropertiesConfigAdapter} - * @param excludedConfigMethods config methods that should be excluded for the assertion + * @param excludedConfigMethods config methods that should be excluded for the + * assertion */ - public static void assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(Class config, Class> adapter, String... excludedConfigMethods) { + public static void assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(Class config, + Class> adapter, String... excludedConfigMethods) { List configDefaultMethodNames = Arrays.stream(config.getDeclaredMethods()) - .filter(method -> method.isDefault() && isSettableUsingProperties(method.getReturnType())) - .map(Method::getName) - .collect(Collectors.toList()); + .filter((method) -> method.isDefault() && isSettableUsingProperties(method.getReturnType())) + .map(Method::getName).collect(Collectors.toList()); configDefaultMethodNames.removeAll(Arrays.stream(excludedConfigMethods).toList()); List notOverriddenDefaultMethods = new ArrayList<>(configDefaultMethodNames); Class currentClass = adapter; - // loop through adapter class and superclasses to find not overridden config methods + // loop through adapter class and superclasses + // to find not overridden config methods while (!Object.class.equals(currentClass)) { List overriddenClassDefaultMethods = Arrays.stream(currentClass.getDeclaredMethods()) - .map(Method::getName) - .filter(configDefaultMethodNames::contains) - .toList(); + .map(Method::getName).filter(configDefaultMethodNames::contains).toList(); notOverriddenDefaultMethods.removeAll(overriddenClassDefaultMethods); currentClass = currentClass.getSuperclass(); } if (notOverriddenDefaultMethods.size() >= 1) { - Assert.fail("Found config default methods that are not overridden by the related PropertiesConfigAdapter: \n" - + notOverriddenDefaultMethods + "\n" - + "This could be an indicator for not exposed properties fields.\n" - + "Please check if the fields are meant to be exposed and if not, " - + "exclude them from this test by providing them to the method."); + Assert.fail( + "Found config default methods that are not overridden by the related PropertiesConfigAdapter: \n" + + notOverriddenDefaultMethods + "\n" + + "This could be an indicator for not exposed properties fields.\n" + + "Please check if the fields are meant to be exposed and if not, " + + "exclude them from this test by providing them to the method."); } } /** - * Guess if a class can be set using properties. - * This will only catch the basic use cases regarding the micrometer configs to - * filter out methods that are not likely to be designed to be set via properties. - *
+	 * Guess if a class can be set using properties. This will only catch the basic use
+	 * cases regarding the micrometer configs to filter out methods that are not likely to
+	 * be designed to be set via properties. 
 	 *     isSettableUsingProperties(String.class) = true
 	 *     isSettableUsingProperties(boolean.class) = true
 	 *     isSettableUsingProperties(Object.class) = false
 	 * 
- * * @param clazz Class * @return is likely to be settable using properties */ @@ -71,10 +99,11 @@ private static boolean isSettableUsingProperties(Class clazz) { return false; } - if (ClassUtils.isPrimitiveOrWrapper(clazz)) { + if (clazz.isPrimitive()) { return true; } - return List.of(Duration.class, String.class).contains(clazz); + return classesForPropertiesList.contains(clazz); } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/appoptics/AppOpticsPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/appoptics/AppOpticsPropertiesConfigAdapterTests.java index 6d6dd6c160be..9768c1f18640 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/appoptics/AppOpticsPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/appoptics/AppOpticsPropertiesConfigAdapterTests.java @@ -19,10 +19,10 @@ import io.micrometer.appoptics.AppOpticsConfig; import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure; import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryPropertiesConfigAdapterTests; import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link AppOpticsPropertiesConfigAdapter}. @@ -72,7 +72,8 @@ void whenPropertiesFloorTimesIsSetAdapterFloorTimesReturnsIt() { @Test void allDefaultConfigMethodsAreOverriddenByAtlasPropertiesConfigAdapter() { - assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(AppOpticsConfig.class, AppOpticsPropertiesConfigAdapter.class, - "connectTimeout"); + TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(AppOpticsConfig.class, + AppOpticsPropertiesConfigAdapter.class, "connectTimeout"); } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasPropertiesConfigAdapterTests.java index 628e4630b6f9..31f827d4e95c 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasPropertiesConfigAdapterTests.java @@ -21,8 +21,9 @@ import com.netflix.spectator.atlas.AtlasConfig; import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure; + import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link AtlasPropertiesConfigAdapter}. @@ -120,8 +121,9 @@ void whenPropertiesEvalUriIsSetAdapterEvalUriReturnsIt() { @Test void allConfigDefaultMethodsAreOverriddenByAdapter() { - assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(AtlasConfig.class, AtlasPropertiesConfigAdapter.class, - "lwcIgnorePublishStep", "initialPollingDelay", "autoStart", "lwcStep", "validTagCharacters"); + TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(AtlasConfig.class, + AtlasPropertiesConfigAdapter.class, "lwcIgnorePublishStep", "initialPollingDelay", "autoStart", + "lwcStep", "validTagCharacters"); } } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogPropertiesConfigAdapterTests.java index eb45feb968a7..165f7dec03d5 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogPropertiesConfigAdapterTests.java @@ -19,10 +19,10 @@ import io.micrometer.datadog.DatadogConfig; import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure; import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryPropertiesConfigAdapterTests; import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link DatadogPropertiesConfigAdapter}. @@ -80,7 +80,7 @@ void whenPropertiesUriIsSetAdapterUriReturnsIt() { @Test void allConfigDefaultMethodsAreOverriddenByAdapter() { - assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(DatadogConfig.class, + TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(DatadogConfig.class, DatadogPropertiesConfigAdapter.class); } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/dynatrace/DynatracePropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/dynatrace/DynatracePropertiesConfigAdapterTests.java index 1467dad4518a..a1950046c0da 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/dynatrace/DynatracePropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/dynatrace/DynatracePropertiesConfigAdapterTests.java @@ -22,8 +22,9 @@ import io.micrometer.dynatrace.DynatraceConfig; import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure; + import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link DynatracePropertiesConfigAdapter}. @@ -129,7 +130,8 @@ void defaultValues() { @Test void allConfigDefaultMethodsAreOverriddenByAdapter() { - assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(DynatraceConfig.class, DynatracePropertiesConfigAdapter.class, - "documentType"); + TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(DynatraceConfig.class, + DynatracePropertiesConfigAdapter.class, "documentType"); } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/elastic/ElasticPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/elastic/ElasticPropertiesConfigAdapterTests.java index 0b07ee42c632..b9bf20876d8f 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/elastic/ElasticPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/elastic/ElasticPropertiesConfigAdapterTests.java @@ -19,8 +19,9 @@ import io.micrometer.elastic.ElasticConfig; import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure; + import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link ElasticPropertiesConfigAdapter}. @@ -101,8 +102,8 @@ void whenPropertiesApiKeyCredentialsIsSetAdapterPipelineReturnsIt() { @Test void allConfigDefaultMethodsAreOverriddenByAdapter() { - assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(ElasticConfig.class, ElasticPropertiesConfigAdapter.class, - "documentType" - ); + TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(ElasticConfig.class, + ElasticPropertiesConfigAdapter.class, "documentType"); } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaPropertiesConfigAdapterTests.java index 756d1fee4520..8769c4020410 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaPropertiesConfigAdapterTests.java @@ -23,8 +23,9 @@ import io.micrometer.ganglia.GangliaConfig; import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure; + import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link GangliaPropertiesConfigAdapter}. @@ -85,7 +86,7 @@ void whenPropertiesPortIsSetAdapterPortReturnsIt() { @Test void allConfigDefaultMethodsAreOverriddenByAdapter() { - assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(GangliaConfig.class, + TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(GangliaConfig.class, GangliaPropertiesConfigAdapter.class, "protocolVersion"); } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphitePropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphitePropertiesConfigAdapterTests.java index d9ba72e61d17..ce375464ba62 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphitePropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphitePropertiesConfigAdapterTests.java @@ -23,8 +23,9 @@ import io.micrometer.graphite.GraphiteProtocol; import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure; + import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link GraphitePropertiesConfigAdapter}. @@ -98,7 +99,7 @@ void whenPropertiesTagsAsPrefixIsSetAdapterTagsAsPrefixReturnsIt() { @Test void allConfigDefaultMethodsAreOverriddenByAdapter() { - assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(GraphiteConfig.class, + TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(GraphiteConfig.class, GraphitePropertiesConfigAdapter.class); } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/humio/HumioPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/humio/HumioPropertiesConfigAdapterTests.java index d8758bcfd7da..243120bb32e6 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/humio/HumioPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/humio/HumioPropertiesConfigAdapterTests.java @@ -21,8 +21,9 @@ import io.micrometer.humio.HumioConfig; import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure; + import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link HumioPropertiesConfigAdapter}. @@ -55,7 +56,8 @@ void whenPropertiesUriIsSetAdapterUriReturnsIt() { @Test void allConfigDefaultMethodsAreOverriddenByAdapter() { - assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(HumioConfig.class, HumioPropertiesConfigAdapter.class, - "connectTimeout"); + TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(HumioConfig.class, + HumioPropertiesConfigAdapter.class, "connectTimeout"); } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxPropertiesConfigAdapterTests.java index 2c5b0f022d64..0d0a7142fbcc 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxPropertiesConfigAdapterTests.java @@ -20,8 +20,9 @@ import io.micrometer.influx.InfluxConfig; import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure; + import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link InfluxPropertiesConfigAdapter}. @@ -62,6 +63,8 @@ void adaptInfluxV2BasicConfig() { @Test void allConfigDefaultMethodsAreOverriddenByAdapter() { - assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(InfluxConfig.class, InfluxPropertiesConfigAdapter.class); + TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(InfluxConfig.class, + InfluxPropertiesConfigAdapter.class); } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/jmx/JmxPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/jmx/JmxPropertiesConfigAdapterTests.java index 87e945bcf838..e23a523d2d1a 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/jmx/JmxPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/jmx/JmxPropertiesConfigAdapterTests.java @@ -21,8 +21,9 @@ import io.micrometer.jmx.JmxConfig; import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure; + import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link JmxPropertiesConfigAdapter}. @@ -47,7 +48,8 @@ void whenPropertiesDomainIsSetAdapterDomainReturnsIt() { @Test void allConfigDefaultMethodsAreOverriddenByAdapter() { - assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(JmxConfig.class, JmxPropertiesConfigAdapter.class); + TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(JmxConfig.class, + JmxPropertiesConfigAdapter.class); } } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/kairos/KairosPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/kairos/KairosPropertiesConfigAdapterTests.java index 29d658349120..0fb248d39f1b 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/kairos/KairosPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/kairos/KairosPropertiesConfigAdapterTests.java @@ -19,10 +19,10 @@ import io.micrometer.kairos.KairosConfig; import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure; import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryPropertiesConfigAdapterTests; import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link KairosPropertiesConfigAdapter}. @@ -66,6 +66,8 @@ void whenPropertiesPasswordIsSetAdapterPasswordReturnsIt() { @Test void allConfigDefaultMethodsAreOverriddenByAdapter() { - assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(KairosConfig.class, KairosPropertiesConfigAdapter.class); + TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(KairosConfig.class, + KairosPropertiesConfigAdapter.class); } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/newrelic/NewRelicPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/newrelic/NewRelicPropertiesConfigAdapterTests.java index e05b6384edb3..3eba1bd12f9e 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/newrelic/NewRelicPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/newrelic/NewRelicPropertiesConfigAdapterTests.java @@ -20,10 +20,10 @@ import io.micrometer.newrelic.NewRelicConfig; import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure; import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryPropertiesConfigAdapterTests; import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link NewRelicPropertiesConfigAdapter}. @@ -87,7 +87,7 @@ void whenPropertiesUriIsSetAdapterUriReturnsIt() { @Test void allConfigDefaultMethodsAreOverriddenByAdapter() { - assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(NewRelicConfig.class, + TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(NewRelicConfig.class, NewRelicPropertiesConfigAdapter.class); } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpPropertiesConfigAdapterTests.java index 9e26d8e1c90d..8a47a779ae2e 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpPropertiesConfigAdapterTests.java @@ -21,8 +21,9 @@ import io.micrometer.registry.otlp.OtlpConfig; import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure; + import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link OtlpPropertiesConfigAdapter}. @@ -55,6 +56,8 @@ void whenPropertiesHeadersIsSetAdapterHeadersReturnsIt() { @Test void allConfigDefaultMethodsAreOverriddenByAdapter() { - assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(OtlpConfig.class, OtlpPropertiesConfigAdapter.class); + TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(OtlpConfig.class, + OtlpPropertiesConfigAdapter.class); } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapterTests.java index 810a61513f9e..c9a43eaee7fb 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapterTests.java @@ -22,8 +22,9 @@ import io.micrometer.prometheus.PrometheusConfig; import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure; + import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link PrometheusPropertiesConfigAdapter}. @@ -56,7 +57,7 @@ void whenPropertiesStepIsSetAdapterStepReturnsIt() { @Test void allConfigDefaultMethodsAreOverriddenByAdapter() { - assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(PrometheusConfig.class, + TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(PrometheusConfig.class, PrometheusPropertiesConfigAdapter.class); } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/signalfx/SignalFXPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/signalfx/SignalFXPropertiesConfigAdapterTests.java index f4c392e7be1f..49261635e65d 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/signalfx/SignalFXPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/signalfx/SignalFXPropertiesConfigAdapterTests.java @@ -19,10 +19,10 @@ import io.micrometer.signalfx.SignalFxConfig; import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure; import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryPropertiesConfigAdapterTests; import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link SignalFxPropertiesConfigAdapter}. @@ -66,7 +66,7 @@ void whenPropertiesSourceIsSetAdapterSourceReturnsIt() { @Test void allConfigDefaultMethodsAreOverriddenByAdapter() { - assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(SignalFxConfig.class, + TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(SignalFxConfig.class, SignalFxPropertiesConfigAdapter.class, "publishDeltaHistogram", "publishCumulativeHistogram"); } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimplePropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimplePropertiesConfigAdapterTests.java index 2f1edd1b0ce2..b163bf5320bd 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimplePropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimplePropertiesConfigAdapterTests.java @@ -22,10 +22,10 @@ import io.micrometer.core.instrument.simple.SimpleConfig; import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure; import org.springframework.boot.actuate.autoconfigure.metrics.export.signalfx.SignalFxPropertiesConfigAdapter; import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link SignalFxPropertiesConfigAdapter}. @@ -50,7 +50,7 @@ void whenPropertiesAccessTokenIsSetAdapterAccessTokenReturnsIt() { @Test void allConfigDefaultMethodsAreOverriddenByAdapter() { - assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(SimpleConfig.class, + TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(SimpleConfig.class, SimplePropertiesConfigAdapter.class); } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesConfigAdapterTests.java index 6e52f5490923..7ebf3823cde1 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesConfigAdapterTests.java @@ -22,8 +22,9 @@ import io.micrometer.stackdriver.StackdriverConfig; import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure; + import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link StackdriverPropertiesConfigAdapter}. @@ -66,7 +67,8 @@ void whenPropertiesUseSemanticMetricTypesIsSetAdapterUseSemanticMetricTypesRetur @Test void allConfigDefaultMethodsAreOverriddenByAdapter() { - assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(StackdriverConfig.class, StackdriverPropertiesConfigAdapter.class, - "metricTypePrefix"); + TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(StackdriverConfig.class, + StackdriverPropertiesConfigAdapter.class, "metricTypePrefix"); } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesConfigAdapterTests.java index af0551f89864..b476f2c9c60f 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesConfigAdapterTests.java @@ -23,8 +23,9 @@ import io.micrometer.statsd.StatsdProtocol; import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure; + import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link StatsdPropertiesConfigAdapter}. @@ -108,7 +109,8 @@ void whenPropertiesBufferedIsSetAdapterBufferedReturnsIt() { @Test void allConfigDefaultMethodsAreOverriddenByAdapter() { - assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(StatsdConfig.class, StatsdPropertiesConfigAdapter.class, - "queueSize"); + TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(StatsdConfig.class, + StatsdPropertiesConfigAdapter.class, "queueSize"); } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/wavefront/WavefrontPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/wavefront/WavefrontPropertiesConfigAdapterTests.java index 956828ad50a8..7336fac44fd5 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/wavefront/WavefrontPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/wavefront/WavefrontPropertiesConfigAdapterTests.java @@ -21,12 +21,12 @@ import io.micrometer.wavefront.WavefrontConfig; import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure; import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.PushRegistryPropertiesConfigAdapterTests; import org.springframework.boot.actuate.autoconfigure.wavefront.WavefrontProperties; import org.springframework.boot.actuate.autoconfigure.wavefront.WavefrontProperties.Metrics.Export; import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.boot.actuate.autoconfigure.metrics.export.TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter; /** * Tests for {@link WavefrontPropertiesConfigAdapter}. @@ -86,10 +86,9 @@ void whenPropertiesSourceIsSetAdapterSourceReturnsIt() { @Test void allConfigDefaultMethodsAreOverriddenByAdapter() { - assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(WavefrontConfig.class, WavefrontPropertiesConfigAdapter.class, - "distributionPort", - "reportMinuteDistribution", - "reportHourDistribution", - "reportDayDistribution"); + TestConfigsToPropertiesExposure.assertThatAllConfigDefaultMethodsAreOverriddenByAdapter(WavefrontConfig.class, + WavefrontPropertiesConfigAdapter.class, "distributionPort", "reportMinuteDistribution", + "reportHourDistribution", "reportDayDistribution"); } + }