@ -18,9 +18,9 @@ package org.springframework.cloud.client;
@@ -18,9 +18,9 @@ package org.springframework.cloud.client;
import org.junit.Test ;
import org.springframework.beans.BeansException ;
import org.springframework.boot.actuate.autoconfigure.health.HealthEndpointAutoConfiguration ;
import org.springframework.boot.autoconfigure.AutoConfigurations ;
import org.springframework.boot.test.context.FilteredClassLoader ;
import org.springframework.boot.test.context.TestConfiguration ;
import org.springframework.boot.test.context.runner.ApplicationContextRunner ;
import org.springframework.cloud.client.actuator.FeaturesEndpoint ;
@ -29,12 +29,9 @@ import org.springframework.cloud.client.discovery.health.DiscoveryClientHealthIn
@@ -29,12 +29,9 @@ import org.springframework.cloud.client.discovery.health.DiscoveryClientHealthIn
import org.springframework.cloud.client.discovery.health.DiscoveryCompositeHealthIndicator ;
import org.springframework.cloud.client.discovery.simple.SimpleDiscoveryClientAutoConfiguration ;
import org.springframework.cloud.commons.util.UtilAutoConfiguration ;
import org.springframework.context.ConfigurableApplicationContext ;
import org.springframework.context.annotation.Bean ;
import org.springframework.context.annotation.Configuration ;
import static org.assertj.core.api.Assertions.assertThat ;
import static org.assertj.core.api.Assertions.fail ;
import static org.assertj.core.api.BDDAssertions.then ;
/ * *
@ -45,31 +42,35 @@ import static org.assertj.core.api.BDDAssertions.then;
@@ -45,31 +42,35 @@ import static org.assertj.core.api.BDDAssertions.then;
public class CommonsClientAutoConfigurationTests {
ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner ( )
. withConfiguration (
AutoConfigurations . of ( HealthEndpointAutoConfiguration . class ,
CommonsClientAutoConfiguration . class ,
SimpleDiscoveryClientAutoConfiguration . class ,
UtilAutoConfiguration . class ) ) ;
. withConfiguration ( AutoConfigurations . of ( CommonsClientAutoConfiguration . class ,
SimpleDiscoveryClientAutoConfiguration . class ,
UtilAutoConfiguration . class ) ) ;
@Test
public void beansCreatedNormally ( ) {
applicationContextRunner . run ( ctxt - > {
then ( ctxt . getBean ( DiscoveryClientHealthIndicator . class ) ) . isNotNull ( ) ;
then ( ctxt . getBean ( DiscoveryCompositeHealthIndicator . class ) ) . isNotNull ( ) ;
then ( ctxt . getBean ( FeaturesEndpoint . class ) ) . isNotNull ( ) ;
then ( ctxt . getBeansOfType ( HasFeatures . class ) . values ( ) ) . isNotEmpty ( ) ;
} ) ;
applicationContextRunner
. withConfiguration (
AutoConfigurations . of ( HealthEndpointAutoConfiguration . class ) )
. run ( ctxt - > {
then ( ctxt . getBean ( DiscoveryClientHealthIndicator . class ) ) . isNotNull ( ) ;
then ( ctxt . getBean ( DiscoveryCompositeHealthIndicator . class ) )
. isNotNull ( ) ;
then ( ctxt . getBean ( FeaturesEndpoint . class ) ) . isNotNull ( ) ;
then ( ctxt . getBeansOfType ( HasFeatures . class ) . values ( ) ) . isNotEmpty ( ) ;
} ) ;
}
@Test
public void disableAll ( ) {
applicationContextRunner
. withPropertyValues ( "spring.cloud.discovery.enabled=false" ) . run ( ctxt - > {
assertBeanNonExistant ( ctxt , DiscoveryClientHealthIndicator . class ) ;
assertBeanNonExistant ( ctxt , DiscoveryCompositeHealthIndicator . class ) ;
assertThat ( ctxt )
. doesNotHaveBean ( DiscoveryClientHealthIndicator . class ) ;
assertThat ( ctxt )
. doesNotHaveBean ( DiscoveryCompositeHealthIndicator . class ) ;
then ( ctxt . getBean ( FeaturesEndpoint . class ) ) . isNotNull ( ) ;
// features actuator is independent of discovery
assertBeanNonExistant ( ctxt , HasFeatures . class ) ;
assertThat ( ctxt ) . doesNotHaveBean ( HasFeatures . class ) ;
} ) ;
}
@ -78,11 +79,13 @@ public class CommonsClientAutoConfigurationTests {
@@ -78,11 +79,13 @@ public class CommonsClientAutoConfigurationTests {
applicationContextRunner
. withPropertyValues ( "spring.cloud.discovery.blocking.enabled=false" )
. run ( ctxt - > {
assertBeanNonExistant ( ctxt , DiscoveryClientHealthIndicator . class ) ;
assertBeanNonExistant ( ctxt , DiscoveryCompositeHealthIndicator . class ) ;
assertThat ( ctxt )
. doesNotHaveBean ( DiscoveryClientHealthIndicator . class ) ;
assertThat ( ctxt )
. doesNotHaveBean ( DiscoveryCompositeHealthIndicator . class ) ;
then ( ctxt . getBean ( FeaturesEndpoint . class ) ) . isNotNull ( ) ;
// features actuator is independent of discovery
assertBeanNonExistant ( ctxt , HasFeatures . class ) ;
assertThat ( ctxt ) . doesNotHaveBean ( HasFeatures . class ) ;
} ) ;
}
@ -92,9 +95,11 @@ public class CommonsClientAutoConfigurationTests {
@@ -92,9 +95,11 @@ public class CommonsClientAutoConfigurationTests {
"spring.cloud.discovery.client.health-indicator.enabled=false" ,
"spring.cloud.discovery.client.composite-indicator.enabled=false" ,
"spring.cloud.features.enabled=false" ) . run ( ctxt - > {
assertBeanNonExistant ( ctxt , DiscoveryClientHealthIndicator . class ) ;
assertBeanNonExistant ( ctxt , DiscoveryCompositeHealthIndicator . class ) ;
assertBeanNonExistant ( ctxt , FeaturesEndpoint . class ) ;
assertThat ( ctxt )
. doesNotHaveBean ( DiscoveryClientHealthIndicator . class ) ;
assertThat ( ctxt )
. doesNotHaveBean ( DiscoveryCompositeHealthIndicator . class ) ;
assertThat ( ctxt ) . doesNotHaveBean ( FeaturesEndpoint . class ) ;
} ) ;
}
@ -104,8 +109,24 @@ public class CommonsClientAutoConfigurationTests {
@@ -104,8 +109,24 @@ public class CommonsClientAutoConfigurationTests {
. withPropertyValues (
"spring.cloud.discovery.client.health-indicator.enabled=false" )
. run ( ctxt - > {
assertBeanNonExistant ( ctxt , DiscoveryClientHealthIndicator . class ) ;
assertBeanNonExistant ( ctxt , DiscoveryCompositeHealthIndicator . class ) ;
assertThat ( ctxt )
. doesNotHaveBean ( DiscoveryClientHealthIndicator . class ) ;
assertThat ( ctxt )
. doesNotHaveBean ( DiscoveryCompositeHealthIndicator . class ) ;
} ) ;
}
@Test
public void worksWithoutActuator ( ) {
applicationContextRunner
. withClassLoader (
new FilteredClassLoader ( "org.springframework.boot.actuate" ) )
. run ( context - > {
assertThat ( context )
. doesNotHaveBean ( DiscoveryClientHealthIndicator . class ) ;
assertThat ( context )
. doesNotHaveBean ( DiscoveryCompositeHealthIndicator . class ) ;
then ( context . getBeansOfType ( HasFeatures . class ) . values ( ) ) . isNotEmpty ( ) ;
} ) ;
}
@ -113,7 +134,7 @@ public class CommonsClientAutoConfigurationTests {
@@ -113,7 +134,7 @@ public class CommonsClientAutoConfigurationTests {
public void conditionalOnDiscoveryEnabledWorks ( ) {
applicationContextRunner . withUserConfiguration ( DiscoveryEnabledConfig . class )
. withPropertyValues ( "spring.cloud.discovery.enabled=false" )
. run ( context - > assertBeanNonExistant ( context , TestBean . class ) ) ;
. run ( context - > assertThat ( context ) . doesNotHaveBean ( TestBean . class ) ) ;
applicationContextRunner . withUserConfiguration ( DiscoveryEnabledConfig . class )
. withPropertyValues ( "spring.cloud.discovery.enabled=true" )
. run ( context - > assertThat ( context . getBean ( TestBean . class ) ) . isNotNull ( ) ) ;
@ -124,25 +145,14 @@ public class CommonsClientAutoConfigurationTests {
@@ -124,25 +145,14 @@ public class CommonsClientAutoConfigurationTests {
applicationContextRunner
. withUserConfiguration ( BlockingDiscoveryEnabledConfig . class )
. withPropertyValues ( "spring.cloud.discovery.blocking.enabled=false" )
. run ( context - > assertBeanNonExistant ( context , TestBean . class ) ) ;
. run ( context - > assertThat ( context ) . doesNotHaveBean ( TestBean . class ) ) ;
applicationContextRunner
. withUserConfiguration ( BlockingDiscoveryEnabledConfig . class )
. withPropertyValues ( "spring.cloud.discovery.blocking.enabled=true" )
. run ( context - > assertThat ( context . getBean ( TestBean . class ) ) . isNotNull ( ) ) ;
}
private void assertBeanNonExistant ( ConfigurableApplicationContext ctxt ,
Class < ? > beanClass ) {
try {
ctxt . getBean ( beanClass ) ;
fail ( "Bean of type " + beanClass + " should not have been created" ) ;
}
catch ( BeansException e ) {
// should fail with exception
}
}
@Configuration
@TestConfiguration
@ConditionalOnDiscoveryEnabled
protected static class DiscoveryEnabledConfig {