diff --git a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/CassandraContainer.java b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/CassandraContainer.java index a0dcedc224..e607ac9b57 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/CassandraContainer.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/CassandraContainer.java @@ -16,6 +16,7 @@ package org.springframework.boot.testsupport.testcontainers; +import java.time.Duration; import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; @@ -24,7 +25,7 @@ import com.datastax.driver.core.exceptions.NoHostAvailableException; import org.rnorth.ducttape.TimeoutException; import org.rnorth.ducttape.unreliables.Unreliables; import org.testcontainers.containers.GenericContainer; -import org.testcontainers.containers.wait.HostPortWaitStrategy; +import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy; /** * A {@link GenericContainer} for Cassandra. @@ -38,13 +39,20 @@ public class CassandraContainer extends Container { public CassandraContainer() { super("cassandra:3.11.1", PORT, (container) -> container - .waitingFor(new WaitStrategy()).withStartupAttempts(3)); + .waitingFor(new WaitStrategy(container.getMappedPort(PORT))) + .withStartupAttempts(3).withStartupTimeout(Duration.ofSeconds(60))); } private static class WaitStrategy extends HostPortWaitStrategy { + private final int port; + + private WaitStrategy(int port) { + this.port = port; + } + @Override - public void waitUntilReady(GenericContainer container) { + public void waitUntilReady() { super.waitUntilReady(); try { @@ -58,8 +66,7 @@ public class CassandraContainer extends Container { private Callable checkConnection() { return () -> { - try (Cluster cluster = Cluster.builder() - .withPort(container.getMappedPort(PORT)) + try (Cluster cluster = Cluster.builder().withPort(this.port) .addContactPoint("localhost").build()) { cluster.connect(); return true; diff --git a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/Neo4jContainer.java b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/Neo4jContainer.java index 7d6591425e..ac12e0170d 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/Neo4jContainer.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/Neo4jContainer.java @@ -24,7 +24,7 @@ import org.neo4j.ogm.session.SessionFactory; import org.rnorth.ducttape.TimeoutException; import org.rnorth.ducttape.unreliables.Unreliables; import org.testcontainers.containers.GenericContainer; -import org.testcontainers.containers.wait.HostPortWaitStrategy; +import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy; /** * A {@link GenericContainer} for Neo4J. @@ -34,19 +34,28 @@ import org.testcontainers.containers.wait.HostPortWaitStrategy; */ public class Neo4jContainer extends Container { + private static final int PORT = 7687; + public Neo4jContainer() { - super("neo4j:3.3.1", 7687, (container) -> container.waitingFor(new WaitStrategy()) - .withEnv("NEO4J_AUTH", "none")); + super("neo4j:3.3.1", PORT, + (container) -> container + .waitingFor(new WaitStrategy(container.getMappedPort(PORT))) + .withEnv("NEO4J_AUTH", "none")); } private static class WaitStrategy extends HostPortWaitStrategy { + private final int port; + + private WaitStrategy(int port) { + this.port = port; + } + @Override - public void waitUntilReady(GenericContainer container) { + public void waitUntilReady() { super.waitUntilReady(); Configuration configuration = new Configuration.Builder() - .uri("bolt://localhost:" + container.getMappedPort(7687)) - .build(); + .uri("bolt://localhost:" + this.port).build(); SessionFactory sessionFactory = new SessionFactory(configuration, "org.springframework.boot.test.autoconfigure.data.neo4j"); try {