diff --git a/spring-boot-project/spring-boot-autoconfigure/pom.xml b/spring-boot-project/spring-boot-autoconfigure/pom.xml
index eb446dedb1..497e4d8188 100755
--- a/spring-boot-project/spring-boot-autoconfigure/pom.xml
+++ b/spring-boot-project/spring-boot-autoconfigure/pom.xml
@@ -805,6 +805,11 @@
spring-security-test
test
+
+ org.testcontainers
+ cassandra
+ test
+
org.testcontainers
testcontainers
diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfigurationIntegrationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfigurationIntegrationTests.java
index 4ae1543fa4..20a9caffec 100644
--- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfigurationIntegrationTests.java
+++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfigurationIntegrationTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2012-2018 the original author or authors.
+ * Copyright 2012-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,12 +22,12 @@ import org.junit.After;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Test;
+import org.testcontainers.containers.CassandraContainer;
import org.springframework.boot.autoconfigure.AutoConfigurationPackages;
import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration;
import org.springframework.boot.autoconfigure.data.cassandra.city.City;
import org.springframework.boot.test.util.TestPropertyValues;
-import org.springframework.boot.testsupport.testcontainers.CassandraContainer;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.data.cassandra.config.CassandraSessionFactoryBean;
import org.springframework.data.cassandra.config.SchemaAction;
@@ -43,7 +43,7 @@ import static org.assertj.core.api.Assertions.assertThat;
public class CassandraDataAutoConfigurationIntegrationTests {
@ClassRule
- public static CassandraContainer cassandra = new CassandraContainer();
+ public static CassandraContainer> cassandra = new CassandraContainer<>();
private AnnotationConfigApplicationContext context;
@@ -51,7 +51,7 @@ public class CassandraDataAutoConfigurationIntegrationTests {
public void setUp() {
this.context = new AnnotationConfigApplicationContext();
TestPropertyValues
- .of("spring.data.cassandra.port=" + cassandra.getMappedPort(),
+ .of("spring.data.cassandra.port=" + cassandra.getFirstMappedPort(),
"spring.data.cassandra.read-timeout=24000",
"spring.data.cassandra.connect-timeout=10000")
.applyTo(this.context.getEnvironment());
@@ -96,7 +96,8 @@ public class CassandraDataAutoConfigurationIntegrationTests {
private void createTestKeyspaceIfNotExists() {
Cluster cluster = Cluster.builder().withoutJMXReporting()
- .withPort(cassandra.getMappedPort()).addContactPoint("localhost").build();
+ .withPort(cassandra.getFirstMappedPort()).addContactPoint("localhost")
+ .build();
try (Session session = cluster.connect()) {
session.execute("CREATE KEYSPACE IF NOT EXISTS boot_test"
+ " WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };");
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
deleted file mode 100644
index d0a26d3bd3..0000000000
--- a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/CassandraContainer.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2012-2018 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.boot.testsupport.testcontainers;
-
-import java.time.Duration;
-import java.util.concurrent.Callable;
-import java.util.concurrent.TimeUnit;
-
-import com.datastax.driver.core.Cluster;
-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.strategy.HostPortWaitStrategy;
-
-/**
- * A {@link GenericContainer} for Cassandra.
- *
- * @author Andy Wilkinson
- * @author Madhura Bhave
- */
-public class CassandraContainer extends Container {
-
- private static final int PORT = 9042;
-
- public CassandraContainer() {
- super("cassandra:3.11.1", PORT,
- (container) -> container.waitingFor(new WaitStrategy(container))
- .withStartupAttempts(5)
- .withStartupTimeout(Duration.ofSeconds(120)));
- }
-
- private static final class WaitStrategy extends HostPortWaitStrategy {
-
- private final GenericContainer> container;
-
- private WaitStrategy(GenericContainer> container) {
- this.container = container;
- }
-
- @Override
- public void waitUntilReady() {
- super.waitUntilReady();
-
- try {
- Unreliables.retryUntilTrue((int) this.startupTimeout.getSeconds(),
- TimeUnit.SECONDS, checkConnection());
- }
- catch (TimeoutException ex) {
- throw new IllegalStateException(ex);
- }
- }
-
- private Callable checkConnection() {
- return () -> {
- try (Cluster cluster = Cluster.builder().withoutJMXReporting()
- .withPort(this.container.getMappedPort(CassandraContainer.PORT))
- .addContactPoint("localhost").build()) {
- cluster.connect();
- return true;
- }
- catch (IllegalArgumentException | NoHostAvailableException ex) {
- return false;
- }
- };
- }
-
- }
-
-}