From 832d9437fac7c92be635390714cb3cc40a6a3ca7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?= Date: Tue, 21 Nov 2023 09:32:09 -0600 Subject: [PATCH] Register default network alias using ContainerDef (#7861) Changes in 1dba8d1 doesn't register a default network alias when implementing the new `ContainerDef`. This impacts to kafka and mongodb modules. Fixes #7823 --- .../containers/GenericContainer.java | 5 +- .../containers/GenericContainerTest.java | 52 +++++++++++++++++++ 2 files changed, 54 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/testcontainers/containers/GenericContainer.java b/core/src/main/java/org/testcontainers/containers/GenericContainer.java index 4cae19864ea..2324b44b004 100644 --- a/core/src/main/java/org/testcontainers/containers/GenericContainer.java +++ b/core/src/main/java/org/testcontainers/containers/GenericContainer.java @@ -215,9 +215,7 @@ public class GenericContainer> private ContainerDef containerDef; ContainerDef createContainerDef() { - ContainerDef def = new ContainerDef(); - def.addNetworkAlias("tc-" + Base58.randomString(8)); - return def; + return new ContainerDef(); } ContainerDef getContainerDef() { @@ -242,6 +240,7 @@ public GenericContainer(@NonNull final DockerImageName dockerImageName) { public GenericContainer(@NonNull final RemoteDockerImage image) { this.image = image; this.containerDef = createContainerDef(); + this.containerDef.addNetworkAlias("tc-" + Base58.randomString(8)); this.containerDef.setImage(image); } diff --git a/core/src/test/java/org/testcontainers/containers/GenericContainerTest.java b/core/src/test/java/org/testcontainers/containers/GenericContainerTest.java index 901f8a1eac1..8baf8d6e987 100644 --- a/core/src/test/java/org/testcontainers/containers/GenericContainerTest.java +++ b/core/src/test/java/org/testcontainers/containers/GenericContainerTest.java @@ -23,6 +23,7 @@ import org.testcontainers.images.RemoteDockerImage; import org.testcontainers.images.builder.ImageFromDockerfile; import org.testcontainers.images.builder.Transferable; +import org.testcontainers.utility.DockerImageName; import org.testcontainers.utility.MountableFile; import java.util.Arrays; @@ -231,6 +232,30 @@ public void shouldReturnTheProvidedImage() { assertThat(container.getImage().get()).isEqualTo("alpine:3.16"); } + @Test + public void shouldContainDefaultNetworkAlias() { + try (GenericContainer container = new GenericContainer<>("testcontainers/helloworld:1.1.0")) { + container.start(); + assertThat(container.getNetworkAliases()).hasSize(1); + } + } + + @Test + public void shouldContainDefaultNetworkAliasWhenUsingGenericContainer() { + try (HelloWorldContainer container = new HelloWorldContainer("testcontainers/helloworld:1.1.0")) { + container.start(); + assertThat(container.getNetworkAliases()).hasSize(1); + } + } + + @Test + public void shouldContainDefaultNetworkAliasWhenUsingContainerDef() { + try (TcHelloWorldContainer container = new TcHelloWorldContainer("testcontainers/helloworld:1.1.0")) { + container.start(); + assertThat(container.getNetworkAliases()).hasSize(1); + } + } + static class NoopStartupCheckStrategy extends StartupCheckStrategy { @Override @@ -267,4 +292,31 @@ protected void waitUntilReady() { throw new IllegalStateException("Nope!"); } } + + static class HelloWorldContainer extends GenericContainer { + + public HelloWorldContainer(String image) { + super(DockerImageName.parse(image)); + withExposedPorts(8080); + } + } + + static class TcHelloWorldContainer extends GenericContainer { + + public TcHelloWorldContainer(String image) { + super(DockerImageName.parse(image)); + } + + @Override + ContainerDef createContainerDef() { + return new HelloWorldContainerDef(); + } + + class HelloWorldContainerDef extends ContainerDef { + + HelloWorldContainerDef() { + addExposedTcpPort(8080); + } + } + } }