diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-discovery-it/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesClientDiscoveryClientIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-discovery-it/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesClientDiscoveryClientIT.java index e5f46e4a..9e9fb101 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-discovery-it/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesClientDiscoveryClientIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-discovery-it/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesClientDiscoveryClientIT.java @@ -38,6 +38,7 @@ import reactor.netty.http.client.HttpClient; import reactor.util.retry.Retry; import reactor.util.retry.RetryBackoffSpec; +import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.kubernetes.commons.discovery.DefaultKubernetesServiceInstance; import org.springframework.cloud.kubernetes.integration.tests.commons.Commons; import org.springframework.cloud.kubernetes.integration.tests.commons.Phase; @@ -133,6 +134,17 @@ class KubernetesClientDiscoveryClientIT { Assertions.assertEquals(busyBoxServiceInstances.size(), 2); + // enforces this : + // https://github.com/spring-cloud/spring-cloud-kubernetes/issues/1286 + WebClient clientForNonExistentService = builder().baseUrl("http://localhost/service-instances/non-existent") + .build(); + List resultForNonExistentService = clientForNonExistentService.method(HttpMethod.GET) + .retrieve().bodyToMono(new ParameterizedTypeReference>() { + + }).retryWhen(retrySpec()).block(); + + Assertions.assertEquals(resultForNonExistentService.size(), 0); + // clean-up util.busybox(NAMESPACE, Phase.DELETE); manifests(false, null, Phase.DELETE); @@ -169,6 +181,17 @@ class KubernetesClientDiscoveryClientIT { Assertions.assertTrue(servicesResult.contains("busybox-service")); Assertions.assertTrue(servicesResult.contains("service-wiremock")); + // enforces this : + // https://github.com/spring-cloud/spring-cloud-kubernetes/issues/1286 + WebClient clientForNonExistentService = builder().baseUrl("http://localhost/service-instances/non-existent") + .build(); + List resultForNonExistentService = clientForNonExistentService.method(HttpMethod.GET) + .retrieve().bodyToMono(new ParameterizedTypeReference>() { + + }).retryWhen(retrySpec()).block(); + + Assertions.assertEquals(resultForNonExistentService.size(), 0); + manifests(true, null, Phase.DELETE); util.wiremock(NAMESPACE_A, "/wiremock", Phase.DELETE); util.busybox(NAMESPACE_B, Phase.DELETE); @@ -220,6 +243,17 @@ class KubernetesClientDiscoveryClientIT { DefaultKubernetesServiceInstance serviceInstance = wiremockInNamespaceA.get(0); Assertions.assertEquals(serviceInstance.getNamespace(), "a"); + // enforces this : + // https://github.com/spring-cloud/spring-cloud-kubernetes/issues/1286 + WebClient clientForNonExistentService = builder().baseUrl("http://localhost/service-instances/non-existent") + .build(); + List resultForNonExistentService = clientForNonExistentService.method(HttpMethod.GET) + .retrieve().bodyToMono(new ParameterizedTypeReference>() { + + }).retryWhen(retrySpec()).block(); + + Assertions.assertEquals(resultForNonExistentService.size(), 0); + manifests(false, NAMESPACE_A, Phase.DELETE); util.wiremock(NAMESPACE_A, "/wiremock", Phase.DELETE); util.wiremock(NAMESPACE_B, "/wiremock", Phase.DELETE); diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-configuration-watcher-it/pom.xml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-configuration-watcher-it/pom.xml index 202d5c91..32ee3d23 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-configuration-watcher-it/pom.xml +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-configuration-watcher-it/pom.xml @@ -53,45 +53,25 @@ io.kubernetes client-java test + + + org.slf4j + slf4j-api + + io.kubernetes client-java-extended test - - com.github.docker-java - docker-java-core - test - - - com.github.docker-java - docker-java-transport-httpclient5 - test - - - org.testcontainers - testcontainers - test - - - org.testcontainers - junit-jupiter - test - org.testcontainers k3s test - - org.springframework.boot - spring-boot-starter-webflux - test - - diff --git a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/native_client/Util.java b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/native_client/Util.java index b15fddc3..f058fc44 100644 --- a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/native_client/Util.java +++ b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/native_client/Util.java @@ -455,7 +455,7 @@ public final class Util { private void waitForDeployment(String namespace, V1Deployment deployment) { String deploymentName = deploymentName(deployment); - await().pollInterval(Duration.ofSeconds(1)).atMost(900, TimeUnit.SECONDS) + await().pollDelay(Duration.ofSeconds(5)).pollInterval(Duration.ofSeconds(5)).atMost(900, TimeUnit.SECONDS) .until(() -> isDeploymentReady(deploymentName, namespace)); }