diff --git a/docs/modules/databases/cassandra.md b/docs/modules/databases/cassandra.md index 72213dad4a7..5a062e4a059 100644 --- a/docs/modules/databases/cassandra.md +++ b/docs/modules/databases/cassandra.md @@ -6,12 +6,12 @@ This example connects to the Cassandra cluster: 1. Define a container: - [Container definition](../../../modules/cassandra/src/test/java/org/testcontainers/cassandra/CassandraDriver4Test.java) inside_block:container-definition + [Container definition](../../../modules/cassandra/src/test/java/org/testcontainers/cassandra/CassandraContainerTest.java) inside_block:container-definition 2. Build a `CqlSession`: - [Building CqlSession](../../../modules/cassandra/src/test/java/org/testcontainers/cassandra/CassandraDriver4Test.java) inside_block:cql-session + [Building CqlSession](../../../modules/cassandra/src/test/java/org/testcontainers/cassandra/CassandraContainerTest.java) inside_block:cql-session 3. Define a container with custom `cassandra.yaml` located in a directory `cassandra-auth-required-configuration`: diff --git a/modules/cassandra/src/test/java/org/testcontainers/cassandra/CassandraContainerTest.java b/modules/cassandra/src/test/java/org/testcontainers/cassandra/CassandraContainerTest.java index 4bf776b96c8..632966d1bb3 100644 --- a/modules/cassandra/src/test/java/org/testcontainers/cassandra/CassandraContainerTest.java +++ b/modules/cassandra/src/test/java/org/testcontainers/cassandra/CassandraContainerTest.java @@ -1,7 +1,6 @@ package org.testcontainers.cassandra; import com.datastax.oss.driver.api.core.CqlSession; -import com.datastax.oss.driver.api.core.CqlSessionBuilder; import com.datastax.oss.driver.api.core.cql.ResultSet; import com.datastax.oss.driver.api.core.cql.Row; import org.junit.Test; @@ -20,7 +19,10 @@ public class CassandraContainerTest { @Test public void testSimple() { - try (CassandraContainer cassandraContainer = new CassandraContainer(CASSANDRA_IMAGE)) { + try ( // container-definition { + CassandraContainer cassandraContainer = new CassandraContainer("cassandra:3.11.2") + // } + ) { cassandraContainer.start(); ResultSet resultSet = performQuery(cassandraContainer, BASIC_QUERY); assertThat(resultSet.wasApplied()).as("Query was applied").isTrue(); @@ -115,11 +117,15 @@ public void testInitScriptWithLegacyCassandra() { } private void testInitScript(CassandraContainer cassandraContainer, boolean withCredentials) { - ResultSet resultSet = performQuery( - cassandraContainer, - "SELECT * FROM keySpaceTest.catalog_category", - withCredentials - ); + String query = "SELECT * FROM keySpaceTest.catalog_category"; + ResultSet resultSet; + + if (withCredentials) { + resultSet = performQueryWithAuth(cassandraContainer, query); + } else { + resultSet = performQuery(cassandraContainer, query); + } + assertThat(resultSet.wasApplied()).as("Query was applied").isTrue(); Row row = resultSet.one(); assertThat(row.getLong(0)).as("Inserted row is in expected state").isEqualTo(1); @@ -127,18 +133,23 @@ private void testInitScript(CassandraContainer cassandraContainer, boolean withC } private ResultSet performQuery(CassandraContainer cassandraContainer, String cql) { - return performQuery(cassandraContainer, cql, false); + // cql-session { + final CqlSession cqlSession = CqlSession + .builder() + .addContactPoint(cassandraContainer.getContactPoint()) + .withLocalDatacenter(cassandraContainer.getLocalDatacenter()) + .build(); + // } + return performQuery(cqlSession, cql); } - private ResultSet performQuery(CassandraContainer cassandraContainer, String cql, boolean withCredentials) { - final CqlSessionBuilder cqlSessionBuilder = CqlSession + private ResultSet performQueryWithAuth(CassandraContainer cassandraContainer, String cql) { + final CqlSession cqlSession = CqlSession .builder() .addContactPoint(cassandraContainer.getContactPoint()) - .withLocalDatacenter(cassandraContainer.getLocalDatacenter()); - if (withCredentials) { - cqlSessionBuilder.withAuthCredentials(cassandraContainer.getUsername(), cassandraContainer.getPassword()); - } - final CqlSession cqlSession = cqlSessionBuilder.build(); + .withLocalDatacenter(cassandraContainer.getLocalDatacenter()) + .withAuthCredentials(cassandraContainer.getUsername(), cassandraContainer.getPassword()) + .build(); return performQuery(cqlSession, cql); } diff --git a/modules/cassandra/src/test/java/org/testcontainers/cassandra/CassandraServer4Test.java b/modules/cassandra/src/test/java/org/testcontainers/cassandra/CassandraServer4Test.java deleted file mode 100644 index b509a77e9e8..00000000000 --- a/modules/cassandra/src/test/java/org/testcontainers/cassandra/CassandraServer4Test.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.testcontainers.cassandra; - -import com.datastax.oss.driver.api.core.CqlIdentifier; -import com.datastax.oss.driver.api.core.CqlSession; -import com.datastax.oss.driver.api.core.metadata.schema.KeyspaceMetadata; -import org.junit.Rule; -import org.junit.Test; - -import static org.assertj.core.api.Assertions.assertThat; - -public class CassandraServer4Test { - - @Rule - public CassandraContainer cassandra = new CassandraContainer("cassandra:4.1.1"); - - @Test - public void testCassandraGetContactPoint() { - try ( - CqlSession session = CqlSession - .builder() - .addContactPoint(this.cassandra.getContactPoint()) - .withLocalDatacenter(this.cassandra.getLocalDatacenter()) - .build() - ) { - session.execute( - "CREATE KEYSPACE IF NOT EXISTS test WITH replication = \n" + - "{'class':'SimpleStrategy','replication_factor':'1'};" - ); - - KeyspaceMetadata keyspace = session.getMetadata().getKeyspaces().get(CqlIdentifier.fromCql("test")); - - assertThat(keyspace).as("test keyspace created").isNotNull(); - } - } -} diff --git a/modules/cassandra/src/test/java/org/testcontainers/cassandra/CassandraServer5Test.java b/modules/cassandra/src/test/java/org/testcontainers/cassandra/CassandraServer5Test.java deleted file mode 100644 index d4e1c858382..00000000000 --- a/modules/cassandra/src/test/java/org/testcontainers/cassandra/CassandraServer5Test.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.testcontainers.cassandra; - -import com.datastax.oss.driver.api.core.CqlIdentifier; -import com.datastax.oss.driver.api.core.CqlSession; -import com.datastax.oss.driver.api.core.metadata.schema.KeyspaceMetadata; -import org.junit.Rule; -import org.junit.Test; - -import static org.assertj.core.api.Assertions.assertThat; - -public class CassandraServer5Test { - - @Rule - public CassandraContainer cassandra = new CassandraContainer("cassandra:5"); - - @Test - public void testCassandraGetContactPoint() { - try ( - CqlSession session = CqlSession - .builder() - .addContactPoint(this.cassandra.getContactPoint()) - .withLocalDatacenter(this.cassandra.getLocalDatacenter()) - .build() - ) { - session.execute( - "CREATE KEYSPACE IF NOT EXISTS test WITH replication = \n" + - "{'class':'SimpleStrategy','replication_factor':'1'};" - ); - - KeyspaceMetadata keyspace = session.getMetadata().getKeyspaces().get(CqlIdentifier.fromCql("test")); - - assertThat(keyspace).as("test keyspace created").isNotNull(); - } - } -} diff --git a/modules/cassandra/src/test/java/org/testcontainers/cassandra/CassandraDriver4Test.java b/modules/cassandra/src/test/java/org/testcontainers/cassandra/CompatibleCassandraImageTest.java similarity index 61% rename from modules/cassandra/src/test/java/org/testcontainers/cassandra/CassandraDriver4Test.java rename to modules/cassandra/src/test/java/org/testcontainers/cassandra/CompatibleCassandraImageTest.java index 5e1b682e878..868e11c881e 100644 --- a/modules/cassandra/src/test/java/org/testcontainers/cassandra/CassandraDriver4Test.java +++ b/modules/cassandra/src/test/java/org/testcontainers/cassandra/CompatibleCassandraImageTest.java @@ -3,29 +3,38 @@ import com.datastax.oss.driver.api.core.CqlIdentifier; import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.metadata.schema.KeyspaceMetadata; -import org.junit.Rule; import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; import static org.assertj.core.api.Assertions.assertThat; -public class CassandraDriver4Test { +@RunWith(Parameterized.class) +public class CompatibleCassandraImageTest { - @Rule - // container-definition { - public CassandraContainer cassandra = new CassandraContainer("cassandra:3.11.2"); + @Parameterized.Parameters(name = "{0}") + public static String[] params() { + return new String[] { "cassandra:3.11.2", "cassandra:4.1.1", "cassandra:5" }; + } - // } + @Parameterized.Parameter + public String imageName; @Test public void testCassandraGetContactPoint() { + try (CassandraContainer cassandra = new CassandraContainer(this.imageName)) { + cassandra.start(); + assertCassandraFunctionality(cassandra); + } + } + + private void assertCassandraFunctionality(CassandraContainer cassandra) { try ( - // cql-session { CqlSession session = CqlSession .builder() .addContactPoint(cassandra.getContactPoint()) .withLocalDatacenter(cassandra.getLocalDatacenter()) .build() - // } ) { session.execute( "CREATE KEYSPACE IF NOT EXISTS test WITH replication = \n" + diff --git a/modules/cassandra/src/test/java/org/testcontainers/containers/CassandraDriver3Test.java b/modules/cassandra/src/test/java/org/testcontainers/containers/CassandraDriver3Test.java deleted file mode 100644 index 502f2ca8e67..00000000000 --- a/modules/cassandra/src/test/java/org/testcontainers/containers/CassandraDriver3Test.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.testcontainers.containers; - -import com.datastax.oss.driver.api.core.CqlIdentifier; -import com.datastax.oss.driver.api.core.CqlSession; -import com.datastax.oss.driver.api.core.metadata.schema.KeyspaceMetadata; -import org.junit.Rule; -import org.junit.Test; - -import static org.assertj.core.api.Assertions.assertThat; - -public class CassandraDriver3Test { - - @Rule - public CassandraContainer cassandra = new CassandraContainer<>("cassandra:3.11.2"); - - @Test - public void testCassandraGetContactPoint() { - try ( - // cassandra { - CqlSession session = CqlSession - .builder() - .addContactPoint(this.cassandra.getContactPoint()) - .withLocalDatacenter(this.cassandra.getLocalDatacenter()) - .build() - // } - ) { - session.execute( - "CREATE KEYSPACE IF NOT EXISTS test WITH replication = \n" + - "{'class':'SimpleStrategy','replication_factor':'1'};" - ); - - KeyspaceMetadata keyspace = session.getMetadata().getKeyspaces().get(CqlIdentifier.fromCql("test")); - - assertThat(keyspace).as("keyspace created").isNotNull(); - } - } -} diff --git a/modules/cassandra/src/test/java/org/testcontainers/containers/CassandraDriver4Test.java b/modules/cassandra/src/test/java/org/testcontainers/containers/CassandraDriver4Test.java deleted file mode 100644 index a4fb8c87b8e..00000000000 --- a/modules/cassandra/src/test/java/org/testcontainers/containers/CassandraDriver4Test.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.testcontainers.containers; - -import com.datastax.oss.driver.api.core.CqlIdentifier; -import com.datastax.oss.driver.api.core.CqlSession; -import com.datastax.oss.driver.api.core.metadata.schema.KeyspaceMetadata; -import org.junit.Rule; -import org.junit.Test; - -import static org.assertj.core.api.Assertions.assertThat; - -public class CassandraDriver4Test { - - @Rule - public CassandraContainer cassandra = new CassandraContainer<>("cassandra:3.11.2"); - - @Test - public void testCassandraGetContactPoint() { - try ( - CqlSession session = CqlSession - .builder() - .addContactPoint(this.cassandra.getContactPoint()) - .withLocalDatacenter(this.cassandra.getLocalDatacenter()) - .build() - ) { - session.execute( - "CREATE KEYSPACE IF NOT EXISTS test WITH replication = \n" + - "{'class':'SimpleStrategy','replication_factor':'1'};" - ); - - KeyspaceMetadata keyspace = session.getMetadata().getKeyspaces().get(CqlIdentifier.fromCql("test")); - - assertThat(keyspace).as("test keyspace created").isNotNull(); - } - } -} diff --git a/modules/cassandra/src/test/java/org/testcontainers/containers/CassandraServer4Test.java b/modules/cassandra/src/test/java/org/testcontainers/containers/CompatibleCassandraImageTest.java similarity index 53% rename from modules/cassandra/src/test/java/org/testcontainers/containers/CassandraServer4Test.java rename to modules/cassandra/src/test/java/org/testcontainers/containers/CompatibleCassandraImageTest.java index 1a8447e7036..dc5e830f79a 100644 --- a/modules/cassandra/src/test/java/org/testcontainers/containers/CassandraServer4Test.java +++ b/modules/cassandra/src/test/java/org/testcontainers/containers/CompatibleCassandraImageTest.java @@ -3,23 +3,37 @@ import com.datastax.oss.driver.api.core.CqlIdentifier; import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.metadata.schema.KeyspaceMetadata; -import org.junit.Rule; import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; import static org.assertj.core.api.Assertions.assertThat; -public class CassandraServer4Test { +@RunWith(Parameterized.class) +public class CompatibleCassandraImageTest { - @Rule - public CassandraContainer cassandra = new CassandraContainer<>("cassandra:4.1.1"); + @Parameterized.Parameters(name = "{0}") + public static String[] params() { + return new String[] { "cassandra:3.11.2", "cassandra:4.1.1" }; + } + + @Parameterized.Parameter + public String imageName; @Test public void testCassandraGetContactPoint() { + try (CassandraContainer cassandra = new CassandraContainer<>(this.imageName)) { + cassandra.start(); + assertCassandraFunctionality(cassandra); + } + } + + private void assertCassandraFunctionality(CassandraContainer cassandra) { try ( CqlSession session = CqlSession .builder() - .addContactPoint(this.cassandra.getContactPoint()) - .withLocalDatacenter(this.cassandra.getLocalDatacenter()) + .addContactPoint(cassandra.getContactPoint()) + .withLocalDatacenter(cassandra.getLocalDatacenter()) .build() ) { session.execute(