From 1201501600594129b3f64b83dd3ea82d8e384884 Mon Sep 17 00:00:00 2001 From: wind57 Date: Wed, 16 Oct 2024 11:52:23 +0300 Subject: [PATCH 01/10] clean --- .../integration/tests/commons/Commons.java | 78 ++---------------- .../integration/tests/commons/Constants.java | 45 +++++++++++ .../tests/commons/FixedPortsK3sContainer.java | 80 +++++++++++++++++++ .../tests/commons/fabric8_client/Util.java | 3 - 4 files changed, 131 insertions(+), 75 deletions(-) create mode 100644 spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Constants.java create mode 100644 spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/FixedPortsK3sContainer.java diff --git a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java index a203744504..a36d64b656 100644 --- a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java +++ b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java @@ -27,22 +27,18 @@ import java.time.Duration; import java.util.Arrays; import java.util.List; -import java.util.Objects; import java.util.Optional; import java.util.concurrent.TimeUnit; import com.github.dockerjava.api.command.ListImagesCmd; import com.github.dockerjava.api.command.PullImageCmd; import com.github.dockerjava.api.command.SaveImageCmd; -import com.github.dockerjava.api.model.Bind; -import com.github.dockerjava.api.model.HostConfig; import com.github.dockerjava.api.model.Image; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.jupiter.api.Assertions; import org.testcontainers.containers.Container; import org.testcontainers.k3s.K3sContainer; -import org.testcontainers.utility.DockerImageName; import org.springframework.core.io.ClassPathResource; import org.springframework.util.ReflectionUtils; @@ -50,6 +46,10 @@ import org.springframework.util.StringUtils; import static org.awaitility.Awaitility.await; +import static org.springframework.cloud.kubernetes.integration.tests.commons.Constants.KUBERNETES_VERSION_FILE; +import static org.springframework.cloud.kubernetes.integration.tests.commons.Constants.TEMP_FOLDER; +import static org.springframework.cloud.kubernetes.integration.tests.commons.Constants.TMP_IMAGES; +import static org.springframework.cloud.kubernetes.integration.tests.commons.FixedPortsK3sContainer.CONTAINER; /** * A few commons things that can be re-used across clients. This is meant to be used for @@ -61,44 +61,10 @@ public final class Commons { private static final Log LOG = LogFactory.getLog(Commons.class); - /** - * this path is generated by the pipeline of github actions. - */ - private static final String TMP_IMAGES = "/tmp/docker/images"; - private Commons() { throw new AssertionError("No instance provided"); } - private static final String KUBERNETES_VERSION_FILE = "META-INF/springcloudkubernetes-version.txt"; - - /** - * Rancher version to use for test-containers. - */ - public static final String RANCHER = "rancher/k3s:v1.28.8-k3s1"; - - /** - * Command to use when starting rancher. Without "server" option, traefik is not - * installed - */ - public static final String RANCHER_COMMAND = "server"; - - /** - * Test containers exposed ports. - */ - public static final int[] EXPOSED_PORTS = new int[] { 80, 6443, 8080, 8888, 9092 }; - - /** - * Temporary folder where to load images. - */ - public static final String TEMP_FOLDER = new File(System.getProperty("java.io.tmpdir")).getAbsolutePath(); - - private static final K3sContainer CONTAINER = new FixedPortsK3sContainer(DockerImageName.parse(Commons.RANCHER)) - .configureFixedPorts() - .addBinds() - .withCommand(Commons.RANCHER_COMMAND) - .withReuse(true); - public static K3sContainer container() { return CONTAINER; } @@ -180,7 +146,7 @@ public static void loadImage(String image, String tag, String tarName, K3sContai * either get the tar from '/tmp/docker/images', or pull the image. */ public static void load(K3sContainer container, String tarName, String imageNameForDownload, String imageVersion) { - File dockerImagesRootDir = Paths.get(Commons.TMP_IMAGES).toFile(); + File dockerImagesRootDir = Paths.get(TMP_IMAGES).toFile(); if (dockerImagesRootDir.exists() && dockerImagesRootDir.isDirectory()) { File[] tars = dockerImagesRootDir.listFiles(); if (tars != null && tars.length > 0) { @@ -189,8 +155,7 @@ public static void load(K3sContainer container, String tarName, String imageName .filter(x -> x.contains(tarName)) .findFirst(); if (found.isPresent()) { - LOG.info("running in github actions, will load from : " + Commons.TMP_IMAGES + " tar : " - + found.get()); + LOG.info("running in github actions, will load from : " + TMP_IMAGES + " tar : " + found.get()); Commons.loadImageFromPath(found.get(), container); return; } @@ -321,35 +286,4 @@ public static void waitForLogStatement(String message, K3sContainer k3sContainer } - /** - * A K3sContainer, but with fixed port mappings. This is needed because of the nature - * of some integration tests. - * - * @author wind57 - */ - private static final class FixedPortsK3sContainer extends K3sContainer { - - private FixedPortsK3sContainer(DockerImageName dockerImageName) { - super(dockerImageName); - } - - private FixedPortsK3sContainer configureFixedPorts() { - for (int port : Commons.EXPOSED_PORTS) { - super.addFixedExposedPort(port, port); - } - return this; - } - - private FixedPortsK3sContainer addBinds() { - super.withCreateContainerCmdModifier(cmd -> { - HostConfig hostConfig = Objects.requireNonNull(cmd.getHostConfig()); - hostConfig.withBinds(Bind.parse(TEMP_FOLDER + ":" + TEMP_FOLDER), - Bind.parse(TMP_IMAGES + ":" + TMP_IMAGES)); - }); - - return this; - } - - } - } diff --git a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Constants.java b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Constants.java new file mode 100644 index 0000000000..c15171b6c9 --- /dev/null +++ b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Constants.java @@ -0,0 +1,45 @@ +/* + * Copyright 2013-2024 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.integration.tests.commons; + +import java.io.File; + +/** + * @author wind57 + */ +final class Constants { + + private Constants() { + + } + + /** + * this path is generated by the pipeline of github actions. + */ + static final String TMP_IMAGES = "/tmp/docker/images"; + + /** + * Temporary folder where to load images. + */ + static final String TEMP_FOLDER = new File(System.getProperty("java.io.tmpdir")).getAbsolutePath(); + + /** + * where is the version situated. + */ + static final String KUBERNETES_VERSION_FILE = "META-INF/springcloudkubernetes-version.txt"; + +} diff --git a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/FixedPortsK3sContainer.java b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/FixedPortsK3sContainer.java new file mode 100644 index 0000000000..05c275dbaa --- /dev/null +++ b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/FixedPortsK3sContainer.java @@ -0,0 +1,80 @@ +/* + * Copyright 2013-2024 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.integration.tests.commons; + +import java.util.Objects; + +import com.github.dockerjava.api.model.Bind; +import com.github.dockerjava.api.model.HostConfig; +import org.testcontainers.k3s.K3sContainer; +import org.testcontainers.utility.DockerImageName; + +import static org.springframework.cloud.kubernetes.integration.tests.commons.Constants.TEMP_FOLDER; +import static org.springframework.cloud.kubernetes.integration.tests.commons.Constants.TMP_IMAGES; + +/** + * A K3sContainer, but with fixed port mappings. This is needed because of the nature of + * some integration tests. + * + * @author wind57 + */ +final class FixedPortsK3sContainer extends K3sContainer { + + /** + * Test containers exposed ports. + */ + private static final int[] EXPOSED_PORTS = new int[] { 80, 6443, 8080, 8888, 9092 }; + + /** + * Rancher version to use for test-containers. + */ + private static final String RANCHER_VERSION = "rancher/k3s:v1.28.8-k3s1"; + + /** + * Command to use when starting rancher. Without "server" option, traefik is not + * installed + */ + private static final String RANCHER_COMMAND = "server"; + + static final K3sContainer CONTAINER = new FixedPortsK3sContainer(DockerImageName.parse(RANCHER_VERSION)) + .configureFixedPorts() + .addBinds() + .withCommand(RANCHER_COMMAND) + .withReuse(true); + + FixedPortsK3sContainer(DockerImageName dockerImageName) { + super(dockerImageName); + } + + FixedPortsK3sContainer configureFixedPorts() { + for (int port : EXPOSED_PORTS) { + super.addFixedExposedPort(port, port); + } + return this; + } + + FixedPortsK3sContainer addBinds() { + super.withCreateContainerCmdModifier(cmd -> { + HostConfig hostConfig = Objects.requireNonNull(cmd.getHostConfig()); + hostConfig.withBinds(Bind.parse(TEMP_FOLDER + ":" + TEMP_FOLDER), + Bind.parse(TMP_IMAGES + ":" + TMP_IMAGES)); + }); + + return this; + } + +} diff --git a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/fabric8_client/Util.java b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/fabric8_client/Util.java index cff24e87ff..bc1bfa43b4 100644 --- a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/fabric8_client/Util.java +++ b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/fabric8_client/Util.java @@ -65,9 +65,6 @@ public final class Util { private static final Log LOG = LogFactory.getLog(Util.class); - /** Image we get {@code istioctl} from in order to install Istio. */ - public static final String ISTIO_ISTIOCTL = "istio/istioctl"; - private final K3sContainer container; private final KubernetesClient client; From 35d7b19b53a3018bb27b2c4c8617f1bff85a4f20 Mon Sep 17 00:00:00 2001 From: wind57 Date: Wed, 16 Oct 2024 12:43:56 +0300 Subject: [PATCH 02/10] clean --- .../integration/tests/commons/K8SUtils.java | 532 ------------------ 1 file changed, 532 deletions(-) delete mode 100644 spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/K8SUtils.java diff --git a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/K8SUtils.java b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/K8SUtils.java deleted file mode 100644 index d191fb4576..0000000000 --- a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/K8SUtils.java +++ /dev/null @@ -1,532 +0,0 @@ -/* - * Copyright 2013-2020 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.integration.tests.commons; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.StringReader; -import java.net.HttpURLConnection; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.time.Duration; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - -import io.fabric8.kubernetes.api.model.apps.Deployment; -import io.kubernetes.client.openapi.ApiClient; -import io.kubernetes.client.openapi.ApiException; -import io.kubernetes.client.openapi.Configuration; -import io.kubernetes.client.openapi.apis.AppsV1Api; -import io.kubernetes.client.openapi.apis.CoreV1Api; -import io.kubernetes.client.openapi.apis.NetworkingV1Api; -import io.kubernetes.client.openapi.apis.RbacAuthorizationV1Api; -import io.kubernetes.client.openapi.models.V1ClusterRole; -import io.kubernetes.client.openapi.models.V1Deployment; -import io.kubernetes.client.openapi.models.V1DeploymentBuilder; -import io.kubernetes.client.openapi.models.V1DeploymentList; -import io.kubernetes.client.openapi.models.V1Endpoints; -import io.kubernetes.client.openapi.models.V1EndpointsList; -import io.kubernetes.client.openapi.models.V1EnvVar; -import io.kubernetes.client.openapi.models.V1Ingress; -import io.kubernetes.client.openapi.models.V1IngressLoadBalancerIngress; -import io.kubernetes.client.openapi.models.V1IngressLoadBalancerStatus; -import io.kubernetes.client.openapi.models.V1ReplicationController; -import io.kubernetes.client.openapi.models.V1ReplicationControllerList; -import io.kubernetes.client.openapi.models.V1Role; -import io.kubernetes.client.openapi.models.V1RoleBinding; -import io.kubernetes.client.openapi.models.V1Service; -import io.kubernetes.client.openapi.models.V1ServiceAccount; -import io.kubernetes.client.openapi.models.V1ServiceBuilder; -import io.kubernetes.client.util.Config; -import io.kubernetes.client.util.Yaml; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.testcontainers.k3s.K3sContainer; - -import org.springframework.core.io.ClassPathResource; -import org.springframework.util.ReflectionUtils; -import org.springframework.util.StreamUtils; -import org.springframework.util.StringUtils; - -import static org.awaitility.Awaitility.await; -import static org.junit.jupiter.api.Assertions.fail; - -/** - * @author Ryan Baxter - */ -public class K8SUtils { - - private static final String KUBERNETES_VERSION_FILE = "META-INF/springcloudkubernetes-version.txt"; - - private static final String WIREMOCK_DEPLOYMENT_NAME = "servicea-wiremock-deployment"; - - private static final String WIREMOCK_APP_NAME = "servicea-wiremock"; - - private final Log log = LogFactory.getLog(getClass()); - - private final CoreV1Api api; - - private final AppsV1Api appsApi; - - private final NetworkingV1Api networkingApi; - - private final RbacAuthorizationV1Api rbacApi; - - public static ApiClient createApiClient() throws IOException { - return createApiClient(false, Duration.ofSeconds(15)); - } - - public static String getPomVersion() { - try (InputStream in = new ClassPathResource(KUBERNETES_VERSION_FILE).getInputStream()) { - String version = StreamUtils.copyToString(in, StandardCharsets.UTF_8); - if (StringUtils.hasText(version)) { - version = version.trim(); - } - return version; - } - catch (IOException e) { - ReflectionUtils.rethrowRuntimeException(e); - } - // not reachable since exception rethrown at runtime - return null; - } - - public static ApiClient createApiClient(boolean debug, Duration readTimeout) throws IOException { - ApiClient client = Config.defaultClient(); - client.setHttpClient(client.getHttpClient().newBuilder().readTimeout(readTimeout).build()); - client.setDebugging(debug); - Configuration.setDefaultApiClient(client); - return client; - } - - public static ApiClient createApiClient(String configFile) throws IOException { - ApiClient client = Config.fromConfig(new StringReader(configFile)); - client.setHttpClient(client.getHttpClient().newBuilder().readTimeout(Duration.ofSeconds(15)).build()); - client.setDebugging(false); - Configuration.setDefaultApiClient(client); - return client; - } - - public K8SUtils(CoreV1Api api, AppsV1Api appsApi) { - this.api = api; - this.appsApi = appsApi; - this.networkingApi = new NetworkingV1Api(); - this.rbacApi = new RbacAuthorizationV1Api(); - } - - public Object readYaml(String urlString) throws Exception { - // create the url - URL url = new URL(urlString); - BufferedReader reader = null; - Object yamlObj = null; - try { - // open the url stream, wrap it an a few "readers" - reader = new BufferedReader(new InputStreamReader(url.openStream())); - yamlObj = Yaml.load(reader); - } - catch (Exception e) { - throw e; - } - finally { - if (reader != null) { - reader.close(); - } - } - return yamlObj; - } - - public static Object readYamlFromClasspath(String fileName) throws Exception { - ClassLoader classLoader = K8SUtils.class.getClassLoader(); - String file = new BufferedReader(new InputStreamReader(classLoader.getResourceAsStream(fileName))).lines() - .collect(Collectors.joining("\n")); - return Yaml.load(file); - } - - public V1Service createService(String name, Map labels, Map specSelectors, - String type, String portName, int port, int targetPort, String namespace) throws ApiException { - V1Service wiremockService = new V1ServiceBuilder().editOrNewMetadata() - .withName(name) - .addToLabels(labels) - .endMetadata() - .editOrNewSpec() - .addToSelector(specSelectors) - .withType(type) - .addNewPort() - .withName(portName) - .withPort(port) - .withNewTargetPort(targetPort) - .endPort() - .endSpec() - .build(); - return api.createNamespacedService(namespace, wiremockService, null, null, null, null); - } - - public V1Deployment createDeployment(String name, Map selectorMatchLabels, - Map templateMetadataLabels, String containerName, String image, String pullPolicy, - int containerPort, int readinessProbePort, String readinessProbePath, int livenessProbePort, - String livenessProbePath, String serviceAccountName, Collection envVars, String namespace) - throws ApiException { - - V1Deployment wiremockDeployment = new V1DeploymentBuilder().editOrNewMetadata() - .withName(name) - .endMetadata() - .editOrNewSpec() - .withNewSelector() - .addToMatchLabels(selectorMatchLabels) - .endSelector() - .editOrNewTemplate() - .editOrNewMetadata() - .addToLabels(templateMetadataLabels) - .endMetadata() - .editOrNewSpec() - .withServiceAccountName(serviceAccountName) - .addNewContainer() - .withName(containerName) - .withImage(image) - .withImagePullPolicy(pullPolicy) - .addNewPort() - .withContainerPort(containerPort) - .endPort() - .editOrNewReadinessProbe() - .editOrNewHttpGet() - .withNewPort(readinessProbePort) - .withPath(readinessProbePath) - .endHttpGet() - .endReadinessProbe() - .editOrNewLivenessProbe() - .editOrNewHttpGet() - .withNewPort(livenessProbePort) - .withPath(livenessProbePath) - .endHttpGet() - .endLivenessProbe() - .addAllToEnv(envVars) - .endContainer() - .endSpec() - .endTemplate() - .endSpec() - .build(); - return appsApi.createNamespacedDeployment(namespace, wiremockDeployment, null, null, null, null); - - } - - public void waitForEndpointReady(String name, String namespace) { - await().pollInterval(Duration.ofSeconds(1)) - .atMost(600, TimeUnit.SECONDS) - .until(() -> isEndpointReady(name, namespace)); - } - - public boolean isEndpointReady(String name, String namespace) throws ApiException { - V1EndpointsList endpoints = api.listNamespacedEndpoints(namespace, null, null, null, "metadata.name=" + name, - null, null, null, null, null, null, null); - if (endpoints.getItems().isEmpty()) { - fail("no endpoints for " + name); - } - V1Endpoints endpoint = endpoints.getItems().get(0); - return endpoint.getSubsets().get(0).getAddresses().size() >= 1; - } - - public void waitForReplicationController(String name, String namespace) { - await().pollInterval(Duration.ofSeconds(1)) - .atMost(600, TimeUnit.SECONDS) - .until(() -> isReplicationControllerReady(name, namespace)); - } - - public boolean isReplicationControllerReady(String name, String namespace) throws ApiException { - V1ReplicationControllerList controllerList = api.listNamespacedReplicationController(namespace, null, null, - null, "metadata.name=" + name, null, null, null, null, null, null, null); - if (controllerList.getItems().size() < 1) { - fail("Replication controller with name " + name + "could not be found"); - } - - V1ReplicationController replicationController = controllerList.getItems().get(0); - Integer availableReplicas = replicationController.getStatus().getAvailableReplicas(); - log.info("Available replicas for " + name + ": " + (availableReplicas == null ? 0 : availableReplicas)); - return availableReplicas != null && availableReplicas >= 1; - - } - - public void waitForDeployment(String deploymentName, String namespace) { - await().pollInterval(Duration.ofSeconds(1)) - .atMost(600, TimeUnit.SECONDS) - .until(() -> isDeploymentReady(deploymentName, namespace)); - } - - public void waitForIngress(String ingressName, String namespace) { - await().timeout(Duration.ofSeconds(90)).pollInterval(Duration.ofSeconds(3)).until(() -> { - try { - V1IngressLoadBalancerStatus status = networkingApi.readNamespacedIngress(ingressName, namespace, null) - .getStatus() - .getLoadBalancer(); - - if (status == null) { - log.info("ingress : " + ingressName + " not ready yet (loadbalancer not yet present)"); - return false; - } - - List loadBalancerIngress = status.getIngress(); - if (loadBalancerIngress == null) { - log.info("ingress : " + ingressName + " not ready yet (loadbalancer ingress not yet present)"); - return false; - } - - String ip = loadBalancerIngress.get(0).getIp(); - if (ip == null) { - log.info("ingress : " + ingressName + " not ready yet"); - return false; - } - - log.info("ingress : " + ingressName + " ready with ip : " + ip); - return true; - } - catch (ApiException e) { - if (e.getCode() == HttpURLConnection.HTTP_NOT_FOUND) { - return false; - } - throw new RuntimeException(e); - } - }); - } - - public void waitForDeploymentToBeDeleted(String deploymentName, String namespace) { - await().timeout(Duration.ofSeconds(90)).until(() -> { - try { - appsApi.readNamespacedDeployment(deploymentName, namespace, null); - return false; - } - catch (ApiException e) { - if (e.getCode() == HttpURLConnection.HTTP_NOT_FOUND) { - return true; - } - throw new RuntimeException(e); - } - }); - } - - public boolean isDeploymentReady(String deploymentName, String namespace) throws ApiException { - V1DeploymentList deployments = appsApi.listNamespacedDeployment(namespace, null, null, null, - "metadata.name=" + deploymentName, null, null, null, null, null, null, null); - if (deployments.getItems().size() < 1) { - fail("No deployments with the name " + deploymentName); - } - V1Deployment deployment = deployments.getItems().get(0); - Integer availableReplicas = deployment.getStatus().getAvailableReplicas(); - log.info("Available replicas for " + deploymentName + ": " - + (availableReplicas == null ? 0 : availableReplicas)); - return availableReplicas != null && availableReplicas >= 1; - } - - public void setUp(String namespace) throws Exception { - - V1ServiceAccount serviceAccount = getConfigK8sClientItServiceAccount(); - CheckedSupplier accountSupplier = () -> api - .readNamespacedServiceAccount(serviceAccount.getMetadata().getName(), namespace, null); - CheckedSupplier accountDefaulter = () -> api.createNamespacedServiceAccount(namespace, - serviceAccount, null, null, null, null); - notExistsHandler(accountSupplier, accountDefaulter); - - V1RoleBinding roleBinding = getConfigK8sClientItRoleBinding(); - notExistsHandler(() -> rbacApi.readNamespacedRoleBinding(roleBinding.getMetadata().getName(), namespace, null), - () -> rbacApi.createNamespacedRoleBinding(namespace, roleBinding, null, null, null, null)); - - V1Role role = getConfigK8sClientItRole(); - notExistsHandler(() -> rbacApi.readNamespacedRole(role.getMetadata().getName(), namespace, null), - () -> rbacApi.createNamespacedRole(namespace, role, null, null, null, null)); - } - - public void deleteNamespace(String name) throws Exception { - api.deleteNamespace(name, null, null, null, null, null, null); - - await().pollInterval(Duration.ofSeconds(1)) - .atMost(30, TimeUnit.SECONDS) - .until(() -> api.listNamespace(null, null, null, null, null, null, null, null, null, null, null) - .getItems() - .stream() - .noneMatch(x -> x.getMetadata().getName().equals(name))); - } - - public void setUpClusterWide(String serviceAccountNamespace, Set namespaces) throws Exception { - - V1ServiceAccount serviceAccount = getConfigK8sClientItClusterServiceAccount(); - CheckedSupplier accountSupplier = () -> api - .readNamespacedServiceAccount(serviceAccount.getMetadata().getName(), serviceAccountNamespace, null); - CheckedSupplier accountDefaulter = () -> api - .createNamespacedServiceAccount(serviceAccountNamespace, serviceAccount, null, null, null, null); - notExistsHandler(accountSupplier, accountDefaulter); - - V1ClusterRole clusterRole = getConfigK8sClientItClusterRole(); - notExistsHandler(() -> rbacApi.readClusterRole(clusterRole.getMetadata().getName(), null), - () -> rbacApi.createClusterRole(clusterRole, null, null, null, null)); - - V1RoleBinding roleBinding = getConfigK8sClientItClusterRoleBinding(); - namespaces.forEach(namespace -> { - roleBinding.getMetadata().setNamespace(namespace); - try { - notExistsHandler( - () -> rbacApi.readNamespacedRoleBinding(roleBinding.getMetadata().getName(), namespace, null), - () -> rbacApi.createNamespacedRoleBinding(namespace, roleBinding, null, null, null, null)); - } - catch (Exception e) { - throw new RuntimeException(e); - } - }); - - } - - public static V1ServiceAccount getConfigK8sClientItClusterServiceAccount() throws Exception { - return (V1ServiceAccount) K8SUtils.readYamlFromClasspath("cluster/service-account.yaml"); - } - - public static V1ClusterRole getConfigK8sClientItClusterRole() throws Exception { - return (V1ClusterRole) K8SUtils.readYamlFromClasspath("cluster/cluster-role.yaml"); - } - - public static V1RoleBinding getConfigK8sClientItClusterRoleBinding() throws Exception { - return (V1RoleBinding) K8SUtils.readYamlFromClasspath("cluster/role-binding.yaml"); - } - - public static V1ServiceAccount getConfigK8sClientItServiceAccount() throws Exception { - return (V1ServiceAccount) K8SUtils.readYamlFromClasspath("setup/service-account.yaml"); - } - - public static V1RoleBinding getConfigK8sClientItRoleBinding() throws Exception { - return (V1RoleBinding) K8SUtils.readYamlFromClasspath("setup/role-binding.yaml"); - } - - public static V1Role getConfigK8sClientItRole() throws Exception { - return (V1Role) K8SUtils.readYamlFromClasspath("setup/role.yaml"); - } - - public void deployWiremock(String namespace, boolean rootPath, K3sContainer container) throws Exception { - innerDeployWiremock(namespace, rootPath, container); - - // Check to make sure the wiremock deployment is ready - waitForDeployment(WIREMOCK_DEPLOYMENT_NAME, namespace); - - // Check to see if endpoint is ready - waitForEndpointReady(WIREMOCK_APP_NAME, namespace); - } - - /** - * this removes wiremock related manifests, but keeps the image loaded in the - * container. As such can be used across tests. - */ - public void cleanUpWiremock(String namespace) throws Exception { - appsApi.deleteCollectionNamespacedDeployment(namespace, null, null, null, - "metadata.name=" + WIREMOCK_DEPLOYMENT_NAME, null, null, null, null, null, null, null, null, null, - null); - - api.deleteNamespacedService(WIREMOCK_APP_NAME, namespace, null, null, null, null, null, null); - networkingApi.deleteNamespacedIngress("wiremock-ingress", namespace, null, null, null, null, null, null); - waitForDeploymentToBeDeleted(WIREMOCK_DEPLOYMENT_NAME, namespace); - } - - /** - * this one should be called once all tests in a suite are done, as it removes the - * image from a running container. - */ - public void removeWiremockImage() throws Exception { - V1Deployment wiremockDeployment = getWiremockDeployment(); - String wiremockImage = getImageFromDeployment(wiremockDeployment); - Commons.cleanUpDownloadedImage(wiremockImage); - } - - /** - * Gets the image from a Kubernetes Client deployment yaml. Assumes there is only one - * container defined in the deployment. - * @param deployment deployment yaml - * @return An array where the first item is the mage name and the second item is the - * tag - */ - public static String getImageFromDeployment(V1Deployment deployment) { - return deployment.getSpec().getTemplate().getSpec().getContainers().get(0).getImage(); - } - - /** - * Gets the image from a Fabric8 deployment yaml. Assumes there is only one container - * defined in the deployment. - * @param deployment deployment yaml - * @return An array where the first item is the mage name and the second item is the - * tag - */ - public static String getImageFromDeployment(Deployment deployment) { - return deployment.getSpec().getTemplate().getSpec().getContainers().get(0).getImage(); - } - - private void innerDeployWiremock(String namespace, boolean rootPath, K3sContainer container) throws Exception { - V1Deployment deployment = getWiremockDeployment(); - String[] image = getImageFromDeployment(deployment).split(":", 2); - Commons.pullImage(image[0], image[1], container); - Commons.loadImage(image[0], image[1], "wiremock", container); - appsApi.createNamespacedDeployment(namespace, getWiremockDeployment(), null, null, null, null); - api.createNamespacedService(namespace, getWiremockAppService(), null, null, null, null); - - V1Ingress ingress; - if (rootPath) { - ingress = getWiremockRootPathIngress(); - } - else { - ingress = getWiremockIngress(); - } - - networkingApi.createNamespacedIngress(namespace, ingress, null, null, null, null); - waitForIngress(ingress.getMetadata().getName(), namespace); - } - - private static V1Ingress getWiremockIngress() throws Exception { - return (V1Ingress) K8SUtils.readYamlFromClasspath("wiremock/wiremock-ingress.yaml"); - } - - private static V1Ingress getWiremockRootPathIngress() throws Exception { - return (V1Ingress) K8SUtils.readYamlFromClasspath("wiremock/wiremock-root-path-ingress.yaml"); - } - - private static V1Service getWiremockAppService() throws Exception { - return (V1Service) K8SUtils.readYamlFromClasspath("wiremock/wiremock-service.yaml"); - } - - private static V1Deployment getWiremockDeployment() throws Exception { - return (V1Deployment) K8SUtils.readYamlFromClasspath("wiremock/wiremock-deployment.yaml"); - } - - private static void notExistsHandler(CheckedSupplier callee, CheckedSupplier defaulter) throws Exception { - try { - callee.get(); - } - catch (Exception exception) { - if (exception instanceof ApiException apiException) { - if (apiException.getCode() == 404) { - defaulter.get(); - return; - } - } - throw new RuntimeException(exception); - } - } - - private interface CheckedSupplier { - - T get() throws Exception; - - } - -} From 9a3c4c740e22e42f204b3239ae75230a8e939b6c Mon Sep 17 00:00:00 2001 From: wind57 Date: Wed, 16 Oct 2024 12:51:48 +0300 Subject: [PATCH 03/10] clean --- .../discovery/Fabric8DiscoveryPodMetadataIT.java | 1 - .../fabric8/client/istio/Fabric8IstioIT.java | 1 - .../fabric8/client/reload/Fabric8EventReloadIT.java | 1 - .../watcher/KubernetesClientCatalogWatchIT.java | 1 - .../configuration/watcher/ActuatorRefreshIT.java | 1 - .../ActuatorRefreshMultipleNamespacesIT.java | 1 - .../discoveryclient/it/DiscoveryClientIT.java | 1 - .../KubernetesClientDiscoveryClientIT.java | 1 - ...ernetesClientDiscoverySelectiveNamespacesIT.java | 1 - .../apps/ConfigurationWatcherMultipleAppsIT.java | 1 - .../apps/ConfigurationWatcherMultipleAppIT.java | 1 - .../configmap/K8sClientConfigMapReloadIT.java | 1 - .../reload/secret/K8sClientSecretsReloadIT.java | 1 - .../integration/tests/commons/Commons.java | 13 ------------- 14 files changed, 26 deletions(-) diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-discovery/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/discovery/Fabric8DiscoveryPodMetadataIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-discovery/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/discovery/Fabric8DiscoveryPodMetadataIT.java index 7fec5fdb8a..8318512e34 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-discovery/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/discovery/Fabric8DiscoveryPodMetadataIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-discovery/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/discovery/Fabric8DiscoveryPodMetadataIT.java @@ -133,7 +133,6 @@ static void after() throws Exception { manifests(Phase.DELETE); Commons.cleanUp(IMAGE_NAME, K3S); - Commons.systemPrune(); } @Test diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-istio/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/istio/Fabric8IstioIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-istio/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/istio/Fabric8IstioIT.java index 7e6cdf18ff..b26fcb689d 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-istio/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/istio/Fabric8IstioIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-istio/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/istio/Fabric8IstioIT.java @@ -92,7 +92,6 @@ static void beforeAll() throws Exception { static void afterAll() throws Exception { util.deleteNamespace("istio-system"); Commons.cleanUp(IMAGE_NAME, K3S); - Commons.systemPrune(); } @AfterAll diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-reload/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/reload/Fabric8EventReloadIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-reload/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/reload/Fabric8EventReloadIT.java index 780ad9b644..ca3f2160c5 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-reload/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/reload/Fabric8EventReloadIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-reload/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/reload/Fabric8EventReloadIT.java @@ -84,7 +84,6 @@ static void afterAll() throws Exception { util.deleteNamespace("left"); util.deleteNamespace("right"); Commons.cleanUp(IMAGE_NAME, K3S); - Commons.systemPrune(); manifests(Phase.DELETE); } diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-catalog-watcher/src/test/java/org/springframework/cloud/kubernetes/k8s/client/catalog/watcher/KubernetesClientCatalogWatchIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-catalog-watcher/src/test/java/org/springframework/cloud/kubernetes/k8s/client/catalog/watcher/KubernetesClientCatalogWatchIT.java index 26f1ba3eed..e235b491fb 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-catalog-watcher/src/test/java/org/springframework/cloud/kubernetes/k8s/client/catalog/watcher/KubernetesClientCatalogWatchIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-catalog-watcher/src/test/java/org/springframework/cloud/kubernetes/k8s/client/catalog/watcher/KubernetesClientCatalogWatchIT.java @@ -90,7 +90,6 @@ static void afterAll() { util.deleteNamespace(NAMESPACE_A); util.deleteNamespace(NAMESPACE_B); app(Phase.DELETE); - Commons.systemPrune(); } @BeforeEach diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-configuration-watcher/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/ActuatorRefreshIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-configuration-watcher/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/ActuatorRefreshIT.java index 9e1119af98..9dda2f4953 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-configuration-watcher/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/ActuatorRefreshIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-configuration-watcher/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/ActuatorRefreshIT.java @@ -80,7 +80,6 @@ static void beforeAll() throws Exception { static void afterAll() throws Exception { configWatcher(Phase.DELETE); Commons.cleanUp(SPRING_CLOUD_K8S_CONFIG_WATCHER_APP_NAME, K3S); - Commons.systemPrune(); } @BeforeEach diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-configuration-watcher/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/ActuatorRefreshMultipleNamespacesIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-configuration-watcher/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/ActuatorRefreshMultipleNamespacesIT.java index 22c8d0976b..0924b15700 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-configuration-watcher/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/ActuatorRefreshMultipleNamespacesIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-configuration-watcher/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/ActuatorRefreshMultipleNamespacesIT.java @@ -84,7 +84,6 @@ static void afterAll() throws Exception { util.deleteNamespace(LEFT_NAMESPACE); util.deleteNamespace(RIGHT_NAMESPACE); Commons.cleanUp(SPRING_CLOUD_K8S_CONFIG_WATCHER_APP_NAME, K3S); - Commons.systemPrune(); } /** diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery-server/src/test/java/org/springframework/cloud/kubernetes/discoveryclient/it/DiscoveryClientIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery-server/src/test/java/org/springframework/cloud/kubernetes/discoveryclient/it/DiscoveryClientIT.java index 92806f1c6d..ef314d2399 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery-server/src/test/java/org/springframework/cloud/kubernetes/discoveryclient/it/DiscoveryClientIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery-server/src/test/java/org/springframework/cloud/kubernetes/discoveryclient/it/DiscoveryClientIT.java @@ -189,7 +189,6 @@ static void afterAll() throws Exception { discoveryServer(Phase.DELETE); discoveryClient(Phase.DELETE); - Commons.systemPrune(); } @Test diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery/src/test/java/org/springframework/cloud/kubernetes/k8s/client/discovery/KubernetesClientDiscoveryClientIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery/src/test/java/org/springframework/cloud/kubernetes/k8s/client/discovery/KubernetesClientDiscoveryClientIT.java index 9d64b02ac2..ee21b1f888 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery/src/test/java/org/springframework/cloud/kubernetes/k8s/client/discovery/KubernetesClientDiscoveryClientIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery/src/test/java/org/springframework/cloud/kubernetes/k8s/client/discovery/KubernetesClientDiscoveryClientIT.java @@ -93,7 +93,6 @@ static void beforeAll() throws Exception { static void afterAll() throws Exception { manifests(Phase.DELETE); Commons.cleanUp(IMAGE_NAME, K3S); - Commons.systemPrune(); } /** diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery/src/test/java/org/springframework/cloud/kubernetes/k8s/client/discovery/KubernetesClientDiscoverySelectiveNamespacesIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery/src/test/java/org/springframework/cloud/kubernetes/k8s/client/discovery/KubernetesClientDiscoverySelectiveNamespacesIT.java index c4e957b005..8210fa9267 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery/src/test/java/org/springframework/cloud/kubernetes/k8s/client/discovery/KubernetesClientDiscoverySelectiveNamespacesIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery/src/test/java/org/springframework/cloud/kubernetes/k8s/client/discovery/KubernetesClientDiscoverySelectiveNamespacesIT.java @@ -104,7 +104,6 @@ static void afterAll() throws Exception { util.deleteNamespace(NAMESPACE_A); util.deleteNamespace(NAMESPACE_B); manifests(Phase.DELETE); - Commons.systemPrune(); } /** 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-multiple-apps/kafka-configmap-test-app/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/multiple/apps/ConfigurationWatcherMultipleAppsIT.java index 0fdce32580..b430d0fc66 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-multiple-apps/kafka-configmap-test-app/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/multiple/apps/ConfigurationWatcherMultipleAppsIT.java @@ -89,7 +89,6 @@ static void afterAll() throws Exception { Commons.cleanUp(SPRING_CLOUD_K8S_CONFIG_WATCHER_APP_NAME, K3S); Commons.cleanUp(CONFIG_WATCHER_APP_A_IMAGE, K3S); Commons.cleanUp(CONFIG_WATCHER_APP_B_IMAGE, K3S); - Commons.systemPrune(); } @BeforeEach diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-rabbitmq-secret-reload-multiple-apps/rabbitmq-secret-test-app/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/multiple/apps/ConfigurationWatcherMultipleAppIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-rabbitmq-secret-reload-multiple-apps/rabbitmq-secret-test-app/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/multiple/apps/ConfigurationWatcherMultipleAppIT.java index 5266a869b1..c1a29515b9 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-rabbitmq-secret-reload-multiple-apps/rabbitmq-secret-test-app/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/multiple/apps/ConfigurationWatcherMultipleAppIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-rabbitmq-secret-reload-multiple-apps/rabbitmq-secret-test-app/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/multiple/apps/ConfigurationWatcherMultipleAppIT.java @@ -88,7 +88,6 @@ static void afterAll() throws Exception { Commons.cleanUp(SPRING_CLOUD_K8S_CONFIG_WATCHER_APP_NAME, K3S); Commons.cleanUp(CONFIG_WATCHER_APP_A_IMAGE, K3S); Commons.cleanUp(CONFIG_WATCHER_APP_B_IMAGE, K3S); - Commons.systemPrune(); } @BeforeEach diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-reload/src/test/java/org/springframework/cloud/kubernetes/k8s/client/reload/configmap/K8sClientConfigMapReloadIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-reload/src/test/java/org/springframework/cloud/kubernetes/k8s/client/reload/configmap/K8sClientConfigMapReloadIT.java index b283ab8687..e491cc048c 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-reload/src/test/java/org/springframework/cloud/kubernetes/k8s/client/reload/configmap/K8sClientConfigMapReloadIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-reload/src/test/java/org/springframework/cloud/kubernetes/k8s/client/reload/configmap/K8sClientConfigMapReloadIT.java @@ -91,7 +91,6 @@ static void afterAll() throws Exception { util.deleteNamespace("left"); util.deleteNamespace("right"); Commons.cleanUp(IMAGE_NAME, K3S); - Commons.systemPrune(); } /** diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-reload/src/test/java/org/springframework/cloud/kubernetes/k8s/client/reload/secret/K8sClientSecretsReloadIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-reload/src/test/java/org/springframework/cloud/kubernetes/k8s/client/reload/secret/K8sClientSecretsReloadIT.java index db09ca3bbf..15efbbe1b5 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-reload/src/test/java/org/springframework/cloud/kubernetes/k8s/client/reload/secret/K8sClientSecretsReloadIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-reload/src/test/java/org/springframework/cloud/kubernetes/k8s/client/reload/secret/K8sClientSecretsReloadIT.java @@ -78,7 +78,6 @@ static void setup() throws Exception { static void afterAll() throws Exception { configK8sClientIt(Phase.DELETE); Commons.cleanUp(IMAGE_NAME, K3S); - Commons.systemPrune(); } @Test diff --git a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java index a36d64b656..4ab4f4db39 100644 --- a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java +++ b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java @@ -232,19 +232,6 @@ public static String processExecResult(Container.ExecResult execResult) { return execResult.getStdout(); } - /** - * equivalent of 'docker system prune', but for crictl. - */ - public static void systemPrune() { - try { - CONTAINER.execInContainer("sh", "-c", - "crictl ps -a | grep -v Running | awk '{print $1}' | xargs crictl rm && crictl rmi --prune"); - } - catch (Exception e) { - throw new RuntimeException(e); - } - } - public static String pomVersion() { try (InputStream in = new ClassPathResource(KUBERNETES_VERSION_FILE).getInputStream()) { String version = StreamUtils.copyToString(in, StandardCharsets.UTF_8); From 926bb1c61b32f2158eac5ff2a2002a936a6a3206 Mon Sep 17 00:00:00 2001 From: wind57 Date: Wed, 16 Oct 2024 12:54:39 +0300 Subject: [PATCH 04/10] clean --- .../cloud/kubernetes/integration/tests/commons/Commons.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java index 4ab4f4db39..57d0eb08c4 100644 --- a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java +++ b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java @@ -198,10 +198,6 @@ public static void cleanUp(String image, K3sContainer container) throws Exceptio container.execInContainer("rm", TEMP_FOLDER + "/" + image + ".tar"); } - public static void cleanUpDownloadedImage(String image) throws Exception { - CONTAINER.execInContainer("crictl", "rmi", image); - } - /** * validates that the provided image does exist in the local docker registry. */ From bf2a1b10aa7fab7c86e8b49d7cacfc5314781e3d Mon Sep 17 00:00:00 2001 From: wind57 Date: Wed, 16 Oct 2024 12:56:47 +0300 Subject: [PATCH 05/10] clean --- .../cloud/kubernetes/integration/tests/commons/Commons.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java index 57d0eb08c4..cc3d8d1aba 100644 --- a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java +++ b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java @@ -156,7 +156,7 @@ public static void load(K3sContainer container, String tarName, String imageName .findFirst(); if (found.isPresent()) { LOG.info("running in github actions, will load from : " + TMP_IMAGES + " tar : " + found.get()); - Commons.loadImageFromPath(found.get(), container); + loadImageFromPath(found.get(), container); return; } else { @@ -174,8 +174,8 @@ public static void load(K3sContainer container, String tarName, String imageName try { LOG.info("no tars found, will resort to pulling the image"); LOG.info("using : " + imageVersion + " for : " + imageNameForDownload); - Commons.pullImage(imageNameForDownload, imageVersion, container); - Commons.loadImage(imageNameForDownload, imageVersion, tarName, container); + pullImage(imageNameForDownload, imageVersion, container); + loadImage(imageNameForDownload, imageVersion, tarName, container); } catch (Exception e) { throw new RuntimeException(e); From 435c173222c9254d9f1ffc5740c71f0ae5442fcb Mon Sep 17 00:00:00 2001 From: wind57 Date: Wed, 16 Oct 2024 12:58:13 +0300 Subject: [PATCH 06/10] clean --- .../fabric8/client/istio/Fabric8IstioIT.java | 11 +++++++++-- .../kubernetes/integration/tests/commons/Commons.java | 8 -------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-istio/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/istio/Fabric8IstioIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-istio/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/istio/Fabric8IstioIT.java index b26fcb689d..f3e3cdc633 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-istio/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/istio/Fabric8IstioIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-istio/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/istio/Fabric8IstioIT.java @@ -29,6 +29,7 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import org.testcontainers.containers.Container; import org.testcontainers.k3s.K3sContainer; import reactor.netty.http.client.HttpClient; import reactor.util.retry.Retry; @@ -42,8 +43,6 @@ import org.springframework.http.client.reactive.ReactorClientHttpConnector; import org.springframework.web.reactive.function.client.WebClient; -import static org.springframework.cloud.kubernetes.integration.tests.commons.Commons.processExecResult; - /** * @author wind57 */ @@ -156,4 +155,12 @@ private static String istioctlPodName() { } } + private static String processExecResult(Container.ExecResult execResult) { + if (execResult.getExitCode() != 0) { + throw new RuntimeException("stdout=" + execResult.getStdout() + "\n" + "stderr=" + execResult.getStderr()); + } + + return execResult.getStdout(); + } + } diff --git a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java index cc3d8d1aba..a4772a9782 100644 --- a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java +++ b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java @@ -220,14 +220,6 @@ public static void pullImage(String image, String tag, K3sContainer container) t } - public static String processExecResult(Container.ExecResult execResult) { - if (execResult.getExitCode() != 0) { - throw new RuntimeException("stdout=" + execResult.getStdout() + "\n" + "stderr=" + execResult.getStderr()); - } - - return execResult.getStdout(); - } - public static String pomVersion() { try (InputStream in = new ClassPathResource(KUBERNETES_VERSION_FILE).getInputStream()) { String version = StreamUtils.copyToString(in, StandardCharsets.UTF_8); From a8e57f2d8b070191b8e2173f622921449e25e32f Mon Sep 17 00:00:00 2001 From: wind57 Date: Wed, 16 Oct 2024 13:05:30 +0300 Subject: [PATCH 07/10] clean --- .../Fabric8DiscoveryPodMetadataIT.java | 3 +- .../fabric8/client/istio/Fabric8IstioIT.java | 3 +- .../client/reload/Fabric8EventReloadIT.java | 3 +- .../watcher/ActuatorRefreshIT.java | 1 - .../ActuatorRefreshMultipleNamespacesIT.java | 3 +- .../discoveryclient/it/DiscoveryClientIT.java | 3 -- .../KubernetesClientDiscoveryClientIT.java | 3 +- ...sClientDiscoverySelectiveNamespacesIT.java | 4 +-- .../ConfigurationWatcherMultipleAppsIT.java | 8 ----- .../ConfigurationWatcherMultipleAppIT.java | 8 ----- .../configmap/K8sClientConfigMapReloadIT.java | 1 - .../secret/K8sClientSecretsReloadIT.java | 3 +- .../integration/tests/commons/Commons.java | 30 +++++++++---------- 13 files changed, 21 insertions(+), 52 deletions(-) diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-discovery/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/discovery/Fabric8DiscoveryPodMetadataIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-discovery/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/discovery/Fabric8DiscoveryPodMetadataIT.java index 8318512e34..d9e3dfe203 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-discovery/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/discovery/Fabric8DiscoveryPodMetadataIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-discovery/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/discovery/Fabric8DiscoveryPodMetadataIT.java @@ -117,7 +117,7 @@ static void beforeAll() throws Exception { } @AfterAll - static void after() throws Exception { + static void after() { util.wiremock(NAMESPACE, "/wiremock", Phase.DELETE, false); util.busybox(NAMESPACE, Phase.DELETE); @@ -132,7 +132,6 @@ static void after() throws Exception { util.deleteNamespace(NAMESPACE_RIGHT); manifests(Phase.DELETE); - Commons.cleanUp(IMAGE_NAME, K3S); } @Test diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-istio/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/istio/Fabric8IstioIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-istio/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/istio/Fabric8IstioIT.java index f3e3cdc633..ad66be0974 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-istio/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/istio/Fabric8IstioIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-istio/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/istio/Fabric8IstioIT.java @@ -88,9 +88,8 @@ static void beforeAll() throws Exception { } @AfterAll - static void afterAll() throws Exception { + static void afterAll() { util.deleteNamespace("istio-system"); - Commons.cleanUp(IMAGE_NAME, K3S); } @AfterAll diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-reload/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/reload/Fabric8EventReloadIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-reload/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/reload/Fabric8EventReloadIT.java index ca3f2160c5..13bda6d496 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-reload/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/reload/Fabric8EventReloadIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-fabric8-client-reload/src/test/java/org/springframework/cloud/kubernetes/fabric8/client/reload/Fabric8EventReloadIT.java @@ -80,10 +80,9 @@ static void beforeAll() throws Exception { } @AfterAll - static void afterAll() throws Exception { + static void afterAll() { util.deleteNamespace("left"); util.deleteNamespace("right"); - Commons.cleanUp(IMAGE_NAME, K3S); manifests(Phase.DELETE); } diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-configuration-watcher/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/ActuatorRefreshIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-configuration-watcher/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/ActuatorRefreshIT.java index 9dda2f4953..2e8dd55bd8 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-configuration-watcher/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/ActuatorRefreshIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-configuration-watcher/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/ActuatorRefreshIT.java @@ -79,7 +79,6 @@ static void beforeAll() throws Exception { @AfterAll static void afterAll() throws Exception { configWatcher(Phase.DELETE); - Commons.cleanUp(SPRING_CLOUD_K8S_CONFIG_WATCHER_APP_NAME, K3S); } @BeforeEach diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-configuration-watcher/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/ActuatorRefreshMultipleNamespacesIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-configuration-watcher/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/ActuatorRefreshMultipleNamespacesIT.java index 0924b15700..d09a9028bb 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-configuration-watcher/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/ActuatorRefreshMultipleNamespacesIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-configuration-watcher/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/ActuatorRefreshMultipleNamespacesIT.java @@ -77,13 +77,12 @@ static void beforeAll() throws Exception { } @AfterAll - static void afterAll() throws Exception { + static void afterAll() { configWatcher(Phase.DELETE); util.wiremock(DEFAULT_NAMESPACE, "/", Phase.DELETE); util.deleteClusterWide(DEFAULT_NAMESPACE, Set.of(DEFAULT_NAMESPACE, LEFT_NAMESPACE, RIGHT_NAMESPACE)); util.deleteNamespace(LEFT_NAMESPACE); util.deleteNamespace(RIGHT_NAMESPACE); - Commons.cleanUp(SPRING_CLOUD_K8S_CONFIG_WATCHER_APP_NAME, K3S); } /** diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery-server/src/test/java/org/springframework/cloud/kubernetes/discoveryclient/it/DiscoveryClientIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery-server/src/test/java/org/springframework/cloud/kubernetes/discoveryclient/it/DiscoveryClientIT.java index ef314d2399..cf13a089ef 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery-server/src/test/java/org/springframework/cloud/kubernetes/discoveryclient/it/DiscoveryClientIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery-server/src/test/java/org/springframework/cloud/kubernetes/discoveryclient/it/DiscoveryClientIT.java @@ -178,9 +178,6 @@ static void beforeAll() throws Exception { static void afterAll() throws Exception { rbacApi.deleteClusterRoleBinding(clusterRoleBinding.getMetadata().getName(), null, null, null, null, null, null); - Commons.cleanUp(DISCOVERY_SERVER_APP_NAME, K3S); - Commons.cleanUp(SPRING_CLOUD_K8S_DISCOVERY_CLIENT_APP_NAME, K3S); - util.wiremock(NAMESPACE_LEFT, "/wiremock-" + NAMESPACE_LEFT, Phase.DELETE, false); util.wiremock(NAMESPACE_RIGHT, "/wiremock-" + NAMESPACE_RIGHT, Phase.DELETE, false); diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery/src/test/java/org/springframework/cloud/kubernetes/k8s/client/discovery/KubernetesClientDiscoveryClientIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery/src/test/java/org/springframework/cloud/kubernetes/k8s/client/discovery/KubernetesClientDiscoveryClientIT.java index ee21b1f888..470b381c1e 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery/src/test/java/org/springframework/cloud/kubernetes/k8s/client/discovery/KubernetesClientDiscoveryClientIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery/src/test/java/org/springframework/cloud/kubernetes/k8s/client/discovery/KubernetesClientDiscoveryClientIT.java @@ -90,9 +90,8 @@ static void beforeAll() throws Exception { } @AfterAll - static void afterAll() throws Exception { + static void afterAll() { manifests(Phase.DELETE); - Commons.cleanUp(IMAGE_NAME, K3S); } /** diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery/src/test/java/org/springframework/cloud/kubernetes/k8s/client/discovery/KubernetesClientDiscoverySelectiveNamespacesIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery/src/test/java/org/springframework/cloud/kubernetes/k8s/client/discovery/KubernetesClientDiscoverySelectiveNamespacesIT.java index 8210fa9267..ecb9513df7 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery/src/test/java/org/springframework/cloud/kubernetes/k8s/client/discovery/KubernetesClientDiscoverySelectiveNamespacesIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery/src/test/java/org/springframework/cloud/kubernetes/k8s/client/discovery/KubernetesClientDiscoverySelectiveNamespacesIT.java @@ -94,9 +94,7 @@ static void beforeAll() throws Exception { } @AfterAll - static void afterAll() throws Exception { - Commons.cleanUp(IMAGE_NAME, K3S); - + static void afterAll() { util.wiremock(NAMESPACE, "/wiremock", Phase.DELETE, false); util.wiremock(NAMESPACE_A, "/wiremock", Phase.DELETE, false); util.wiremock(NAMESPACE_B, "/wiremock", Phase.DELETE, false); 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-multiple-apps/kafka-configmap-test-app/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/multiple/apps/ConfigurationWatcherMultipleAppsIT.java index b430d0fc66..72a20ab69e 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-multiple-apps/kafka-configmap-test-app/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/multiple/apps/ConfigurationWatcherMultipleAppsIT.java @@ -24,7 +24,6 @@ import io.kubernetes.client.openapi.models.V1Deployment; import io.kubernetes.client.openapi.models.V1Ingress; import io.kubernetes.client.openapi.models.V1Service; -import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; @@ -84,13 +83,6 @@ static void beforeAll() throws Exception { util.setUp(NAMESPACE); } - @AfterAll - static void afterAll() throws Exception { - Commons.cleanUp(SPRING_CLOUD_K8S_CONFIG_WATCHER_APP_NAME, K3S); - Commons.cleanUp(CONFIG_WATCHER_APP_A_IMAGE, K3S); - Commons.cleanUp(CONFIG_WATCHER_APP_B_IMAGE, K3S); - } - @BeforeEach void setup() { util.kafka(NAMESPACE, Phase.CREATE); diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-rabbitmq-secret-reload-multiple-apps/rabbitmq-secret-test-app/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/multiple/apps/ConfigurationWatcherMultipleAppIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-rabbitmq-secret-reload-multiple-apps/rabbitmq-secret-test-app/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/multiple/apps/ConfigurationWatcherMultipleAppIT.java index c1a29515b9..ca5aa5f6e2 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-rabbitmq-secret-reload-multiple-apps/rabbitmq-secret-test-app/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/multiple/apps/ConfigurationWatcherMultipleAppIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-rabbitmq-secret-reload-multiple-apps/rabbitmq-secret-test-app/src/test/java/org/springframework/cloud/kubernetes/configuration/watcher/multiple/apps/ConfigurationWatcherMultipleAppIT.java @@ -24,7 +24,6 @@ import io.kubernetes.client.openapi.models.V1Secret; import io.kubernetes.client.openapi.models.V1SecretBuilder; import io.kubernetes.client.openapi.models.V1Service; -import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; @@ -83,13 +82,6 @@ static void beforeAll() throws Exception { util.setUp(NAMESPACE); } - @AfterAll - static void afterAll() throws Exception { - Commons.cleanUp(SPRING_CLOUD_K8S_CONFIG_WATCHER_APP_NAME, K3S); - Commons.cleanUp(CONFIG_WATCHER_APP_A_IMAGE, K3S); - Commons.cleanUp(CONFIG_WATCHER_APP_B_IMAGE, K3S); - } - @BeforeEach void setup() { util.rabbitMq(NAMESPACE, Phase.CREATE); diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-reload/src/test/java/org/springframework/cloud/kubernetes/k8s/client/reload/configmap/K8sClientConfigMapReloadIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-reload/src/test/java/org/springframework/cloud/kubernetes/k8s/client/reload/configmap/K8sClientConfigMapReloadIT.java index e491cc048c..31bb64f1dd 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-reload/src/test/java/org/springframework/cloud/kubernetes/k8s/client/reload/configmap/K8sClientConfigMapReloadIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-reload/src/test/java/org/springframework/cloud/kubernetes/k8s/client/reload/configmap/K8sClientConfigMapReloadIT.java @@ -90,7 +90,6 @@ static void afterAll() throws Exception { manifests(Phase.DELETE); util.deleteNamespace("left"); util.deleteNamespace("right"); - Commons.cleanUp(IMAGE_NAME, K3S); } /** diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-reload/src/test/java/org/springframework/cloud/kubernetes/k8s/client/reload/secret/K8sClientSecretsReloadIT.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-reload/src/test/java/org/springframework/cloud/kubernetes/k8s/client/reload/secret/K8sClientSecretsReloadIT.java index 15efbbe1b5..91f83032b5 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-reload/src/test/java/org/springframework/cloud/kubernetes/k8s/client/reload/secret/K8sClientSecretsReloadIT.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-reload/src/test/java/org/springframework/cloud/kubernetes/k8s/client/reload/secret/K8sClientSecretsReloadIT.java @@ -75,9 +75,8 @@ static void setup() throws Exception { } @AfterAll - static void afterAll() throws Exception { + static void afterAll() { configK8sClientIt(Phase.DELETE); - Commons.cleanUp(IMAGE_NAME, K3S); } @Test diff --git a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java index a4772a9782..4c12593ca5 100644 --- a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java +++ b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java @@ -120,6 +120,9 @@ public static void assertReloadLogStatements(String left, String right, String a } + /** + * create a tar, copy it in the running k3s and load this tar as an image. + */ public static void loadImage(String image, String tag, String tarName, K3sContainer container) throws Exception { // save image try (SaveImageCmd saveImageCmd = container.getDockerClient().saveImageCmd(image)) { @@ -182,22 +185,6 @@ public static void load(K3sContainer container, String tarName, String imageName } } - private static void loadImageFromPath(String tarName, K3sContainer container) { - await().atMost(Duration.ofMinutes(2)).pollInterval(Duration.ofSeconds(1)).until(() -> { - Container.ExecResult result = container.execInContainer("ctr", "i", "import", TMP_IMAGES + "/" + tarName); - boolean noErrors = result.getStderr() == null || result.getStderr().isEmpty(); - if (!noErrors) { - LOG.info("error is : " + result.getStderr()); - } - return noErrors; - }); - } - - public static void cleanUp(String image, K3sContainer container) throws Exception { - container.execInContainer("crictl", "rmi", "docker.io/springcloud/" + image + ":" + pomVersion()); - container.execInContainer("rm", TEMP_FOLDER + "/" + image + ".tar"); - } - /** * validates that the provided image does exist in the local docker registry. */ @@ -261,4 +248,15 @@ public static void waitForLogStatement(String message, K3sContainer k3sContainer } + private static void loadImageFromPath(String tarName, K3sContainer container) { + await().atMost(Duration.ofMinutes(2)).pollInterval(Duration.ofSeconds(1)).until(() -> { + Container.ExecResult result = container.execInContainer("ctr", "i", "import", TMP_IMAGES + "/" + tarName); + boolean noErrors = result.getStderr() == null || result.getStderr().isEmpty(); + if (!noErrors) { + LOG.info("error is : " + result.getStderr()); + } + return noErrors; + }); + } + } From 9157bb231dd6f080c53070ff319201d1f329f4ad Mon Sep 17 00:00:00 2001 From: wind57 Date: Wed, 16 Oct 2024 13:15:27 +0300 Subject: [PATCH 08/10] clean --- .../integration/tests/commons/Commons.java | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java index 4c12593ca5..39cbfeaf87 100644 --- a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java +++ b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java @@ -59,6 +59,23 @@ */ public final class Commons { + private static String POM_VERSION; + + static { + try (InputStream in = new ClassPathResource(KUBERNETES_VERSION_FILE).getInputStream()) { + String version = StreamUtils.copyToString(in, StandardCharsets.UTF_8); + if (StringUtils.hasText(version)) { + version = version.trim(); + } + POM_VERSION = version; + } + catch (IOException e) { + ReflectionUtils.rethrowRuntimeException(e); + } + // not reachable since exception rethrown at runtime + POM_VERSION = null; + } + private static final Log LOG = LogFactory.getLog(Commons.class); private Commons() { @@ -204,22 +221,10 @@ public static void pullImage(String image, String tag, K3sContainer container) t try (PullImageCmd pullImageCmd = container.getDockerClient().pullImageCmd(image)) { pullImageCmd.withTag(tag).start().awaitCompletion(); } - } public static String pomVersion() { - try (InputStream in = new ClassPathResource(KUBERNETES_VERSION_FILE).getInputStream()) { - String version = StreamUtils.copyToString(in, StandardCharsets.UTF_8); - if (StringUtils.hasText(version)) { - version = version.trim(); - } - return version; - } - catch (IOException e) { - ReflectionUtils.rethrowRuntimeException(e); - } - // not reachable since exception rethrown at runtime - return null; + return POM_VERSION; } /** From 0a39149a67b2b7009139dbe920a9401046afc05e Mon Sep 17 00:00:00 2001 From: wind57 Date: Wed, 16 Oct 2024 19:07:28 +0300 Subject: [PATCH 09/10] fix test --- .../integration/tests/commons/Commons.java | 29 ++++++++----------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java index 39cbfeaf87..7efad72223 100644 --- a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java +++ b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java @@ -17,7 +17,6 @@ package org.springframework.cloud.kubernetes.integration.tests.commons; import java.io.File; -import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.nio.file.Files; @@ -41,7 +40,6 @@ import org.testcontainers.k3s.K3sContainer; import org.springframework.core.io.ClassPathResource; -import org.springframework.util.ReflectionUtils; import org.springframework.util.StreamUtils; import org.springframework.util.StringUtils; @@ -61,21 +59,6 @@ public final class Commons { private static String POM_VERSION; - static { - try (InputStream in = new ClassPathResource(KUBERNETES_VERSION_FILE).getInputStream()) { - String version = StreamUtils.copyToString(in, StandardCharsets.UTF_8); - if (StringUtils.hasText(version)) { - version = version.trim(); - } - POM_VERSION = version; - } - catch (IOException e) { - ReflectionUtils.rethrowRuntimeException(e); - } - // not reachable since exception rethrown at runtime - POM_VERSION = null; - } - private static final Log LOG = LogFactory.getLog(Commons.class); private Commons() { @@ -224,6 +207,18 @@ public static void pullImage(String image, String tag, K3sContainer container) t } public static String pomVersion() { + if (POM_VERSION == null) { + try (InputStream in = new ClassPathResource(KUBERNETES_VERSION_FILE).getInputStream()) { + String version = StreamUtils.copyToString(in, StandardCharsets.UTF_8); + if (StringUtils.hasText(version)) { + POM_VERSION = version.trim(); + } + } + catch(Exception e) { + throw new RuntimeException(e); + } + } + return POM_VERSION; } From 00cf440b3d323e5d8ff657092387a1a241f47403 Mon Sep 17 00:00:00 2001 From: wind57 Date: Wed, 16 Oct 2024 19:09:52 +0300 Subject: [PATCH 10/10] checkstyle --- .../cloud/kubernetes/integration/tests/commons/Commons.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java index 7efad72223..50a3819b63 100644 --- a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java +++ b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/Commons.java @@ -214,7 +214,7 @@ public static String pomVersion() { POM_VERSION = version.trim(); } } - catch(Exception e) { + catch (Exception e) { throw new RuntimeException(e); } }