Introduce PushRegistry abstraction

This commit introduces a separate layer between PushRegistry and
StepRegistry-based implementations.

See gh-17699
This commit is contained in:
Stephane Nicoll
2019-07-30 12:03:40 +02:00
parent e52d398771
commit b405f8ecf2
12 changed files with 302 additions and 174 deletions

View File

@@ -0,0 +1,67 @@
/*
* Copyright 2012-2019 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.properties;
import java.time.Duration;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Base test for {@link PushRegistryPropertiesConfigAdapter} implementations.
*
* @param <P> properties used by the tests
* @param <A> adapter used by the tests
* @author Stephane Nicoll
* @author Artsiom Yudovin
*/
public abstract class PushRegistryPropertiesConfigAdapterTests<P extends PushRegistryProperties, A extends PushRegistryPropertiesConfigAdapter<P>> {
protected abstract P createProperties();
protected abstract A createConfigAdapter(P properties);
@Test
void whenPropertiesStepIsSetAdapterStepReturnsIt() {
P properties = createProperties();
properties.setStep(Duration.ofSeconds(42));
assertThat(createConfigAdapter(properties).step()).isEqualTo(Duration.ofSeconds(42));
}
@Test
void whenPropertiesEnabledIsSetAdapterEnabledReturnsIt() {
P properties = createProperties();
properties.setEnabled(false);
assertThat(createConfigAdapter(properties).enabled()).isFalse();
}
@Test
void whenPropertiesNumThreadsIsSetAdapterNumThreadsReturnsIt() {
P properties = createProperties();
properties.setNumThreads(42);
assertThat(createConfigAdapter(properties).numThreads()).isEqualTo(42);
}
@Test
void whenPropertiesBatchSizeIsSetAdapterBatchSizeReturnsIt() {
P properties = createProperties();
properties.setBatchSize(10042);
assertThat(createConfigAdapter(properties).batchSize()).isEqualTo(10042);
}
}

View File

@@ -0,0 +1,40 @@
/*
* Copyright 2012-2019 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.properties;
import io.micrometer.core.instrument.push.PushRegistryConfig;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Base tests for {@link PushRegistryProperties} implementation.
*
* @author Stephane Nicoll
*/
public abstract class PushRegistryPropertiesTests {
@SuppressWarnings("deprecation")
protected void assertStepRegistryDefaultValues(PushRegistryProperties properties, PushRegistryConfig config) {
assertThat(properties.getStep()).isEqualTo(config.step());
assertThat(properties.isEnabled()).isEqualTo(config.enabled());
assertThat(properties.getConnectTimeout()).isEqualTo(config.connectTimeout());
assertThat(properties.getReadTimeout()).isEqualTo(config.readTimeout());
assertThat(properties.getNumThreads()).isEqualTo(config.numThreads());
assertThat(properties.getBatchSize()).isEqualTo(config.batchSize());
}
}

View File

@@ -16,12 +16,6 @@
package org.springframework.boot.actuate.autoconfigure.metrics.export.properties;
import java.time.Duration;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Base test for {@link StepRegistryPropertiesConfigAdapter} implementations.
*
@@ -30,38 +24,7 @@ import static org.assertj.core.api.Assertions.assertThat;
* @author Stephane Nicoll
* @author Artsiom Yudovin
*/
public abstract class StepRegistryPropertiesConfigAdapterTests<P extends StepRegistryProperties, A extends StepRegistryPropertiesConfigAdapter<P>> {
protected abstract P createProperties();
protected abstract A createConfigAdapter(P properties);
@Test
void whenPropertiesStepIsSetAdapterStepReturnsIt() {
P properties = createProperties();
properties.setStep(Duration.ofSeconds(42));
assertThat(createConfigAdapter(properties).step()).isEqualTo(Duration.ofSeconds(42));
}
@Test
void whenPropertiesEnabledIsSetAdapterEnabledReturnsIt() {
P properties = createProperties();
properties.setEnabled(false);
assertThat(createConfigAdapter(properties).enabled()).isFalse();
}
@Test
void whenPropertiesNumThreadsIsSetAdapterNumThreadsReturnsIt() {
P properties = createProperties();
properties.setNumThreads(42);
assertThat(createConfigAdapter(properties).numThreads()).isEqualTo(42);
}
@Test
void whenPropertiesBatchSizeIsSetAdapterBatchSizeReturnsIt() {
P properties = createProperties();
properties.setBatchSize(10042);
assertThat(createConfigAdapter(properties).batchSize()).isEqualTo(10042);
}
public abstract class StepRegistryPropertiesConfigAdapterTests<P extends StepRegistryProperties, A extends StepRegistryPropertiesConfigAdapter<P>>
extends PushRegistryPropertiesConfigAdapterTests<P, A> {
}

View File

@@ -18,23 +18,15 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.properties
import io.micrometer.core.instrument.step.StepRegistryConfig;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Base tests for {@link StepRegistryProperties} implementation.
*
* @author Stephane Nicoll
*/
public abstract class StepRegistryPropertiesTests {
public abstract class StepRegistryPropertiesTests extends PushRegistryPropertiesTests {
@SuppressWarnings("deprecation")
protected void assertStepRegistryDefaultValues(StepRegistryProperties properties, StepRegistryConfig config) {
assertThat(properties.getStep()).isEqualTo(config.step());
assertThat(properties.isEnabled()).isEqualTo(config.enabled());
assertThat(properties.getConnectTimeout()).isEqualTo(config.connectTimeout());
assertThat(properties.getReadTimeout()).isEqualTo(config.readTimeout());
assertThat(properties.getNumThreads()).isEqualTo(config.numThreads());
assertThat(properties.getBatchSize()).isEqualTo(config.batchSize());
super.assertStepRegistryDefaultValues(properties, config);
}
}

View File

@@ -20,7 +20,7 @@ import java.net.URI;
import org.junit.jupiter.api.Test;
import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryPropertiesConfigAdapterTests;
import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.PushRegistryPropertiesConfigAdapterTests;
import static org.assertj.core.api.Assertions.assertThat;
@@ -30,7 +30,7 @@ import static org.assertj.core.api.Assertions.assertThat;
* @author Stephane Nicoll
*/
class WavefrontPropertiesConfigAdapterTests
extends StepRegistryPropertiesConfigAdapterTests<WavefrontProperties, WavefrontPropertiesConfigAdapter> {
extends PushRegistryPropertiesConfigAdapterTests<WavefrontProperties, WavefrontPropertiesConfigAdapter> {
@Override
protected WavefrontProperties createProperties() {

View File

@@ -19,7 +19,7 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.wavefront;
import io.micrometer.wavefront.WavefrontConfig;
import org.junit.jupiter.api.Test;
import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryPropertiesTests;
import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.PushRegistryPropertiesTests;
import static org.assertj.core.api.Assertions.assertThat;
@@ -28,7 +28,7 @@ import static org.assertj.core.api.Assertions.assertThat;
*
* @author Stephane Nicoll
*/
class WavefrontPropertiesTests extends StepRegistryPropertiesTests {
class WavefrontPropertiesTests extends PushRegistryPropertiesTests {
@Test
void defaultValuesAreConsistent() {