From c491f6aa543a4657e53578e8a0581ab375f8c105 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?= Date: Tue, 2 Jul 2024 18:36:26 -0600 Subject: [PATCH] Fix wait strategy definition (#8842) Currently, `waitingFor` takes precedence over `setWaitStrategy`. This was introduced with ContainerDef in 1dba8d1. This commit uses `waitStrategy` defined in GenericContainer for both methods `waitingFor` and `setWaitStrategy`. Fixes #8578 --- .../containers/GenericContainer.java | 2 +- .../containers/GenericContainerTest.java | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/testcontainers/containers/GenericContainer.java b/core/src/main/java/org/testcontainers/containers/GenericContainer.java index aff46f3b110..4246e620d5b 100644 --- a/core/src/main/java/org/testcontainers/containers/GenericContainer.java +++ b/core/src/main/java/org/testcontainers/containers/GenericContainer.java @@ -893,7 +893,7 @@ protected WaitStrategy getWaitStrategy() { @Override public void setWaitStrategy(WaitStrategy waitStrategy) { - this.containerDef.setWaitStrategy(waitStrategy); + this.waitStrategy = waitStrategy; } /** diff --git a/core/src/test/java/org/testcontainers/containers/GenericContainerTest.java b/core/src/test/java/org/testcontainers/containers/GenericContainerTest.java index a5b7fe15441..0ba06dd4ca8 100644 --- a/core/src/test/java/org/testcontainers/containers/GenericContainerTest.java +++ b/core/src/test/java/org/testcontainers/containers/GenericContainerTest.java @@ -20,6 +20,8 @@ import org.testcontainers.TestImages; import org.testcontainers.containers.startupcheck.StartupCheckStrategy; import org.testcontainers.containers.wait.strategy.AbstractWaitStrategy; +import org.testcontainers.containers.wait.strategy.LogMessageWaitStrategy; +import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.images.RemoteDockerImage; import org.testcontainers.images.builder.ImageFromDockerfile; import org.testcontainers.images.builder.Transferable; @@ -256,6 +258,21 @@ public void shouldContainDefaultNetworkAliasWhenUsingContainerDef() { } } + @Test + public void shouldRespectWaitStrategy() { + try ( + HelloWorldLogStrategyContainer container = new HelloWorldLogStrategyContainer( + "testcontainers/helloworld:1.1.0" + ) + ) { + container.setWaitStrategy(Wait.forLogMessage(".*Starting server on port.*", 1)); + container.start(); + assertThat((LogMessageWaitStrategy) container.getWaitStrategy()) + .extracting("regEx", "times") + .containsExactly(".*Starting server on port.*", 1); + } + } + static class NoopStartupCheckStrategy extends StartupCheckStrategy { @Override @@ -319,4 +336,13 @@ class HelloWorldContainerDef extends ContainerDef { } } } + + static class HelloWorldLogStrategyContainer extends GenericContainer { + + public HelloWorldLogStrategyContainer(String image) { + super(DockerImageName.parse(image)); + withExposedPorts(8080); + waitingFor(Wait.forLogMessage(".*Starting server on port.*", 2)); + } + } }