Add ability to disable parts of commons auto config.
fixes gh-95
This commit is contained in:
@@ -51,12 +51,14 @@ import org.springframework.context.annotation.Configuration;
|
||||
public class CommonsClientAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnProperty(value = "spring.cloud.discovery.client.health-indicator.enabled", matchIfMissing = true)
|
||||
public DiscoveryClientHealthIndicator discoveryClientHealthIndicator(
|
||||
DiscoveryClient discoveryClient) {
|
||||
return new DiscoveryClientHealthIndicator(discoveryClient);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnProperty(value = "spring.cloud.discovery.client.composite-indicator.enabled", matchIfMissing = true)
|
||||
public DiscoveryCompositeHealthIndicator discoveryCompositeHealthIndicator(
|
||||
HealthAggregator aggregator, List<DiscoveryHealthIndicator> indicators) {
|
||||
return new DiscoveryCompositeHealthIndicator(aggregator, indicators);
|
||||
@@ -70,6 +72,7 @@ public class CommonsClientAutoConfiguration {
|
||||
|
||||
@Configuration
|
||||
@ConditionalOnClass(Endpoint.class)
|
||||
@ConditionalOnProperty(value = "spring.cloud.features.enabled", matchIfMissing = true)
|
||||
protected static class ActuatorConfiguration {
|
||||
@Autowired(required = false)
|
||||
private List<HasFeatures> hasFeatures = new ArrayList<>();
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
package org.springframework.cloud.client;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||
import org.springframework.cloud.client.actuator.FeaturesEndpoint;
|
||||
import org.springframework.cloud.client.actuator.HasFeatures;
|
||||
import org.springframework.cloud.client.discovery.health.DiscoveryClientHealthIndicator;
|
||||
import org.springframework.cloud.client.discovery.health.DiscoveryCompositeHealthIndicator;
|
||||
import org.springframework.cloud.client.discovery.noop.NoopDiscoveryClientAutoConfiguration;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
||||
import static org.hamcrest.Matchers.emptyCollectionOf;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
import static org.hamcrest.Matchers.not;
|
||||
import static org.hamcrest.Matchers.notNullValue;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
/**
|
||||
* @author Spencer Gibb
|
||||
*/
|
||||
public class CommonsClientAutoConfigurationTests {
|
||||
|
||||
@Test
|
||||
public void beansCreatedNormally() {
|
||||
try (ConfigurableApplicationContext ctxt = init()) {
|
||||
assertThat(ctxt.getBean(DiscoveryClientHealthIndicator.class),
|
||||
is(notNullValue()));
|
||||
assertThat(ctxt.getBean(DiscoveryCompositeHealthIndicator.class),
|
||||
is(notNullValue()));
|
||||
assertThat(ctxt.getBean(FeaturesEndpoint.class), is(notNullValue()));
|
||||
assertThat(ctxt.getBeansOfType(HasFeatures.class).values(),
|
||||
not(emptyCollectionOf(HasFeatures.class)));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void disableAll() {
|
||||
try (ConfigurableApplicationContext ctxt = init("spring.cloud.discovery.enabled=false")) {
|
||||
assertBeanNonExistant(ctxt, DiscoveryClientHealthIndicator.class);
|
||||
assertBeanNonExistant(ctxt, DiscoveryCompositeHealthIndicator.class);
|
||||
assertBeanNonExistant(ctxt, FeaturesEndpoint.class);
|
||||
assertBeanNonExistant(ctxt, HasFeatures.class);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void disableAllIndividually() {
|
||||
try (ConfigurableApplicationContext ctxt = init(
|
||||
"spring.cloud.discovery.client.health-indicator.enabled=false",
|
||||
"spring.cloud.discovery.client.composite-indicator.enabled=false",
|
||||
"spring.cloud.features.enabled=false")) {
|
||||
assertBeanNonExistant(ctxt, DiscoveryClientHealthIndicator.class);
|
||||
assertBeanNonExistant(ctxt, DiscoveryCompositeHealthIndicator.class);
|
||||
assertBeanNonExistant(ctxt, FeaturesEndpoint.class);
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
protected ConfigurableApplicationContext init(String... pairs) {
|
||||
return new SpringApplicationBuilder().web(false).sources(Config.class)
|
||||
.properties(pairs).run();
|
||||
}
|
||||
|
||||
@Configuration
|
||||
@EnableAutoConfiguration
|
||||
@Import(NoopDiscoveryClientAutoConfiguration.class)
|
||||
protected static class Config {
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user