diff --git a/spring-cloud-kubernetes-integration-tests/pom.xml b/spring-cloud-kubernetes-integration-tests/pom.xml index 1ee30796..9147050e 100644 --- a/spring-cloud-kubernetes-integration-tests/pom.xml +++ b/spring-cloud-kubernetes-integration-tests/pom.xml @@ -110,7 +110,7 @@ spring-cloud-kubernetes-k8s-client-configuration-watcher - spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps + spring-cloud-kubernetes-k8s-client-kafka-configmap-reload spring-cloud-kubernetes-k8s-client-rabbitmq-secret-reload-multiple-apps diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-app-a/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/appA/AppATestApplication.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-app-a/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/appA/AppATestApplication.java deleted file mode 100644 index e15b2032..00000000 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-app-a/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/appA/AppATestApplication.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2013-2022 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.configuration.watcher.appA; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.bus.event.RefreshRemoteApplicationEvent; -import org.springframework.context.ApplicationListener; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * @author wind57 - */ -@SpringBootApplication -@RestController -public class AppATestApplication implements ApplicationListener { - - private final Log LOG = LogFactory.getLog(getClass()); - - private boolean value = false; - - public static void main(String[] args) { - SpringApplication.run(AppATestApplication.class, args); - } - - @GetMapping("/app-a") - public boolean index() { - LOG.info("Current value: " + value); - return value; - } - - @Override - public void onApplicationEvent(RefreshRemoteApplicationEvent refreshRemoteApplicationEvent) { - LOG.info("Received remote refresh event from origin: " + refreshRemoteApplicationEvent.getOriginService() - + " to destination : " + refreshRemoteApplicationEvent.getDestinationService()); - this.value = true; - } - -} diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-app-a/src/main/resources/application.yaml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-app-a/src/main/resources/application.yaml deleted file mode 100644 index 74fa5b1d..00000000 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-app-a/src/main/resources/application.yaml +++ /dev/null @@ -1,22 +0,0 @@ -#logging: -# level: -# org.springframework: DEBUG -# -spring: - application: - name: spring-cloud-kubernetes-client-configuration-watcher-configmap-app-a - cloud: - bus: - refresh: - enabled: false - enabled: true - destination: multiple-apps - stream: - default-binder: kafka -management: - endpoint: - health: - probes: - enabled: true -server: - port: 8080 diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/pom.xml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/pom.xml index e46618a8..e69de29b 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/pom.xml +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/pom.xml @@ -1,69 +0,0 @@ - - - - spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps - org.springframework.cloud - 3.2.1-SNAPSHOT - - 4.0.0 - jar - - kafka-configmap-test-app - - - - org.springframework.boot - spring-boot-starter-test - - - org.springframework.boot - spring-boot-starter-webflux - - - - org.springframework.cloud - spring-cloud-kubernetes-test-support - - - - - - - - ../../src/main/resources - true - - - src/main/resources - true - - - - - - org.springframework.boot - spring-boot-maven-plugin - - true - - - - build-image - - true - - - - repackage - - true - - - - - - - - diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/app-a/app-a-deployment.yaml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/app-a/app-a-deployment.yaml deleted file mode 100644 index 282c03a4..00000000 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/app-a/app-a-deployment.yaml +++ /dev/null @@ -1,42 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: app-a-deployment -spec: - selector: - matchLabels: - app: app-a - template: - metadata: - labels: - app: app-a - spec: - containers: - - name: app-a - image: docker.io/springcloud/kafka-configmap-app-a - imagePullPolicy: IfNotPresent - env: - - name: SPRING_PROFILES_ACTIVE - value: bus-kafka - - name: spring.kafka.bootstrap-servers - value: kafka:9092 - readinessProbe: - httpGet: - port: 8080 - path: /actuator/health/readiness - initialDelaySeconds: 60 - periodSeconds: 10 - timeoutSeconds: 5 - failureThreshold: 3 - successThreshold: 1 - livenessProbe: - httpGet: - port: 8080 - path: /actuator/health/liveness - initialDelaySeconds: 60 - periodSeconds: 10 - timeoutSeconds: 5 - failureThreshold: 3 - successThreshold: 1 - ports: - - containerPort: 8080 diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/app-a/app-a-service.yaml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/app-a/app-a-service.yaml deleted file mode 100644 index 04cd68a2..00000000 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/app-a/app-a-service.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - labels: - app: app-a - name: app-a -spec: - ports: - - name: http - port: 8080 - targetPort: 8080 - selector: - app: app-a - type: ClusterIP diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/ingress/spring-cloud-kubernetes-configuration-watcher-multiple-apps-ingress.yaml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/ingress/spring-cloud-kubernetes-configuration-watcher-multiple-apps-ingress.yaml deleted file mode 100644 index cae12b11..00000000 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/ingress/spring-cloud-kubernetes-configuration-watcher-multiple-apps-ingress.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: it-ingress-multiple-apps - namespace: default -spec: - rules: - - http: - paths: - - path: /app-a - pathType: Prefix - backend: - service: - name: app-a - port: - number: 8080 - - - http: - paths: - - path: /app-b - pathType: Prefix - backend: - service: - name: app-b - port: - number: 8081 diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-app-a/pom.xml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-app/pom.xml similarity index 72% rename from spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-app-a/pom.xml rename to spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-app/pom.xml index 6f49ce35..038c9ee2 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-app-a/pom.xml +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-app/pom.xml @@ -3,14 +3,14 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps + spring-cloud-kubernetes-k8s-client-kafka-configmap-reload org.springframework.cloud 3.2.1-SNAPSHOT 4.0.0 jar - kafka-configmap-app-a + kafka-configmap-app @@ -25,21 +25,6 @@ org.springframework.boot spring-boot-starter-actuator - - - - - ../src/main/resources - true - - - src/main/resources - true - - - - - diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-app-b/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/appB/AppBTestApplication.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-app/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/appB/AppTestApplication.java similarity index 90% rename from spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-app-b/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/appB/AppBTestApplication.java rename to spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-app/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/appB/AppTestApplication.java index ead81ba0..add43181 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-app-b/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/appB/AppBTestApplication.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-app/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/appB/AppTestApplication.java @@ -31,17 +31,17 @@ import org.springframework.web.bind.annotation.RestController; */ @SpringBootApplication @RestController -public class AppBTestApplication implements ApplicationListener { +public class AppTestApplication implements ApplicationListener { private final Log LOG = LogFactory.getLog(getClass()); private boolean value = false; public static void main(String[] args) { - SpringApplication.run(AppBTestApplication.class, args); + SpringApplication.run(AppTestApplication.class, args); } - @GetMapping("/app-b") + @GetMapping("/app") public boolean index() { LOG.info("Current value: " + value); return value; diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-app-b/src/main/resources/application.yaml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-app/src/main/resources/application.yaml similarity index 58% rename from spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-app-b/src/main/resources/application.yaml rename to spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-app/src/main/resources/application.yaml index 8491ca7f..693b5f0e 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-app-b/src/main/resources/application.yaml +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-app/src/main/resources/application.yaml @@ -1,16 +1,13 @@ -#logging: -# level: -# org.springframework: DEBUG -# spring: application: - name: spring-cloud-kubernetes-client-configuration-watcher-configmap-app-b + name: non-app cloud: bus: refresh: enabled: false enabled: true - destination: multiple-apps + destination: app + id: app stream: default-binder: kafka management: diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-app-b/pom.xml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/pom.xml similarity index 73% rename from spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-app-b/pom.xml rename to spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/pom.xml index 036ae53f..5e6279d8 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-app-b/pom.xml +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/pom.xml @@ -3,28 +3,32 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps + spring-cloud-kubernetes-k8s-client-kafka-configmap-reload org.springframework.cloud 3.2.1-SNAPSHOT ../../spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps 4.0.0 - jar - kafka-configmap-app-b + kafka-configmap-test-app + + + true + true + org.springframework.boot - spring-boot-starter-web - - - org.springframework.cloud - spring-cloud-starter-bus-kafka + spring-boot-starter-test org.springframework.boot - spring-boot-starter-actuator + spring-boot-starter-webflux + + + org.springframework.cloud + spring-cloud-kubernetes-test-support diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/multiple/apps/ConfigurationWatcherMultipleAppsIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/multiple/apps/ConfigurationWatcherBuKafkaIT.java similarity index 60% rename from spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/multiple/apps/ConfigurationWatcherMultipleAppsIT.java rename to spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/multiple/apps/ConfigurationWatcherBuKafkaIT.java index 72a20ab6..5acda884 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/multiple/apps/ConfigurationWatcherMultipleAppsIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/multiple/apps/ConfigurationWatcherBuKafkaIT.java @@ -47,15 +47,13 @@ import static org.awaitility.Awaitility.await; /** * @author wind57 */ -class ConfigurationWatcherMultipleAppsIT { +class ConfigurationWatcherBuKafkaIT { - private static final String CONFIG_WATCHER_APP_A_IMAGE = "kafka-configmap-app-a"; - - private static final String CONFIG_WATCHER_APP_B_IMAGE = "kafka-configmap-app-b"; + private static final String CONFIG_WATCHER_APP_IMAGE = "kafka-configmap-app"; private static final String SPRING_CLOUD_K8S_CONFIG_WATCHER_APP_NAME = "spring-cloud-kubernetes-configuration-watcher"; - private static final String CONFIG_MAP_NAME = "multiple-apps"; + private static final String CONFIG_MAP_NAME = "apps"; private static final String NAMESPACE = "default"; @@ -71,11 +69,8 @@ class ConfigurationWatcherMultipleAppsIT { Commons.validateImage(SPRING_CLOUD_K8S_CONFIG_WATCHER_APP_NAME, K3S); Commons.loadSpringCloudKubernetesImage(SPRING_CLOUD_K8S_CONFIG_WATCHER_APP_NAME, K3S); - Commons.validateImage(CONFIG_WATCHER_APP_A_IMAGE, K3S); - Commons.loadSpringCloudKubernetesImage(CONFIG_WATCHER_APP_A_IMAGE, K3S); - - Commons.validateImage(CONFIG_WATCHER_APP_B_IMAGE, K3S); - Commons.loadSpringCloudKubernetesImage(CONFIG_WATCHER_APP_B_IMAGE, K3S); + Commons.validateImage(CONFIG_WATCHER_APP_IMAGE, K3S); + Commons.loadSpringCloudKubernetesImage(CONFIG_WATCHER_APP_IMAGE, K3S); Images.loadKafka(K3S); @@ -86,19 +81,64 @@ class ConfigurationWatcherMultipleAppsIT { @BeforeEach void setup() { util.kafka(NAMESPACE, Phase.CREATE); - appA(Phase.CREATE); - appB(Phase.CREATE); + app(Phase.CREATE); configWatcher(Phase.CREATE); } @AfterEach void afterEach() { util.kafka(NAMESPACE, Phase.DELETE); - appA(Phase.DELETE); - appB(Phase.DELETE); + app(Phase.DELETE); configWatcher(Phase.DELETE); } + /** + *
+	 *
+	 *     To run locally and debug.
+	 *
+	 *     - I've enabled "Enable host networking" on docker for mac settings
+	 *     - docker run -p 9092:9092 confluentinc/confluent-local:7.9.0
+	 *     - docker run --network=host -e 'KAFKA_BROKERS=localhost:9092' redpandadata/console:v2.8.2
+	 *     - run 'ConfigurationWatcherApplication' with :
+	 *     		SPRING_CLOUD_KUBERNETES_CLIENT_NAMESPACE=default
+	 *     		SPRING_CLOUD_KUBERNETES_CONFIGURATION_WATCHER_REFRESHDELAY=1
+	 *     		SPRING_MAIN_CLOUDPLATFORM=kubernetes
+	 *     		SPRING_PROFILES_ACTIVE=bus-kafka
+	 *     		SPRING_CLOUD_BUS_DESTINATION=app-bus-destination
+	 *
+	 *
+	 *     How does this test work:
+	 *
+	 *     - 'spring.cloud.kubernetes.configmap.apps = app' will tell configuration watcher
+	 *       to find a service called 'app'.
+	 *       If such a service is found, we will call : BusRefreshTrigger::triggerRefresh
+	 *
+	 *     - This, in turn, will publish a RefreshRemoteApplicationEvent to a randomly named topic.
+	 *       In this test case in kafka such a message will be present
+	 *
+	 *       {
+	 *     		"type": "RefreshRemoteApplicationEvent",
+	 *     		"timestamp": 1741365164981,
+	 *     		"originService": "spring-cloud-kubernetes-configuration-watcher:bus-kafka:8888:24d2ff91d0af65bb17b551465573db4c",
+	 *     		"destinationService": "app:**",
+	 *     		"id": "309dcdc5-d876-4213-bc84-198d47d2988a"
+	 * 		}
+	 *
+	 * 	   - our app under test has such a configuration:
+	 *
+	 *		spring:
+	 *   	  application:
+	 *     		name: non-app
+	 *   	  cloud:
+	 *   	    bus:
+	 *      	 id: app
+	 *
+	 *       which means we "listen" on the same topic, and we are the 'destinationService'.
+	 *
+	 *
+	 * 
+ */ @Test void testRefresh() { @@ -107,51 +147,33 @@ class ConfigurationWatcherMultipleAppsIT { V1ConfigMap configMap = new V1ConfigMapBuilder().editOrNewMetadata() .withName(CONFIG_MAP_NAME) .addToLabels("spring.cloud.kubernetes.config", "true") - .addToAnnotations("spring.cloud.kubernetes.configmap.apps", - "spring-cloud-kubernetes-client-configuration-watcher-configmap-app-a, " - + "spring-cloud-kubernetes-client-configuration-watcher-configmap-app-b") + .addToAnnotations("spring.cloud.kubernetes.configmap.apps", "app") .endMetadata() - .addToData("foo", "hello world") .build(); util.createAndWait(NAMESPACE, configMap, null); - WebClient.Builder builderA = builder(); - WebClient serviceClientA = builderA.baseUrl("http://localhost:80/app-a").build(); + WebClient.Builder builder = builder(); + WebClient serviceClient = builder.baseUrl("http://localhost:80/app").build(); - WebClient.Builder builderB = builder(); - WebClient serviceClientB = builderB.baseUrl("http://localhost:80/app-b").build(); - - Boolean[] valueA = new Boolean[1]; + Boolean[] value = new Boolean[1]; await().pollInterval(Duration.ofSeconds(3)).atMost(Duration.ofSeconds(240)).until(() -> { - valueA[0] = serviceClientA.method(HttpMethod.GET) + value[0] = serviceClient.method(HttpMethod.GET) .retrieve() .bodyToMono(Boolean.class) .retryWhen(retrySpec()) .block(); - return valueA[0]; + return value[0]; }); - Assertions.assertTrue(valueA[0]); + Assertions.assertTrue(value[0]); - Boolean[] valueB = new Boolean[1]; - await().pollInterval(Duration.ofSeconds(3)).atMost(Duration.ofSeconds(240)).until(() -> { - valueB[0] = serviceClientB.method(HttpMethod.GET) - .retrieve() - .bodyToMono(Boolean.class) - .retryWhen(retrySpec()) - .block(); - return valueB[0]; - }); - - Assertions.assertTrue(valueB[0]); util.deleteAndWait(NAMESPACE, configMap, null); } - private void appA(Phase phase) { - V1Deployment deployment = (V1Deployment) util.yaml("app-a/app-a-deployment.yaml"); - V1Service service = (V1Service) util.yaml("app-a/app-a-service.yaml"); - V1Ingress ingress = (V1Ingress) util - .yaml("ingress/spring-cloud-kubernetes-configuration-watcher-multiple-apps-ingress.yaml"); + private void app(Phase phase) { + V1Deployment deployment = (V1Deployment) util.yaml("app/app-deployment.yaml"); + V1Service service = (V1Service) util.yaml("app/app-service.yaml"); + V1Ingress ingress = (V1Ingress) util.yaml("ingress/ingress.yaml"); if (phase.equals(Phase.CREATE)) { util.createAndWait(NAMESPACE, null, deployment, service, ingress, true); @@ -161,23 +183,9 @@ class ConfigurationWatcherMultipleAppsIT { } } - private void appB(Phase phase) { - V1Deployment deployment = (V1Deployment) util.yaml("app-b/app-b-deployment.yaml"); - V1Service service = (V1Service) util.yaml("app-b/app-b-service.yaml"); - - if (phase.equals(Phase.CREATE)) { - util.createAndWait(NAMESPACE, null, deployment, service, null, true); - } - else if (phase.equals(Phase.DELETE)) { - util.deleteAndWait(NAMESPACE, deployment, service, null); - } - } - private void configWatcher(Phase phase) { - V1Deployment deployment = (V1Deployment) util - .yaml("config-watcher/spring-cloud-kubernetes-configuration-watcher-bus-kafka-deployment.yaml"); - V1Service service = (V1Service) util - .yaml("config-watcher/spring-cloud-kubernetes-configuration-watcher-service.yaml"); + V1Deployment deployment = (V1Deployment) util.yaml("config-watcher/watcher-bus-kafka-deployment.yaml"); + V1Service service = (V1Service) util.yaml("config-watcher/watcher-kus-kafka-service.yaml"); if (phase.equals(Phase.CREATE)) { util.createAndWait(NAMESPACE, null, deployment, service, null, true); diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/app-b/app-b-deployment.yaml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/src/test/resources/app/app-deployment.yaml similarity index 87% rename from spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/app-b/app-b-deployment.yaml rename to spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/src/test/resources/app/app-deployment.yaml index b7f1e358..448232f0 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/app-b/app-b-deployment.yaml +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/src/test/resources/app/app-deployment.yaml @@ -1,19 +1,19 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: app-b-deployment + name: app-deployment spec: selector: matchLabels: - app: app-b + app: app template: metadata: labels: - app: app-b + app: app spec: containers: - - name: app-b - image: docker.io/springcloud/kafka-configmap-app-b + - name: app + image: docker.io/springcloud/kafka-configmap-app imagePullPolicy: IfNotPresent env: - name: SPRING_PROFILES_ACTIVE diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/app-b/app-b-service.yaml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/src/test/resources/app/app-service.yaml similarity index 77% rename from spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/app-b/app-b-service.yaml rename to spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/src/test/resources/app/app-service.yaml index 779fce45..f9cb695f 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/app-b/app-b-service.yaml +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/src/test/resources/app/app-service.yaml @@ -2,13 +2,13 @@ apiVersion: v1 kind: Service metadata: labels: - app: app-b - name: app-b + app: app + name: app spec: ports: - name: http port: 8081 targetPort: 8081 selector: - app: app-b + app: app type: ClusterIP diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/config-watcher/spring-cloud-kubernetes-configuration-watcher-bus-kafka-deployment.yaml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/src/test/resources/config-watcher/watcher-bus-kafka-deployment.yaml similarity index 90% rename from spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/config-watcher/spring-cloud-kubernetes-configuration-watcher-bus-kafka-deployment.yaml rename to spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/src/test/resources/config-watcher/watcher-bus-kafka-deployment.yaml index 35878d54..126afe22 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/config-watcher/spring-cloud-kubernetes-configuration-watcher-bus-kafka-deployment.yaml +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/src/test/resources/config-watcher/watcher-bus-kafka-deployment.yaml @@ -20,11 +20,13 @@ spec: - name: SPRING_PROFILES_ACTIVE value: bus-kafka - name: SPRING_CLOUD_BUS_DESTINATION - value: multiple-apps + value: app - name: spring.kafka.bootstrap-servers value: kafka:9092 - name: SPRING_CLOUD_KUBERNETES_CONFIGURATION_WATCHER_REFRESHDELAY - value: 1 + value: "1" + - name: LOGGING_LEVEL_ORG_SPRING_CLOUD_KUBERNETES_CONFIGURATION_WATCHER + value: DEBUG readinessProbe: httpGet: port: 8888 diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/config-watcher/spring-cloud-kubernetes-configuration-watcher-service.yaml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/src/test/resources/config-watcher/watcher-kus-kafka-service.yaml similarity index 100% rename from spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/config-watcher/spring-cloud-kubernetes-configuration-watcher-service.yaml rename to spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/src/test/resources/config-watcher/watcher-kus-kafka-service.yaml diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/src/test/resources/ingress/ingress.yaml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/src/test/resources/ingress/ingress.yaml new file mode 100644 index 00000000..faa02ba6 --- /dev/null +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/src/test/resources/ingress/ingress.yaml @@ -0,0 +1,16 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: it-ingress-app + namespace: default +spec: + rules: + - http: + paths: + - path: /app + pathType: Prefix + backend: + service: + name: app + port: + number: 8081 diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/logback-test.xml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/src/test/resources/logback-test.xml similarity index 100% rename from spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/kafka-configmap-test-app/src/test/resources/logback-test.xml rename to spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/kafka-configmap-test-app/src/test/resources/logback-test.xml diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/pom.xml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/pom.xml similarity index 84% rename from spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/pom.xml rename to spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/pom.xml index dd1f81b0..56b30b24 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps/pom.xml +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-kafka-configmap-reload/pom.xml @@ -8,12 +8,11 @@ 3.2.1-SNAPSHOT 4.0.0 - spring-cloud-kubernetes-k8s-client-kafka-configmap-reload-multiple-apps + spring-cloud-kubernetes-k8s-client-kafka-configmap-reload pom - kafka-configmap-app-a - kafka-configmap-app-b + kafka-configmap-app kafka-configmap-test-app