From e0541d0f74ccefbfb640788ac8acf682c7b492bc Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Tue, 27 Dec 2016 14:48:44 -0800 Subject: [PATCH] Polish --- .../HealthIndicatorAutoConfiguration.java | 5 +- ...HealthIndicatorAutoConfigurationTests.java | 10 +-- .../HttpClientConfigBuilderCustomizer.java | 5 +- .../jest/JestAutoConfigurationTests.java | 9 +- .../jest/JestClientCustomizationExample.java | 4 +- .../boot/test/context/PortTest.java | 87 +++++++++++++++++++ 6 files changed, 106 insertions(+), 14 deletions(-) create mode 100644 spring-boot-test/src/test/java/org/springframework/boot/test/context/PortTest.java diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/HealthIndicatorAutoConfiguration.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/HealthIndicatorAutoConfiguration.java index d74d97e7dac..43013567545 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/HealthIndicatorAutoConfiguration.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/HealthIndicatorAutoConfiguration.java @@ -192,8 +192,11 @@ public class HealthIndicatorAutoConfiguration { this.metadataProviders = metadataProvidersProvider.getIfAvailable(); } - private static Map filterDataSources( + private Map filterDataSources( Map candidates) { + if (candidates == null) { + return null; + } Map dataSources = new LinkedHashMap(); for (Map.Entry entry : candidates.entrySet()) { if (!(entry.getValue() instanceof AbstractRoutingDataSource)) { diff --git a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/HealthIndicatorAutoConfigurationTests.java b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/HealthIndicatorAutoConfigurationTests.java index 953827f4e46..be0ab02b73d 100644 --- a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/HealthIndicatorAutoConfigurationTests.java +++ b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/HealthIndicatorAutoConfigurationTests.java @@ -24,7 +24,6 @@ import io.searchbox.client.JestClient; import org.junit.After; import org.junit.Test; -import org.springframework.beans.DirectFieldAccessor; import org.springframework.boot.actuate.health.ApplicationHealthIndicator; import org.springframework.boot.actuate.health.CassandraHealthIndicator; import org.springframework.boot.actuate.health.CompositeHealthIndicator; @@ -242,9 +241,8 @@ public class HealthIndicatorAutoConfigurationTests { assertThat(beans).hasSize(1); HealthIndicator bean = beans.values().iterator().next(); assertThat(bean).isExactlyInstanceOf(CompositeHealthIndicator.class); - Map indicators = (Map) - new DirectFieldAccessor(bean).getPropertyValue("indicators"); - assertThat(indicators).hasSize(2); + assertThat(bean.health().getDetails()).containsOnlyKeys("dataSource", + "testDataSource"); } @Test @@ -258,8 +256,8 @@ public class HealthIndicatorAutoConfigurationTests { Map beans = this.context .getBeansOfType(HealthIndicator.class); assertThat(beans).hasSize(1); - assertThat(beans.values().iterator().next().getClass()) - .isEqualTo(DataSourceHealthIndicator.class); + assertThat(beans.values().iterator().next()) + .isExactlyInstanceOf(DataSourceHealthIndicator.class); } @Test diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/elasticsearch/jest/HttpClientConfigBuilderCustomizer.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/elasticsearch/jest/HttpClientConfigBuilderCustomizer.java index 80fed64ce6b..43d71e29669 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/elasticsearch/jest/HttpClientConfigBuilderCustomizer.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/elasticsearch/jest/HttpClientConfigBuilderCustomizer.java @@ -20,7 +20,8 @@ import io.searchbox.client.config.HttpClientConfig; /** * Callback interface that can be implemented by beans wishing to further customize the - * {@link HttpClientConfig} via {@link HttpClientConfig.Builder} retaining its default + * {@link io.searchbox.client.config.HttpClientConfig} via + * {@link io.searchbox.client.config.HttpClientConfig.Builder} retaining its default * auto-configuration. * * @author Stephane Nicoll @@ -29,7 +30,7 @@ import io.searchbox.client.config.HttpClientConfig; public interface HttpClientConfigBuilderCustomizer { /** - * Customize the {@link HttpClientConfig.Builder}. + * Customize the {@link io.searchbox.client.config.HttpClientConfig.Builder}. * @param builder the builder to customize */ void customize(HttpClientConfig.Builder builder); diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/jest/JestAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/jest/JestAutoConfigurationTests.java index 0beab88fab6..e12924b361a 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/jest/JestAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/jest/JestAutoConfigurationTests.java @@ -88,10 +88,11 @@ public class JestAutoConfigurationTests { @Test public void customizerOverridesAutoConfig() { - load(BuilderCustomizer.class, "spring.elasticsearch.jest.uris=http://localhost:9200"); + load(BuilderCustomizer.class, + "spring.elasticsearch.jest.uris=http://localhost:9200"); JestHttpClient client = (JestHttpClient) this.context.getBean(JestClient.class); - assertThat(client.getGson()).isSameAs( - this.context.getBean(BuilderCustomizer.class).getGson()); + assertThat(client.getGson()) + .isSameAs(this.context.getBean(BuilderCustomizer.class).getGson()); } @Test @@ -166,10 +167,12 @@ public class JestAutoConfigurationTests { @Bean public HttpClientConfigBuilderCustomizer customizer() { return new HttpClientConfigBuilderCustomizer() { + @Override public void customize(HttpClientConfig.Builder builder) { builder.gson(BuilderCustomizer.this.gson); } + }; } diff --git a/spring-boot-docs/src/main/java/org/springframework/boot/elasticsearch/jest/JestClientCustomizationExample.java b/spring-boot-docs/src/main/java/org/springframework/boot/elasticsearch/jest/JestClientCustomizationExample.java index 3ff765b27b9..1a4c40cc98f 100644 --- a/spring-boot-docs/src/main/java/org/springframework/boot/elasticsearch/jest/JestClientCustomizationExample.java +++ b/spring-boot-docs/src/main/java/org/springframework/boot/elasticsearch/jest/JestClientCustomizationExample.java @@ -37,9 +37,9 @@ public class JestClientCustomizationExample { @Override public void customize(HttpClientConfig.Builder builder) { - builder.maxTotalConnection(100) - .defaultMaxTotalConnectionPerRoute(5); + builder.maxTotalConnection(100).defaultMaxTotalConnectionPerRoute(5); } + } // end::customizer[] } diff --git a/spring-boot-test/src/test/java/org/springframework/boot/test/context/PortTest.java b/spring-boot-test/src/test/java/org/springframework/boot/test/context/PortTest.java new file mode 100644 index 00000000000..f7686b2905d --- /dev/null +++ b/spring-boot-test/src/test/java/org/springframework/boot/test/context/PortTest.java @@ -0,0 +1,87 @@ +/* + * Copyright 2012-2016 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.test.context; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.test.context.PortTest.RandomPortInitailizer; +import org.springframework.context.ApplicationContextInitializer; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.support.TestPropertySourceUtils; +import org.springframework.util.SocketUtils; + +import static org.assertj.core.api.Assertions.assertThat; + +@RunWith(SpringRunner.class) +@SpringBootTest +@ContextConfiguration(initializers = RandomPortInitailizer.class) +public class PortTest { + + @Autowired + private SomeService service; + + @Test + public void testName() throws Exception { + System.out.println(this.service); + assertThat(this.service.toString()).containsOnlyDigits(); + } + + @Configuration + static class MyConfig { + + @Bean + public SomeService someService(@Value("${my.random.port}") int port) { + return new SomeService(port); + } + + } + + static class SomeService { + + private final int port; + + public SomeService(int port) { + this.port = port; + } + + @Override + public String toString() { + return String.valueOf(this.port); + } + + } + + public static class RandomPortInitailizer + implements ApplicationContextInitializer { + + @Override + public void initialize(ConfigurableApplicationContext applicationContext) { + int randomPort = SocketUtils.findAvailableTcpPort(); + TestPropertySourceUtils.addInlinedPropertiesToEnvironment(applicationContext, + "my.random.port=" + randomPort); + } + + } + +}