Fix 1207 issue fabric8 (#1209)
This commit is contained in:
@@ -41,6 +41,7 @@ import org.springframework.cloud.kubernetes.commons.PodUtils;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.ConditionalOnKubernetesDiscoveryEnabled;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryClientHealthIndicatorInitializer;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryPropertiesAutoConfiguration;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@@ -25,10 +25,10 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
|
||||
import org.springframework.boot.cloud.CloudPlatform;
|
||||
import org.springframework.cloud.client.ConditionalOnDiscoveryEnabled;
|
||||
import org.springframework.cloud.kubernetes.client.KubernetesClientAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.client.discovery.KubernetesDiscoveryPropertiesAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.ConditionalOnKubernetesCatalogEnabled;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryPropertiesAutoConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
@@ -40,11 +40,11 @@ import org.springframework.cloud.client.discovery.health.reactive.ReactiveDiscov
|
||||
import org.springframework.cloud.client.discovery.simple.reactive.SimpleReactiveDiscoveryClientAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.client.KubernetesClientPodUtils;
|
||||
import org.springframework.cloud.kubernetes.client.discovery.CatalogSharedInformerFactory;
|
||||
import org.springframework.cloud.kubernetes.client.discovery.KubernetesDiscoveryPropertiesAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.client.discovery.SpringCloudKubernetesInformerFactoryProcessor;
|
||||
import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.ConditionalOnKubernetesDiscoveryEnabled;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryPropertiesAutoConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
org.springframework.cloud.kubernetes.client.discovery.catalog.KubernetesCatalogWatchAutoConfiguration
|
||||
org.springframework.cloud.kubernetes.client.discovery.KubernetesInformerDiscoveryClientAutoConfiguration
|
||||
org.springframework.cloud.kubernetes.client.discovery.KubernetesDiscoveryPropertiesAutoConfiguration
|
||||
org.springframework.cloud.kubernetes.client.discovery.reactive.KubernetesInformerReactiveDiscoveryClientAutoConfiguration
|
||||
|
||||
@@ -30,6 +30,7 @@ import org.springframework.boot.test.context.FilteredClassLoader;
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
import org.springframework.cloud.kubernetes.client.KubernetesClientAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryClientHealthIndicatorInitializer;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryPropertiesAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.integration.tests.commons.Commons;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@@ -21,9 +21,9 @@ import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
import org.springframework.cloud.kubernetes.client.KubernetesClientAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.client.discovery.KubernetesDiscoveryPropertiesAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.client.discovery.KubernetesInformerDiscoveryClient;
|
||||
import org.springframework.cloud.kubernetes.client.discovery.reactive.KubernetesInformerReactiveDiscoveryClient;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryPropertiesAutoConfiguration;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@@ -87,8 +87,8 @@ class KubernetesCatalogWatchAutoConfigurationApplicationContextTests {
|
||||
}
|
||||
|
||||
/**
|
||||
* both blocking and reactive configs are disabled, should not influence catalog
|
||||
* watcher in any way.
|
||||
* spring.cloud.kubernetes.discovery.enabled is false, but does not influence catalog
|
||||
* watcher.
|
||||
*/
|
||||
@Test
|
||||
void disableKubernetesDiscovery() {
|
||||
|
||||
@@ -26,8 +26,8 @@ import org.springframework.cloud.client.discovery.simple.reactive.SimpleReactive
|
||||
import org.springframework.cloud.commons.util.UtilAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.client.KubernetesClientAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.client.discovery.CatalogSharedInformerFactory;
|
||||
import org.springframework.cloud.kubernetes.client.discovery.KubernetesDiscoveryPropertiesAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.client.discovery.SpringCloudKubernetesInformerFactoryProcessor;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryPropertiesAutoConfiguration;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
|
||||
@@ -14,10 +14,9 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.cloud.kubernetes.client.discovery;
|
||||
package org.springframework.cloud.kubernetes.commons.discovery;
|
||||
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties;
|
||||
|
||||
/**
|
||||
* @author wind57
|
||||
@@ -1,3 +1,4 @@
|
||||
org.springframework.cloud.kubernetes.commons.KubernetesCommonsAutoConfiguration
|
||||
org.springframework.cloud.kubernetes.commons.config.reload.ConfigReloadAutoConfiguration
|
||||
org.springframework.cloud.kubernetes.commons.config.reload.ConfigReloadPropertiesAutoConfiguration
|
||||
org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryPropertiesAutoConfiguration
|
||||
|
||||
@@ -110,6 +110,11 @@
|
||||
<artifactId>reactor-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.platform</groupId>
|
||||
<artifactId>junit-platform-launcher</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
||||
@@ -26,6 +26,7 @@ import org.springframework.cloud.client.ConditionalOnDiscoveryEnabled;
|
||||
import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.ConditionalOnKubernetesCatalogEnabled;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryPropertiesAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.fabric8.Fabric8AutoConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@@ -40,7 +41,7 @@ import org.springframework.core.env.Environment;
|
||||
@ConditionalOnDiscoveryEnabled
|
||||
@ConditionalOnKubernetesCatalogEnabled
|
||||
@ConditionalOnCloudPlatform(CloudPlatform.KUBERNETES)
|
||||
@AutoConfigureAfter({ Fabric8AutoConfiguration.class })
|
||||
@AutoConfigureAfter({ Fabric8AutoConfiguration.class, KubernetesDiscoveryPropertiesAutoConfiguration.class })
|
||||
public class KubernetesCatalogWatchAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright 2013-2023 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.cloud.kubernetes.fabric8.discovery;
|
||||
|
||||
import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties;
|
||||
import org.springframework.cloud.kubernetes.fabric8.Fabric8Utils;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
/**
|
||||
* @author wind57
|
||||
*/
|
||||
public final class KubernetesClientServicesFunctionProvider {
|
||||
|
||||
private KubernetesClientServicesFunctionProvider() {
|
||||
}
|
||||
|
||||
public static KubernetesClientServicesFunction servicesFunction(KubernetesDiscoveryProperties properties,
|
||||
Environment environment) {
|
||||
|
||||
if (properties.allNamespaces()) {
|
||||
return (client) -> client.services().inAnyNamespace().withLabels(properties.serviceLabels());
|
||||
}
|
||||
|
||||
return client -> {
|
||||
String namespace = Fabric8Utils.getApplicationNamespace(client, null, "discovery-service",
|
||||
new KubernetesNamespaceProvider(environment));
|
||||
return client.services().inNamespace(namespace).withLabels(properties.serviceLabels());
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -25,19 +25,17 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnCloudPlatform;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.cloud.CloudPlatform;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.cloud.client.CommonsClientAutoConfiguration;
|
||||
import org.springframework.cloud.client.ConditionalOnBlockingDiscoveryEnabled;
|
||||
import org.springframework.cloud.client.ConditionalOnDiscoveryEnabled;
|
||||
import org.springframework.cloud.client.ConditionalOnDiscoveryHealthIndicatorEnabled;
|
||||
import org.springframework.cloud.client.discovery.simple.SimpleDiscoveryClientAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider;
|
||||
import org.springframework.cloud.kubernetes.commons.PodUtils;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.ConditionalOnKubernetesDiscoveryEnabled;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryClientHealthIndicatorInitializer;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryPropertiesAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.fabric8.Fabric8AutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.fabric8.Fabric8Utils;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@@ -51,55 +49,35 @@ import org.springframework.core.env.Environment;
|
||||
*/
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ConditionalOnDiscoveryEnabled
|
||||
@ConditionalOnKubernetesDiscoveryEnabled
|
||||
@ConditionalOnBlockingDiscoveryEnabled
|
||||
@ConditionalOnCloudPlatform(CloudPlatform.KUBERNETES)
|
||||
@AutoConfigureBefore({ SimpleDiscoveryClientAutoConfiguration.class, CommonsClientAutoConfiguration.class })
|
||||
@AutoConfigureAfter({ Fabric8AutoConfiguration.class })
|
||||
@EnableConfigurationProperties(KubernetesDiscoveryProperties.class)
|
||||
@AutoConfigureAfter({ Fabric8AutoConfiguration.class, KubernetesDiscoveryPropertiesAutoConfiguration.class })
|
||||
public class KubernetesDiscoveryClientAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public KubernetesClientServicesFunction servicesFunction(KubernetesDiscoveryProperties properties,
|
||||
Environment environment) {
|
||||
|
||||
if (properties.allNamespaces()) {
|
||||
return (client) -> client.services().inAnyNamespace().withLabels(properties.serviceLabels());
|
||||
}
|
||||
|
||||
return client -> {
|
||||
String namespace = Fabric8Utils.getApplicationNamespace(client, null, "discovery-service",
|
||||
new KubernetesNamespaceProvider(environment));
|
||||
return client.services().inNamespace(namespace).withLabels(properties.serviceLabels());
|
||||
};
|
||||
return KubernetesClientServicesFunctionProvider.servicesFunction(properties, environment);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public KubernetesDiscoveryClient kubernetesDiscoveryClient(KubernetesClient client,
|
||||
KubernetesDiscoveryProperties properties,
|
||||
KubernetesClientServicesFunction kubernetesClientServicesFunction) {
|
||||
return new KubernetesDiscoveryClient(client, properties, kubernetesClientServicesFunction, null,
|
||||
new ServicePortSecureResolver(properties));
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnClass({ HealthIndicator.class })
|
||||
@ConditionalOnDiscoveryEnabled
|
||||
@ConditionalOnDiscoveryHealthIndicatorEnabled
|
||||
@Configuration
|
||||
public static class KubernetesDiscoveryClientHealthIndicatorConfiguration {
|
||||
|
||||
@Bean
|
||||
public KubernetesDiscoveryClientHealthIndicatorInitializer indicatorInitializer(
|
||||
ApplicationEventPublisher applicationEventPublisher, PodUtils<?> podUtils) {
|
||||
return new KubernetesDiscoveryClientHealthIndicatorInitializer(podUtils, applicationEventPublisher);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ConditionalOnBlockingDiscoveryEnabled
|
||||
@ConditionalOnKubernetesDiscoveryEnabled
|
||||
public static class KubernetesDiscoveryClientConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public KubernetesDiscoveryClient kubernetesDiscoveryClient(KubernetesClient client,
|
||||
KubernetesDiscoveryProperties properties,
|
||||
KubernetesClientServicesFunction kubernetesClientServicesFunction) {
|
||||
return new KubernetesDiscoveryClient(client, properties, kubernetesClientServicesFunction, null,
|
||||
new ServicePortSecureResolver(properties));
|
||||
}
|
||||
|
||||
public KubernetesDiscoveryClientHealthIndicatorInitializer indicatorInitializer(
|
||||
ApplicationEventPublisher applicationEventPublisher, PodUtils<?> podUtils) {
|
||||
return new KubernetesDiscoveryClientHealthIndicatorInitializer(podUtils, applicationEventPublisher);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -34,10 +34,13 @@ import org.springframework.cloud.client.discovery.health.reactive.ReactiveDiscov
|
||||
import org.springframework.cloud.client.discovery.simple.reactive.SimpleReactiveDiscoveryClientAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.ConditionalOnKubernetesDiscoveryEnabled;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryPropertiesAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.fabric8.discovery.KubernetesClientServicesFunction;
|
||||
import org.springframework.cloud.kubernetes.fabric8.discovery.KubernetesClientServicesFunctionProvider;
|
||||
import org.springframework.cloud.kubernetes.fabric8.discovery.KubernetesDiscoveryClientAutoConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
/**
|
||||
* Auto configuration for reactive discovery client.
|
||||
@@ -46,15 +49,22 @@ import org.springframework.context.annotation.Configuration;
|
||||
*/
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ConditionalOnDiscoveryEnabled
|
||||
@ConditionalOnKubernetesDiscoveryEnabled
|
||||
@ConditionalOnReactiveDiscoveryEnabled
|
||||
@ConditionalOnCloudPlatform(CloudPlatform.KUBERNETES)
|
||||
@ConditionalOnKubernetesDiscoveryEnabled
|
||||
@AutoConfigureBefore({ SimpleReactiveDiscoveryClientAutoConfiguration.class,
|
||||
ReactiveCommonsClientAutoConfiguration.class })
|
||||
@AutoConfigureAfter({ ReactiveCompositeDiscoveryClientAutoConfiguration.class,
|
||||
KubernetesDiscoveryClientAutoConfiguration.class })
|
||||
KubernetesDiscoveryClientAutoConfiguration.class, KubernetesDiscoveryPropertiesAutoConfiguration.class })
|
||||
public class KubernetesReactiveDiscoveryClientAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public KubernetesClientServicesFunction servicesFunction(KubernetesDiscoveryProperties properties,
|
||||
Environment environment) {
|
||||
return KubernetesClientServicesFunctionProvider.servicesFunction(properties, environment);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public KubernetesReactiveDiscoveryClient kubernetesReactiveDiscoveryClient(KubernetesClient client,
|
||||
|
||||
@@ -29,6 +29,7 @@ import org.springframework.boot.WebApplicationType;
|
||||
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
|
||||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||
import org.springframework.cloud.kubernetes.commons.PodUtils;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryPropertiesAutoConfiguration;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@@ -81,8 +82,8 @@ public class KubernetesCatalogServicesWatchConfigurationTest {
|
||||
envList.add("spring.cloud.config.enabled=false");
|
||||
this.context = new SpringApplicationBuilder(PropertyPlaceholderAutoConfiguration.class,
|
||||
KubernetesClientTestConfiguration.class, KubernetesCatalogWatchAutoConfiguration.class,
|
||||
KubernetesDiscoveryClientAutoConfiguration.class).web(WebApplicationType.NONE)
|
||||
.properties(envList.toArray(new String[0])).run();
|
||||
KubernetesDiscoveryClientAutoConfiguration.class, KubernetesDiscoveryPropertiesAutoConfiguration.class)
|
||||
.web(WebApplicationType.NONE).properties(envList.toArray(new String[0])).run();
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
/*
|
||||
* Copyright 2013-2023 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.cloud.kubernetes.fabric8.discovery;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
import org.springframework.cloud.kubernetes.commons.KubernetesCommonsAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryPropertiesAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.fabric8.Fabric8AutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.fabric8.discovery.reactive.KubernetesReactiveDiscoveryClient;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* @author wind57
|
||||
*/
|
||||
class KubernetesCatalogWatchAutoConfigurationApplicationContextTests {
|
||||
|
||||
private ApplicationContextRunner applicationContextRunner;
|
||||
|
||||
@Test
|
||||
void discoveryEnabledDefault() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false");
|
||||
applicationContextRunner.run(context -> assertThat(context).hasSingleBean(KubernetesCatalogWatch.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void discoveryEnabled() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.discovery.enabled=true");
|
||||
applicationContextRunner.run(context -> assertThat(context).hasSingleBean(KubernetesCatalogWatch.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void discoveryDisabled() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.discovery.enabled=false");
|
||||
applicationContextRunner.run(context -> assertThat(context).doesNotHaveBean(KubernetesCatalogWatch.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void kubernetesDiscoveryEnabled() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.kubernetes.discovery.enabled=true");
|
||||
applicationContextRunner.run(context -> assertThat(context).hasSingleBean(KubernetesCatalogWatch.class));
|
||||
}
|
||||
|
||||
// disabling discovery has no impact on the catalog watch.
|
||||
@Test
|
||||
void kubernetesDiscoveryDisabled() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.kubernetes.discovery.enabled=false");
|
||||
applicationContextRunner.run(context -> assertThat(context).hasSingleBean(KubernetesCatalogWatch.class));
|
||||
}
|
||||
|
||||
/**
|
||||
* both blocking and reactive configs are disabled, should not influence catalog
|
||||
* watcher in any way.
|
||||
*/
|
||||
@Test
|
||||
void disableBlockingAndReactive() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.discovery.blocking.enabled=false", "spring.cloud.discovery.reactive.enabled=false");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).hasSingleBean(KubernetesCatalogWatch.class);
|
||||
assertThat(context).doesNotHaveBean(KubernetesClientServicesFunction.class);
|
||||
assertThat(context).doesNotHaveBean(KubernetesDiscoveryClient.class);
|
||||
assertThat(context).doesNotHaveBean(KubernetesReactiveDiscoveryClient.class);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* spring.cloud.kubernetes.discovery.enabled is false, but does not influence catalog
|
||||
* watcher.
|
||||
*/
|
||||
@Test
|
||||
void disableKubernetesDiscovery() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.kubernetes.discovery.enabled=false");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).hasSingleBean(KubernetesCatalogWatch.class);
|
||||
assertThat(context).doesNotHaveBean(KubernetesClientServicesFunction.class);
|
||||
assertThat(context).doesNotHaveBean(KubernetesDiscoveryClient.class);
|
||||
assertThat(context).doesNotHaveBean(KubernetesReactiveDiscoveryClient.class);
|
||||
});
|
||||
}
|
||||
|
||||
private void setup(String... properties) {
|
||||
applicationContextRunner = new ApplicationContextRunner().withConfiguration(
|
||||
AutoConfigurations.of(KubernetesCatalogWatchAutoConfiguration.class, Fabric8AutoConfiguration.class,
|
||||
KubernetesCommonsAutoConfiguration.class, KubernetesDiscoveryPropertiesAutoConfiguration.class))
|
||||
.withPropertyValues(properties);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,179 @@
|
||||
/*
|
||||
* Copyright 2013-2023 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.cloud.kubernetes.fabric8.discovery;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.boot.actuate.health.HealthIndicator;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.test.context.FilteredClassLoader;
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
import org.springframework.cloud.kubernetes.commons.KubernetesCommonsAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryClientHealthIndicatorInitializer;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryPropertiesAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.fabric8.Fabric8AutoConfiguration;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Test various conditionals for {@link KubernetesDiscoveryClientAutoConfiguration}
|
||||
*
|
||||
* @author wind57
|
||||
*/
|
||||
class KubernetesDiscoveryClientAutoConfigurationApplicationContextTests {
|
||||
|
||||
private ApplicationContextRunner applicationContextRunner;
|
||||
|
||||
@Test
|
||||
void discoveryEnabledDefault() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).hasSingleBean(KubernetesClientServicesFunction.class);
|
||||
assertThat(context).hasSingleBean(KubernetesDiscoveryClient.class);
|
||||
assertThat(context).hasSingleBean(KubernetesDiscoveryClientHealthIndicatorInitializer.class);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void discoveryEnabled() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.discovery.enabled=true");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).hasSingleBean(KubernetesClientServicesFunction.class);
|
||||
assertThat(context).hasSingleBean(KubernetesDiscoveryClient.class);
|
||||
assertThat(context).hasSingleBean(KubernetesDiscoveryClientHealthIndicatorInitializer.class);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void discoveryDisabled() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.discovery.enabled=false");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).doesNotHaveBean(KubernetesClientServicesFunction.class);
|
||||
assertThat(context).doesNotHaveBean(KubernetesDiscoveryClient.class);
|
||||
assertThat(context).doesNotHaveBean(KubernetesDiscoveryClientHealthIndicatorInitializer.class);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void kubernetesDiscoveryEnabled() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.kubernetes.discovery.enabled=true");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).hasSingleBean(KubernetesClientServicesFunction.class);
|
||||
assertThat(context).hasSingleBean(KubernetesDiscoveryClient.class);
|
||||
assertThat(context).hasSingleBean(KubernetesDiscoveryClientHealthIndicatorInitializer.class);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void kubernetesDiscoveryDisabled() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.kubernetes.discovery.enabled=false");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).doesNotHaveBean(KubernetesClientServicesFunction.class);
|
||||
assertThat(context).doesNotHaveBean(KubernetesDiscoveryClient.class);
|
||||
assertThat(context).doesNotHaveBean(KubernetesDiscoveryClientHealthIndicatorInitializer.class);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void kubernetesDiscoveryBlockingEnabled() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.discovery.blocking.enabled=true");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).hasSingleBean(KubernetesClientServicesFunction.class);
|
||||
assertThat(context).hasSingleBean(KubernetesDiscoveryClient.class);
|
||||
assertThat(context).hasSingleBean(KubernetesDiscoveryClientHealthIndicatorInitializer.class);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void kubernetesDiscoveryBlockingDisabled() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.discovery.blocking.enabled=false");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).doesNotHaveBean(KubernetesClientServicesFunction.class);
|
||||
assertThat(context).doesNotHaveBean(KubernetesDiscoveryClient.class);
|
||||
assertThat(context).doesNotHaveBean(KubernetesDiscoveryClientHealthIndicatorInitializer.class);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void kubernetesDiscoveryHealthIndicatorEnabled() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.discovery.client.health-indicator.enabled=true");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).hasSingleBean(KubernetesClientServicesFunction.class);
|
||||
assertThat(context).hasSingleBean(KubernetesDiscoveryClient.class);
|
||||
assertThat(context).hasSingleBean(KubernetesDiscoveryClientHealthIndicatorInitializer.class);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void kubernetesDiscoveryHealthIndicatorDisabled() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.discovery.client.health-indicator.enabled=false");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).hasSingleBean(KubernetesClientServicesFunction.class);
|
||||
assertThat(context).hasSingleBean(KubernetesDiscoveryClient.class);
|
||||
assertThat(context).doesNotHaveBean(KubernetesDiscoveryClientHealthIndicatorInitializer.class);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void kubernetesDiscoveryHealthIndicatorEnabledHealthIndicatorMissing() {
|
||||
setupWithFilteredClassLoader(HealthIndicator.class, "spring.main.cloud-platform=KUBERNETES",
|
||||
"spring.cloud.config.enabled=false", "spring.cloud.discovery.client.health-indicator.enabled=true");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).hasSingleBean(KubernetesClientServicesFunction.class);
|
||||
assertThat(context).hasSingleBean(KubernetesDiscoveryClient.class);
|
||||
assertThat(context).doesNotHaveBean(KubernetesDiscoveryClientHealthIndicatorInitializer.class);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* reactive is disabled and should not impact blocking in any way
|
||||
*/
|
||||
@Test
|
||||
void reactiveDisabled() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.discovery.reactive.enabled=false");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).hasSingleBean(KubernetesClientServicesFunction.class);
|
||||
assertThat(context).hasSingleBean(KubernetesDiscoveryClient.class);
|
||||
assertThat(context).hasSingleBean(KubernetesDiscoveryClientHealthIndicatorInitializer.class);
|
||||
});
|
||||
}
|
||||
|
||||
private void setup(String... properties) {
|
||||
applicationContextRunner = new ApplicationContextRunner().withConfiguration(
|
||||
AutoConfigurations.of(KubernetesDiscoveryClientAutoConfiguration.class, Fabric8AutoConfiguration.class,
|
||||
KubernetesCommonsAutoConfiguration.class, KubernetesDiscoveryPropertiesAutoConfiguration.class))
|
||||
.withPropertyValues(properties);
|
||||
}
|
||||
|
||||
private void setupWithFilteredClassLoader(Class<?> cls, String... properties) {
|
||||
applicationContextRunner = new ApplicationContextRunner()
|
||||
.withConfiguration(AutoConfigurations.of(KubernetesDiscoveryClientAutoConfiguration.class,
|
||||
Fabric8AutoConfiguration.class, KubernetesCommonsAutoConfiguration.class,
|
||||
KubernetesDiscoveryPropertiesAutoConfiguration.class))
|
||||
.withClassLoader(new FilteredClassLoader(cls)).withPropertyValues(properties);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -28,6 +28,7 @@ import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
|
||||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||
import org.springframework.cloud.kubernetes.commons.PodUtils;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryPropertiesAutoConfiguration;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@@ -40,7 +41,7 @@ import static org.mockito.Mockito.when;
|
||||
* @author Ryan Dawson
|
||||
* @author Tim Ysewyn
|
||||
*/
|
||||
public class KubernetesDiscoveryClientAutoConfigurationPropertiesTests {
|
||||
class KubernetesDiscoveryClientAutoConfigurationPropertiesTests {
|
||||
|
||||
private ConfigurableApplicationContext context;
|
||||
|
||||
@@ -80,7 +81,8 @@ public class KubernetesDiscoveryClientAutoConfigurationPropertiesTests {
|
||||
List<String> envList = new ArrayList<>(Arrays.asList(env));
|
||||
envList.add("spring.cloud.config.enabled=false");
|
||||
this.context = new SpringApplicationBuilder(PropertyPlaceholderAutoConfiguration.class,
|
||||
KubernetesClientTestConfiguration.class, KubernetesDiscoveryClientAutoConfiguration.class)
|
||||
KubernetesClientTestConfiguration.class, KubernetesDiscoveryClientAutoConfiguration.class,
|
||||
KubernetesDiscoveryPropertiesAutoConfiguration.class)
|
||||
.web(org.springframework.boot.WebApplicationType.NONE)
|
||||
.properties(envList.toArray(new String[0])).run();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,175 @@
|
||||
/*
|
||||
* Copyright 2013-2023 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.cloud.kubernetes.fabric8.discovery.reactive;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.test.context.FilteredClassLoader;
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
import org.springframework.cloud.client.ReactiveCommonsClientAutoConfiguration;
|
||||
import org.springframework.cloud.client.discovery.health.reactive.ReactiveDiscoveryClientHealthIndicator;
|
||||
import org.springframework.cloud.commons.util.UtilAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.commons.KubernetesCommonsAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryPropertiesAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.fabric8.Fabric8AutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.fabric8.discovery.KubernetesClientServicesFunction;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Test various conditionals for
|
||||
* {@link KubernetesReactiveDiscoveryClientAutoConfiguration}
|
||||
*
|
||||
* @author wind57
|
||||
*/
|
||||
class KubernetesReactiveDiscoveryClientAutoConfigurationApplicationContextTests {
|
||||
|
||||
private ApplicationContextRunner applicationContextRunner;
|
||||
|
||||
@Test
|
||||
void discoveryEnabledDefault() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).hasSingleBean(KubernetesReactiveDiscoveryClient.class);
|
||||
assertThat(context).hasSingleBean(ReactiveDiscoveryClientHealthIndicator.class);
|
||||
assertThat(context).hasSingleBean(KubernetesClientServicesFunction.class);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void discoveryEnabled() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.discovery.enabled=true");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).hasSingleBean(KubernetesReactiveDiscoveryClient.class);
|
||||
assertThat(context).hasSingleBean(ReactiveDiscoveryClientHealthIndicator.class);
|
||||
assertThat(context).hasSingleBean(KubernetesClientServicesFunction.class);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void discoveryDisabled() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.discovery.enabled=false");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).doesNotHaveBean(KubernetesReactiveDiscoveryClient.class);
|
||||
assertThat(context).doesNotHaveBean(ReactiveDiscoveryClientHealthIndicator.class);
|
||||
assertThat(context).doesNotHaveBean(KubernetesClientServicesFunction.class);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void kubernetesDiscoveryEnabled() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.kubernetes.discovery.enabled=true");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).hasSingleBean(KubernetesReactiveDiscoveryClient.class);
|
||||
assertThat(context).hasSingleBean(ReactiveDiscoveryClientHealthIndicator.class);
|
||||
assertThat(context).hasSingleBean(KubernetesClientServicesFunction.class);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void kubernetesDiscoveryDisabled() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.kubernetes.discovery.enabled=false");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).doesNotHaveBean(KubernetesReactiveDiscoveryClient.class);
|
||||
assertThat(context).doesNotHaveBean(ReactiveDiscoveryClientHealthIndicator.class);
|
||||
assertThat(context).doesNotHaveBean(KubernetesClientServicesFunction.class);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void kubernetesReactiveDiscoveryEnabled() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.discovery.reactive.enabled=true");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).hasSingleBean(KubernetesReactiveDiscoveryClient.class);
|
||||
assertThat(context).hasSingleBean(ReactiveDiscoveryClientHealthIndicator.class);
|
||||
assertThat(context).hasSingleBean(KubernetesClientServicesFunction.class);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void kubernetesReactiveDiscoveryDisabled() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.discovery.reactive.enabled=false");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).doesNotHaveBean(KubernetesReactiveDiscoveryClient.class);
|
||||
assertThat(context).doesNotHaveBean(ReactiveDiscoveryClientHealthIndicator.class);
|
||||
assertThat(context).doesNotHaveBean(KubernetesClientServicesFunction.class);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* blocking is disabled, and it should not impact reactive in any way.
|
||||
*/
|
||||
@Test
|
||||
void blockingDisabled() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.discovery.blocking.enabled=false");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).hasSingleBean(KubernetesReactiveDiscoveryClient.class);
|
||||
assertThat(context).hasSingleBean(ReactiveDiscoveryClientHealthIndicator.class);
|
||||
assertThat(context).hasSingleBean(KubernetesClientServicesFunction.class);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void healthDisabled() {
|
||||
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.discovery.client.health-indicator.enabled=false");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).hasSingleBean(KubernetesReactiveDiscoveryClient.class);
|
||||
assertThat(context).doesNotHaveBean(ReactiveDiscoveryClientHealthIndicator.class);
|
||||
assertThat(context).hasSingleBean(KubernetesClientServicesFunction.class);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void healthEnabledClassNotPresent() {
|
||||
setupWithFilteredClassLoader("org.springframework.boot.actuate.health.ReactiveHealthIndicator",
|
||||
"spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
|
||||
"spring.cloud.discovery.client.health-indicator.enabled=false");
|
||||
applicationContextRunner.run(context -> {
|
||||
assertThat(context).hasSingleBean(KubernetesReactiveDiscoveryClient.class);
|
||||
assertThat(context).doesNotHaveBean(ReactiveDiscoveryClientHealthIndicator.class);
|
||||
assertThat(context).hasSingleBean(KubernetesClientServicesFunction.class);
|
||||
});
|
||||
}
|
||||
|
||||
private void setup(String... properties) {
|
||||
applicationContextRunner = new ApplicationContextRunner()
|
||||
.withConfiguration(AutoConfigurations.of(UtilAutoConfiguration.class,
|
||||
ReactiveCommonsClientAutoConfiguration.class, KubernetesCommonsAutoConfiguration.class,
|
||||
Fabric8AutoConfiguration.class, KubernetesReactiveDiscoveryClientAutoConfiguration.class,
|
||||
KubernetesDiscoveryPropertiesAutoConfiguration.class))
|
||||
.withPropertyValues(properties);
|
||||
}
|
||||
|
||||
private void setupWithFilteredClassLoader(String name, String... properties) {
|
||||
applicationContextRunner = new ApplicationContextRunner()
|
||||
.withConfiguration(AutoConfigurations.of(UtilAutoConfiguration.class,
|
||||
ReactiveCommonsClientAutoConfiguration.class, KubernetesCommonsAutoConfiguration.class,
|
||||
Fabric8AutoConfiguration.class, KubernetesReactiveDiscoveryClientAutoConfiguration.class,
|
||||
KubernetesDiscoveryPropertiesAutoConfiguration.class))
|
||||
.withClassLoader(new FilteredClassLoader(name)).withPropertyValues(properties);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -26,6 +26,7 @@ import org.springframework.cloud.client.discovery.ReactiveDiscoveryClient;
|
||||
import org.springframework.cloud.client.discovery.health.reactive.ReactiveDiscoveryClientHealthIndicator;
|
||||
import org.springframework.cloud.commons.util.UtilAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.commons.KubernetesCommonsAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryPropertiesAutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.fabric8.Fabric8AutoConfiguration;
|
||||
import org.springframework.cloud.kubernetes.fabric8.discovery.KubernetesDiscoveryClientAutoConfiguration;
|
||||
|
||||
@@ -40,7 +41,8 @@ class KubernetesReactiveDiscoveryClientAutoConfigurationTests {
|
||||
.withConfiguration(AutoConfigurations.of(UtilAutoConfiguration.class,
|
||||
ReactiveCommonsClientAutoConfiguration.class, KubernetesCommonsAutoConfiguration.class,
|
||||
Fabric8AutoConfiguration.class, KubernetesDiscoveryClientAutoConfiguration.class,
|
||||
KubernetesReactiveDiscoveryClientAutoConfiguration.class));
|
||||
KubernetesReactiveDiscoveryClientAutoConfiguration.class,
|
||||
KubernetesDiscoveryPropertiesAutoConfiguration.class));
|
||||
|
||||
@Test
|
||||
void shouldWorkWithDefaults() {
|
||||
|
||||
@@ -46,5 +46,11 @@
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.junit.platform</groupId>
|
||||
<artifactId>junit-platform-launcher</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</project>
|
||||
|
||||
@@ -68,6 +68,11 @@
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.platform</groupId>
|
||||
<artifactId>junit-platform-launcher</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<plugins>
|
||||
|
||||
Reference in New Issue
Block a user