Commit c9b2afbd authored by Andy Wilkinson's avatar Andy Wilkinson

Merge branch '2.0.x'

parents 760b5e85 f39cea04
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
package org.springframework.boot.testsupport.testcontainers; package org.springframework.boot.testsupport.testcontainers;
import java.time.Duration;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -24,7 +25,7 @@ import com.datastax.driver.core.exceptions.NoHostAvailableException; ...@@ -24,7 +25,7 @@ import com.datastax.driver.core.exceptions.NoHostAvailableException;
import org.rnorth.ducttape.TimeoutException; import org.rnorth.ducttape.TimeoutException;
import org.rnorth.ducttape.unreliables.Unreliables; import org.rnorth.ducttape.unreliables.Unreliables;
import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.HostPortWaitStrategy; import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy;
/** /**
* A {@link GenericContainer} for Cassandra. * A {@link GenericContainer} for Cassandra.
...@@ -38,13 +39,20 @@ public class CassandraContainer extends Container { ...@@ -38,13 +39,20 @@ public class CassandraContainer extends Container {
public CassandraContainer() { public CassandraContainer() {
super("cassandra:3.11.1", PORT, (container) -> container 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 static class WaitStrategy extends HostPortWaitStrategy {
private final int port;
private WaitStrategy(int port) {
this.port = port;
}
@Override @Override
public void waitUntilReady(GenericContainer container) { public void waitUntilReady() {
super.waitUntilReady(); super.waitUntilReady();
try { try {
...@@ -58,8 +66,7 @@ public class CassandraContainer extends Container { ...@@ -58,8 +66,7 @@ public class CassandraContainer extends Container {
private Callable<Boolean> checkConnection() { private Callable<Boolean> checkConnection() {
return () -> { return () -> {
try (Cluster cluster = Cluster.builder() try (Cluster cluster = Cluster.builder().withPort(this.port)
.withPort(container.getMappedPort(PORT))
.addContactPoint("localhost").build()) { .addContactPoint("localhost").build()) {
cluster.connect(); cluster.connect();
return true; return true;
......
...@@ -24,7 +24,7 @@ import org.neo4j.ogm.session.SessionFactory; ...@@ -24,7 +24,7 @@ import org.neo4j.ogm.session.SessionFactory;
import org.rnorth.ducttape.TimeoutException; import org.rnorth.ducttape.TimeoutException;
import org.rnorth.ducttape.unreliables.Unreliables; import org.rnorth.ducttape.unreliables.Unreliables;
import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.HostPortWaitStrategy; import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy;
/** /**
* A {@link GenericContainer} for Neo4J. * A {@link GenericContainer} for Neo4J.
...@@ -34,19 +34,28 @@ import org.testcontainers.containers.wait.HostPortWaitStrategy; ...@@ -34,19 +34,28 @@ import org.testcontainers.containers.wait.HostPortWaitStrategy;
*/ */
public class Neo4jContainer extends Container { public class Neo4jContainer extends Container {
private static final int PORT = 7687;
public Neo4jContainer() { public Neo4jContainer() {
super("neo4j:3.3.1", 7687, (container) -> container.waitingFor(new WaitStrategy()) super("neo4j:3.3.1", PORT,
(container) -> container
.waitingFor(new WaitStrategy(container.getMappedPort(PORT)))
.withEnv("NEO4J_AUTH", "none")); .withEnv("NEO4J_AUTH", "none"));
} }
private static class WaitStrategy extends HostPortWaitStrategy { private static class WaitStrategy extends HostPortWaitStrategy {
private final int port;
private WaitStrategy(int port) {
this.port = port;
}
@Override @Override
public void waitUntilReady(GenericContainer container) { public void waitUntilReady() {
super.waitUntilReady(); super.waitUntilReady();
Configuration configuration = new Configuration.Builder() Configuration configuration = new Configuration.Builder()
.uri("bolt://localhost:" + container.getMappedPort(7687)) .uri("bolt://localhost:" + this.port).build();
.build();
SessionFactory sessionFactory = new SessionFactory(configuration, SessionFactory sessionFactory = new SessionFactory(configuration,
"org.springframework.boot.test.autoconfigure.data.neo4j"); "org.springframework.boot.test.autoconfigure.data.neo4j");
try { try {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment