Skip to content

ScyllaDB

Testcontainers module for ScyllaDB

ScyllaDB's usage examples

You can start a ScyllaDB container instance from any Java application by using:

ScyllaDBContainer scylladb = new ScyllaDBContainer("scylladb/scylla:6.2")
ScyllaDBContainer scylladb = new ScyllaDBContainer("scylladb/scylla:6.2")
    .withConfigurationOverride("scylla-test-ssl")
    .withSsl(
        MountableFile.forClasspathResource("keys/scylla.cer.pem"),
        MountableFile.forClasspathResource("keys/scylla.key.pem"),
        MountableFile.forClasspathResource("keys/scylla.truststore")
    )

Building CqlSession

CqlSession session = CqlSession
    .builder()
    .addContactPoint(scylladb.getContactPoint())
    .withLocalDatacenter("datacenter1")
    .build();
String testResourcesDir = getClass().getClassLoader().getResource("keys/").getPath();

KeyStore keyStore = KeyStore.getInstance("PKCS12");
keyStore.load(
    Files.newInputStream(Paths.get(testResourcesDir + "scylla.keystore")),
    "scylla".toCharArray()
);

KeyStore trustStore = KeyStore.getInstance("PKCS12");
trustStore.load(
    Files.newInputStream(Paths.get(testResourcesDir + "scylla.truststore")),
    "scylla".toCharArray()
);

KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(
    KeyManagerFactory.getDefaultAlgorithm()
);
keyManagerFactory.init(keyStore, "scylla".toCharArray());

TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(
    TrustManagerFactory.getDefaultAlgorithm()
);
trustManagerFactory.init(trustStore);

SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), null);
CqlSession session = CqlSession
    .builder()
    .addContactPoint(scylladb.getShardAwareContactPoint())
    .withLocalDatacenter("datacenter1")
    .build();

Alternator

ScyllaDBContainer scylladb = new ScyllaDBContainer(SCYLLADB_IMAGE).withAlternator()
DynamoDbClient client = DynamoDbClient
    .builder()
    .endpointOverride(URI.create(scylladb.getAlternatorEndpoint()))
    .credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create("test", "test")))
    .region(Region.US_EAST_1)
    .build();

Adding this module to your project dependencies

Add the following dependency to your pom.xml/build.gradle file:

testImplementation "org.testcontainers:scylladb:1.20.4"
<dependency>
    <groupId>org.testcontainers</groupId>
    <artifactId>scylladb</artifactId>
    <version>1.20.4</version>
    <scope>test</scope>
</dependency>