From 7e824ba146dc3cf9f4c73427b9c8ba01887282b2 Mon Sep 17 00:00:00 2001 From: erabii Date: Wed, 16 Oct 2024 15:43:44 +0300 Subject: [PATCH] clean (#1765) --- .../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 a2037445..a36d64b6 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.nio.file.StandardCopyOption; 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.StreamUtils; 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 final class Commons { * 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 final class Commons { .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 final class Commons { } - /** - * 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 00000000..c15171b6 --- /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 00000000..05c275db --- /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 cff24e87..bc1bfa43 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;