Skip to content

Apache Cassandra

Apache Cassandra is a powerful, open-source, distributed NoSQL database that is highly available and fault-tolerant, used to store, manage, and retrieve structured data.

Add the following dependency to your project file:

NuGet
1
dotnet add package Testcontainers.Cassandra

You can start an Apache Cassandra container instance from any .NET application. To create and start a container instance with the default configuration, use the module-specific builder as shown below:

1
2
var cassandraContainer = new CassandraBuilder().Build();
await cassandraContainer.StartAsync();

The following example utilizes the xUnit.net module to reduce overhead by automatically managing the lifecycle of the dependent container instance. It creates and starts the container using the module-specific builder and injects it as a shared class fixture into the test class.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[Fact]
[Trait(nameof(DockerCli.DockerPlatform), nameof(DockerCli.DockerPlatform.Linux))]
public void ConnectionStateReturnsOpen()
{
    // Given
    using DbConnection connection = fixture.CreateConnection();

    // When
    connection.Open();

    // Then
    Assert.Equal(ConnectionState.Open, connection.State);
}

[Fact]
[Trait(nameof(DockerCli.DockerPlatform), nameof(DockerCli.DockerPlatform.Linux))]
public void ExecuteCqlStatementReturnsExpectedResult()
{
    // Given
    const string selectFromSystemLocalStatement = "SELECT * FROM system.local WHERE key = ?;";

    using var cluster = Cluster.Builder().WithConnectionString(fixture.Container.GetConnectionString()).Build();

    // When
    using var session = cluster.Connect();

    var preparedStatement = session.Prepare(selectFromSystemLocalStatement);
    var boundStatement = preparedStatement.Bind("local");
    using var rowSet = session.Execute(boundStatement);
    var rows = rowSet.GetRows().ToImmutableList();

    // Then
    Assert.True(rowSet.IsFullyFetched);
    Assert.Single(rows);
    Assert.Equal("COMPLETED", rows[0]["bootstrapped"]);
}

The test example uses the following NuGet dependencies:

1
2
3
4
5
<PackageReference Include="Microsoft.NET.Test.Sdk"/>
<PackageReference Include="coverlet.collector"/>
<PackageReference Include="xunit.runner.visualstudio"/>
<PackageReference Include="xunit"/>
<PackageReference Include="CassandraCSharpDriver"/>

To execute the tests, use the command dotnet test from a terminal.

Tip

For the complete source code of this example and additional information, please refer to our test projects.