From a12bab453cfc899ae9bc92ce82db48791bcc1ca1 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Fri, 24 Nov 2017 13:48:06 +0100 Subject: [PATCH] Polish "Fix PropertiesConfigAdapter delegation logic" Closes gh-11135 --- .../export/PropertiesConfigAdapter.java | 1 + .../GangliaPropertiesConfigAdapter.java | 9 ++- .../GraphitePropertiesConfigAdapter.java | 3 +- .../influx/InfluxPropertiesConfigAdapter.java | 3 +- .../PrometheusPropertiesConfigAdapter.java | 3 +- .../statsd/StatsdPropertiesConfigAdapter.java | 6 +- .../DatadogExportConfigurationTests.java | 64 ------------------- .../DatadogPropertiesConfigAdapterTests.java | 47 ++++++++++++++ 8 files changed, 64 insertions(+), 72 deletions(-) delete mode 100644 spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogExportConfigurationTests.java create mode 100644 spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogPropertiesConfigAdapterTests.java diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/PropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/PropertiesConfigAdapter.java index 1e0ad3458d2..5ca634b6ccb 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/PropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/PropertiesConfigAdapter.java @@ -26,6 +26,7 @@ import org.springframework.util.Assert; * * @param The properties type * @author Phillip Webb + * @author Nikolay Rybak * @since 2.0.0 */ public class PropertiesConfigAdapter { diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaPropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaPropertiesConfigAdapter.java index 786fbce6d2c..e14a5da23b7 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaPropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaPropertiesConfigAdapter.java @@ -60,17 +60,20 @@ class GangliaPropertiesConfigAdapter @Override public TimeUnit durationUnits() { - return get(GangliaProperties::getDurationUnits, GangliaConfig.super::durationUnits); + return get(GangliaProperties::getDurationUnits, + GangliaConfig.super::durationUnits); } @Override public String protocolVersion() { - return get(GangliaProperties::getProtocolVersion, GangliaConfig.super::protocolVersion); + return get(GangliaProperties::getProtocolVersion, + GangliaConfig.super::protocolVersion); } @Override public GMetric.UDPAddressingMode addressingMode() { - return get(GangliaProperties::getAddressingMode, GangliaConfig.super::addressingMode); + return get(GangliaProperties::getAddressingMode, + GangliaConfig.super::addressingMode); } @Override diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphitePropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphitePropertiesConfigAdapter.java index 4259e620572..cafebe4c112 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphitePropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/graphite/GraphitePropertiesConfigAdapter.java @@ -60,7 +60,8 @@ class GraphitePropertiesConfigAdapter @Override public TimeUnit durationUnits() { - return get(GraphiteProperties::getDurationUnits, GraphiteConfig.super::durationUnits); + return get(GraphiteProperties::getDurationUnits, + GraphiteConfig.super::durationUnits); } @Override diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxPropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxPropertiesConfigAdapter.java index 5ae67406e3f..5cb8ebd666e 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxPropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/influx/InfluxPropertiesConfigAdapter.java @@ -57,7 +57,8 @@ class InfluxPropertiesConfigAdapter @Override public String retentionPolicy() { - return get(InfluxProperties::getRetentionPolicy, InfluxConfig.super::retentionPolicy); + return get(InfluxProperties::getRetentionPolicy, + InfluxConfig.super::retentionPolicy); } @Override diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapter.java index c6744259b78..8742861413f 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusPropertiesConfigAdapter.java @@ -43,7 +43,8 @@ class PrometheusPropertiesConfigAdapter @Override public boolean descriptions() { - return get(PrometheusProperties::getDescriptions, PrometheusConfig.super::descriptions); + return get(PrometheusProperties::getDescriptions, + PrometheusConfig.super::descriptions); } @Override diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesConfigAdapter.java index 90a93fb4df1..e6a8648f9fe 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesConfigAdapter.java @@ -63,12 +63,14 @@ public class StatsdPropertiesConfigAdapter extends @Override public int maxPacketLength() { - return get(StatsdProperties::getMaxPacketLength, StatsdConfig.super::maxPacketLength); + return get(StatsdProperties::getMaxPacketLength, + StatsdConfig.super::maxPacketLength); } @Override public Duration pollingFrequency() { - return get(StatsdProperties::getPollingFrequency, StatsdConfig.super::pollingFrequency); + return get(StatsdProperties::getPollingFrequency, + StatsdConfig.super::pollingFrequency); } @Override diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogExportConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogExportConfigurationTests.java deleted file mode 100644 index 6cc20a0ac37..00000000000 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogExportConfigurationTests.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2012-2017 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 - * - * http://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.datadog; - -import io.micrometer.core.instrument.composite.CompositeMeterRegistry; -import io.micrometer.datadog.DatadogMeterRegistry; -import org.junit.Test; -import org.junit.runner.RunWith; - -import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration; -import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.test.context.junit4.SpringRunner; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * Tests for {@link DatadogExportConfiguration}. - * - * @author Nikolay Rybak - */ -@RunWith(SpringRunner.class) -public class DatadogExportConfigurationTests { - - /** - * Validated that {@link DatadogMeterRegistry} can be started by only specifying Datadog API key. - */ - @Test - public void datadogMeterRegistryIsConfiguredWithApiKeyOnly() { - new ApplicationContextRunner() - .withPropertyValues("spring.metrics.export.atlas.enabled=false", - "spring.metrics.export.datadog.enabled=true", - "spring.metrics.export.ganglia.enabled=false", - "spring.metrics.export.graphite.enabled=false", - "spring.metrics.export.influx.enabled=false", - "spring.metrics.export.jmx.enabled=false", - "spring.metrics.export.prometheus.enabled=false", - "spring.metrics.export.statsd.enabled=false", - "spring.metrics.export.datadog.api-key=APIKEY") - .withConfiguration(AutoConfigurations.of(MetricsAutoConfiguration.class)) - .run((context) -> { - CompositeMeterRegistry meterRegistry = context - .getBean(CompositeMeterRegistry.class); - assertThat(meterRegistry.getRegistries()).hasSize(1); - assertThat(meterRegistry.getRegistries()) - .hasOnlyElementsOfType(DatadogMeterRegistry.class); - }); - } - -} 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 new file mode 100644 index 00000000000..7ca2affe1b6 --- /dev/null +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogPropertiesConfigAdapterTests.java @@ -0,0 +1,47 @@ +/* + * Copyright 2012-2017 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 + * + * http://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.datadog; + +import org.junit.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Tests for {@link DatadogPropertiesConfigAdapter}. + * + * @author Stephane Nicoll + */ +public class DatadogPropertiesConfigAdapterTests { + + @Test + public void apiKeyInferUri() { + DatadogProperties properties = new DatadogProperties(); + properties.setApiKey("my-key"); + assertThat(new DatadogPropertiesConfigAdapter(properties).uri()) + .contains("?api_key=my-key"); + } + + @Test + public void uriCanBeSet() { + DatadogProperties properties = new DatadogProperties(); + properties.setUri("https://app.example.com/api/v1/series"); + properties.setApiKey("my-key"); + assertThat(new DatadogPropertiesConfigAdapter(properties).uri()) + .isEqualTo("https://app.example.com/api/v1/series"); + } + +}