or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

configuration-initialization.mdconnection-access.mdcontainer-management.mdindex.mdwait-strategies-delegation.md
tile.json

tessl/maven-org-testcontainers--cassandra

Testcontainers implementation for Apache Cassandra, providing lightweight, throwaway database instances for Java integration testing

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/org.testcontainers/cassandra@1.21.x

To install, run

npx @tessl/cli install tessl/maven-org-testcontainers--cassandra@1.21.0

index.mddocs/

Testcontainers Cassandra

Testcontainers implementation for Apache Cassandra that provides lightweight, throwaway instances of Cassandra databases for Java integration testing. This library extends the Testcontainers framework with Cassandra-specific functionality, offering Docker-based container management with automatic configuration, CQL script initialization, and seamless integration with DataStax drivers.

Package Information

  • Package Name: org.testcontainers:cassandra
  • Package Type: maven
  • Language: Java
  • Installation: Add to your Maven pom.xml:
<dependency>
    <groupId>org.testcontainers</groupId>
    <artifactId>cassandra</artifactId>
    <version>1.21.3</version>
    <scope>test</scope>
</dependency>

For Gradle:

testImplementation 'org.testcontainers:cassandra:1.21.3'

Core Imports

import org.testcontainers.cassandra.CassandraContainer;

For DataStax driver integration:

import com.datastax.oss.driver.api.core.CqlSession;
import java.net.InetSocketAddress;

Basic Usage

import org.testcontainers.cassandra.CassandraContainer;
import com.datastax.oss.driver.api.core.CqlSession;
import com.datastax.oss.driver.api.core.cql.ResultSet;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;

public class CassandraTest {
    @Test
    public void testWithCassandra() {
        try (CassandraContainer cassandra = new CassandraContainer("cassandra:3.11.2")) {
            cassandra.start();
            
            // Create CQL session using DataStax driver 4.x
            CqlSession session = CqlSession.builder()
                .addContactPoint(cassandra.getContactPoint())
                .withLocalDatacenter(cassandra.getLocalDatacenter())
                .build();
            
            // Execute queries
            ResultSet result = session.execute("SELECT release_version FROM system.local");
            assertThat(result.wasApplied()).isTrue();
            
            session.close();
        }
    }
}

Architecture

The Cassandra Testcontainers module is built around several key components:

  • Container Management: Extends GenericContainer providing Docker lifecycle management for Cassandra instances
  • Configuration Override: Support for custom cassandra.yaml and configuration files via classpath resources
  • Initialization Scripts: CQL script execution system for database setup and seeding
  • Wait Strategies: Custom wait strategy that ensures Cassandra is ready for queries before test execution
  • Driver Integration: Seamless integration with both legacy DataStax driver 3.x and modern driver 4.x
  • Authentication Support: Built-in support for Cassandra authentication when enabled

Capabilities

Container Management

Core functionality for creating, configuring, and managing Cassandra Docker containers with proper lifecycle management and resource cleanup.

public class CassandraContainer extends GenericContainer<CassandraContainer> {
    public CassandraContainer(String dockerImageName);
    public CassandraContainer(DockerImageName dockerImageName);
}

Container Management

Configuration and Initialization

Configuration override capabilities and CQL script initialization for custom Cassandra setups and test data preparation.

public CassandraContainer withConfigurationOverride(String configLocation);
public CassandraContainer withInitScript(String initScriptPath);

Configuration and Initialization

Connection and Access

Methods for obtaining connection information and establishing DataStax driver sessions for query execution.

public InetSocketAddress getContactPoint();
public String getLocalDatacenter();
public String getUsername();
public String getPassword();

Connection and Access

Wait Strategies and Database Delegation

Advanced wait strategies and database operation delegation for ensuring container readiness and executing database operations.

public class CassandraQueryWaitStrategy extends AbstractWaitStrategy;
public class CassandraDatabaseDelegate extends AbstractDatabaseDelegate<Void>;

Wait Strategies and Database Delegation

Environment Configuration

The container automatically configures the following Cassandra environment variables for optimal testing performance:

  • CASSANDRA_SNITCH: "GossipingPropertyFileSnitch"
  • JVM_OPTS: "-Dcassandra.skip_wait_for_gossip_to_settle=0 -Dcassandra.initial_token=0"
  • HEAP_NEWSIZE: "128M"
  • MAX_HEAP_SIZE: "1024M"
  • CASSANDRA_ENDPOINT_SNITCH: "GossipingPropertyFileSnitch"
  • CASSANDRA_DC: "datacenter1" (configurable)

Types

// Container state interface for accessing container information
interface ContainerState {
    String getHost();
    Integer getMappedPort(int originalPort);
    Map<String, String> getEnvMap();
}

// Docker image name utility
class DockerImageName {
    static DockerImageName parse(String imageNameString);
    DockerImageName withTag(String tag);
    void assertCompatibleWith(DockerImageName expectedImageName);
}