diff --git a/api-client/build.gradle.kts b/api-client/build.gradle.kts index dead50f2..245513ca 100644 --- a/api-client/build.gradle.kts +++ b/api-client/build.gradle.kts @@ -46,6 +46,7 @@ dependencies { testImplementation("org.apache.commons:commons-compress:1.21") testImplementation("de.gesellix:testutil:[2021-08-05T22-09-32,)") + testImplementation("de.gesellix:docker-registry:2022-02-27T13-38-00") } tasks.withType(Test::class) { diff --git a/api-client/src/test/java/de/gesellix/docker/remote/api/client/ImageApiIntegrationTest.java b/api-client/src/test/java/de/gesellix/docker/remote/api/client/ImageApiIntegrationTest.java index e59c1c6d..3bb64830 100644 --- a/api-client/src/test/java/de/gesellix/docker/remote/api/client/ImageApiIntegrationTest.java +++ b/api-client/src/test/java/de/gesellix/docker/remote/api/client/ImageApiIntegrationTest.java @@ -2,6 +2,7 @@ import com.squareup.moshi.Moshi; import de.gesellix.docker.builder.BuildContextBuilder; +import de.gesellix.docker.registry.DockerRegistry; import de.gesellix.docker.remote.api.BuildInfo; import de.gesellix.docker.remote.api.BuildPruneResponse; import de.gesellix.docker.remote.api.ContainerCreateRequest; @@ -16,7 +17,6 @@ import de.gesellix.docker.remote.api.ImageSummary; import de.gesellix.docker.remote.api.core.StreamCallback; import de.gesellix.docker.remote.api.testutil.DockerEngineAvailable; -import de.gesellix.docker.remote.api.testutil.DockerRegistry; import de.gesellix.docker.remote.api.testutil.HttpTestServer; import de.gesellix.docker.remote.api.testutil.InjectDockerClient; import de.gesellix.docker.remote.api.testutil.ManifestUtil; @@ -307,7 +307,7 @@ public void imageTag() { @Test public void imagePushToCustomRegistry() { - DockerRegistry registry = new DockerRegistry(engineApiClient); + DockerRegistry registry = new DockerRegistry(); registry.run(); String registryUrl = registry.url(); diff --git a/api-client/src/test/java/de/gesellix/docker/remote/api/testutil/DockerRegistry.java b/api-client/src/test/java/de/gesellix/docker/remote/api/testutil/DockerRegistry.java deleted file mode 100644 index 2fe04868..00000000 --- a/api-client/src/test/java/de/gesellix/docker/remote/api/testutil/DockerRegistry.java +++ /dev/null @@ -1,97 +0,0 @@ -package de.gesellix.docker.remote.api.testutil; - -import de.gesellix.docker.remote.api.ContainerCreateRequest; -import de.gesellix.docker.remote.api.ContainerCreateResponse; -import de.gesellix.docker.remote.api.ContainerInspectResponse; -import de.gesellix.docker.remote.api.EngineApiClient; -import de.gesellix.docker.remote.api.EngineApiClientImpl; -import de.gesellix.docker.remote.api.HostConfig; -import de.gesellix.docker.remote.api.PortBinding; - -import java.util.List; -import java.util.Objects; - -import static de.gesellix.docker.remote.api.testutil.Constants.LABEL_KEY; -import static de.gesellix.docker.remote.api.testutil.Constants.LABEL_VALUE; -import static java.util.Collections.emptyMap; -import static java.util.Collections.singletonMap; - -public class DockerRegistry { - - EngineApiClient engineApiClient; - String registryId; - - public static void main(String[] args) throws InterruptedException { - DockerRegistry registry = new DockerRegistry(new EngineApiClientImpl()); - registry.run(); - Thread.sleep(10000); - registry.rm(); - } - - public DockerRegistry(EngineApiClient engineApiClient) { - this.engineApiClient = engineApiClient; - } - - String getImage() { -// dockerClient.getSystemApi().systemInfo().getOsType() - boolean isWindows = Objects.requireNonNull(engineApiClient.getSystemApi().systemVersion().getOs()).equalsIgnoreCase("windows"); - return isWindows ? "gesellix/registry:2.7.1-windows" : "registry:2.7.1"; - } - - public void run() { - ContainerCreateRequest containerCreateRequest = new ContainerCreateRequest( - null, null, null, - false, false, false, - singletonMap("5000/tcp", emptyMap()), - false, null, null, - null, - null, - null, - null, - getImage(), - null, null, null, - null, null, - null, - singletonMap(LABEL_KEY, LABEL_VALUE), - null, null, - null, - new HostConfig(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, true, null, null, null, null, null, null, null, null, null, null, null, null, null), - null - ); - engineApiClient.getImageApi().imageCreate(containerCreateRequest.getImage().split(":")[0], null, null, containerCreateRequest.getImage().split(":")[1], null, null, null, null, null); - ContainerCreateResponse createResponse = engineApiClient.getContainerApi().containerCreate(containerCreateRequest, null); - engineApiClient.getContainerApi().containerStart(createResponse.getId(), null); - registryId = createResponse.getId(); - } - - String address() { -// String dockerHost = dockerClient.config.dockerHost -// return dockerHost.replaceAll("^(tcp|http|https)://", "").replaceAll(":\\d+\$", "") - -// def registryContainer = dockerClient.inspectContainer(registryId).content -// def portBinding = registryContainer.NetworkSettings.Ports["5000/tcp"] -// return portBinding[0].HostIp as String - - // 'localhost' allows to use the registry without TLS - return "localhost"; - } - - int port() { - ContainerInspectResponse registryContainer = engineApiClient.getContainerApi().containerInspect(registryId, false); - List portBinding = registryContainer.getNetworkSettings().getPorts().get("5000/tcp"); - return Integer.parseInt(portBinding.stream().findFirst().get().getHostPort()); - } - - public String url() { - return address() + ":" + port(); - } - - public void rm() { - engineApiClient.getContainerApi().containerStop(registryId, null); - engineApiClient.getContainerApi().containerWait(registryId, null); - engineApiClient.getContainerApi().containerDelete(registryId, null, null, null); - } -}