From 35c6f125ec26bbb97fbec20f39b3582cb1641b5e Mon Sep 17 00:00:00 2001 From: erabii Date: Mon, 24 May 2021 08:46:18 -0400 Subject: [PATCH] Istio Client small fix (#800) --- .../fabric8/istio/IstioAutoConfiguration.java | 6 +- .../istio/IstioBootstrapConfiguration.java | 2 +- .../fabric8/istio/IstioClientProperties.java | 2 +- .../cloud/kubernetes/fabric8/istio/App.java | 24 +++++ .../istio/IstioAutoConfigurationTests.java | 93 +++++++++++++++++++ 5 files changed, 123 insertions(+), 4 deletions(-) create mode 100644 spring-cloud-kubernetes-fabric8-istio/src/test/java/org/springframework/cloud/kubernetes/fabric8/istio/App.java create mode 100644 spring-cloud-kubernetes-fabric8-istio/src/test/java/org/springframework/cloud/kubernetes/fabric8/istio/IstioAutoConfigurationTests.java diff --git a/spring-cloud-kubernetes-fabric8-istio/src/main/java/org/springframework/cloud/kubernetes/fabric8/istio/IstioAutoConfiguration.java b/spring-cloud-kubernetes-fabric8-istio/src/main/java/org/springframework/cloud/kubernetes/fabric8/istio/IstioAutoConfiguration.java index ee9629ed..58bbf235 100644 --- a/spring-cloud-kubernetes-fabric8-istio/src/main/java/org/springframework/cloud/kubernetes/fabric8/istio/IstioAutoConfiguration.java +++ b/spring-cloud-kubernetes-fabric8-istio/src/main/java/org/springframework/cloud/kubernetes/fabric8/istio/IstioAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2013-2019 the original author or authors. + * Copyright 2013-2021 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. @@ -22,16 +22,18 @@ import me.snowdrop.istio.client.IstioClient; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.cloud.kubernetes.commons.ConditionalOnKubernetesEnabled; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** - * Auto configration for Istio. + * Auto configuration for Istio. * * @author Mauricio Salatino */ @Configuration(proxyBeanMethods = false) @ConditionalOnProperty(value = "spring.cloud.istio.enabled", matchIfMissing = true) +@ConditionalOnKubernetesEnabled public class IstioAutoConfiguration { @Bean diff --git a/spring-cloud-kubernetes-fabric8-istio/src/main/java/org/springframework/cloud/kubernetes/fabric8/istio/IstioBootstrapConfiguration.java b/spring-cloud-kubernetes-fabric8-istio/src/main/java/org/springframework/cloud/kubernetes/fabric8/istio/IstioBootstrapConfiguration.java index 08a47085..49ba558f 100644 --- a/spring-cloud-kubernetes-fabric8-istio/src/main/java/org/springframework/cloud/kubernetes/fabric8/istio/IstioBootstrapConfiguration.java +++ b/spring-cloud-kubernetes-fabric8-istio/src/main/java/org/springframework/cloud/kubernetes/fabric8/istio/IstioBootstrapConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2013-2019 the original author or authors. + * Copyright 2013-2021 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. diff --git a/spring-cloud-kubernetes-fabric8-istio/src/main/java/org/springframework/cloud/kubernetes/fabric8/istio/IstioClientProperties.java b/spring-cloud-kubernetes-fabric8-istio/src/main/java/org/springframework/cloud/kubernetes/fabric8/istio/IstioClientProperties.java index 2870b99c..44725eea 100644 --- a/spring-cloud-kubernetes-fabric8-istio/src/main/java/org/springframework/cloud/kubernetes/fabric8/istio/IstioClientProperties.java +++ b/spring-cloud-kubernetes-fabric8-istio/src/main/java/org/springframework/cloud/kubernetes/fabric8/istio/IstioClientProperties.java @@ -1,5 +1,5 @@ /* - * Copyright 2013-2019 the original author or authors. + * Copyright 2013-2021 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. diff --git a/spring-cloud-kubernetes-fabric8-istio/src/test/java/org/springframework/cloud/kubernetes/fabric8/istio/App.java b/spring-cloud-kubernetes-fabric8-istio/src/test/java/org/springframework/cloud/kubernetes/fabric8/istio/App.java new file mode 100644 index 00000000..2a638917 --- /dev/null +++ b/spring-cloud-kubernetes-fabric8-istio/src/test/java/org/springframework/cloud/kubernetes/fabric8/istio/App.java @@ -0,0 +1,24 @@ +/* + * Copyright 2013-2021 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.istio; + +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class App { + +} diff --git a/spring-cloud-kubernetes-fabric8-istio/src/test/java/org/springframework/cloud/kubernetes/fabric8/istio/IstioAutoConfigurationTests.java b/spring-cloud-kubernetes-fabric8-istio/src/test/java/org/springframework/cloud/kubernetes/fabric8/istio/IstioAutoConfigurationTests.java new file mode 100644 index 00000000..7dbead3f --- /dev/null +++ b/spring-cloud-kubernetes-fabric8-istio/src/test/java/org/springframework/cloud/kubernetes/fabric8/istio/IstioAutoConfigurationTests.java @@ -0,0 +1,93 @@ +/* + * Copyright 2013-2021 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.istio; + +import me.snowdrop.istio.client.IstioClient; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ConfigurableApplicationContext; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * @author wind57 + */ +public class IstioAutoConfigurationTests { + + @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = App.class) + @Nested + class IstioClientPresentByDefault { + + @Autowired + ConfigurableApplicationContext context; + + @Test + public void istioClientIsPresent() { + assertThat(context.getBeanNamesForType(IstioClient.class)).hasSize(1); + } + + } + + @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = App.class, + properties = { "spring.cloud.kubernetes.enabled=false" }) + @Nested + class IstioClientNotPresentWhenKubernetesDisabled { + + @Autowired + ConfigurableApplicationContext context; + + @Test + public void istioClientNotPresent() { + assertThat(context.getBeanNamesForType(IstioClient.class)).hasSize(0); + } + + } + + @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = App.class, + properties = { "spring.cloud.istio.enabled=true" }) + @Nested + class IstioClientPresentWhenIstioEnabled { + + @Autowired + ConfigurableApplicationContext context; + + @Test + public void istioClientIsPresent() { + assertThat(context.getBeanNamesForType(IstioClient.class)).hasSize(1); + } + + } + + @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = App.class, + properties = { "spring.cloud.istio.enabled=false" }) + @Nested + class IstioClientNotPresentPresentWhenIstioDisabled { + + @Autowired + ConfigurableApplicationContext context; + + @Test + public void istioClientNotPresent() { + assertThat(context.getBeanNamesForType(IstioClient.class)).hasSize(0); + } + + } + +}