Skip to content

dcolazin/karapace-testcontainers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

karapace-testcontainers

A Testcontainers 2 module for running Karapace clusters.

Dependency management

Maven

<dependency>
    <groupId>org.vetronauta</groupId>
    <artifactId>karapace-testcontainers</artifactId>
    <version>0.2.0</version>
    <scope>test</scope>
</dependency>

Usage

The simpler example is as follows. By default, it will use Karapace 5.0.3 and Kafka 3.9.1.

KarapaceContainer karapaceContainer = KarapaceContainer.builder().build();
karapaceContainer.start();

It is possible to specify the Karapace image through the builder. Moreover, it is possible to avoid the verification of the image compatibility.

KarapaceContainer karapaceContainer = KarapaceContainer.builder()
    .karapaceImageName(GHCR_IMAGE_NAME.withTag("5.0.2"))
    .build();
karapaceContainer.start();
KarapaceContainer customKarapaceContainer = KarapaceContainer.builder()
    .karapaceImageName(DockerImageName.parse("my-company/karapace"))
    .assertCompatible(false)
    .build();
customKarapaceContainer.start();

By default, the Kafka container lifecycle will follow the Karapace container lifecycle (it starts before and stops after Karapace). There might be the need to use a specific Kafka version or to test a Karapace cluster. Moreover, also Redpanda is supported for the underlying storage.

KarapaceContainer kafka4KarapaceContainer = KarapaceContainer.builder()
    .redpandaImage(DockerImageName.parse("redpandadata/redpanda:v25.3.1"))
    .build();
kafka4KarapaceContainer.start();

KarapaceContainer redpandaKarapaceContainer = KarapaceContainer.builder()
    .kafkaImage(DockerImageName.parse("apache/kafka:4.1.1"))
    .build();
redpandaKarapaceContainer.start();

It is possible to supply a Kafka container to use, but its lifecycle must be handled separately.

KafkaContainer kafkaContainer = defaultKafkaContainer();
KarapaceContainer masterContainer = KarapaceContainer.builder()
    .kafkaContainer(kafkaContainer)
    .build();
KarapaceContainer follower1Container = KarapaceContainer.builder()
    .electionStrategy(ElectionStrategy.LOWEST)
    .expectedMaster(false)
    .kafkaContainer(kafkaContainer)
    .advertisedName("karapace-schema-registry-follower1")
    .build();
KarapaceContainer follower2Container = KarapaceContainer.builder()
    .electionStrategy(ElectionStrategy.LOWEST)
    .expectedMaster(false)
    .kafkaContainer(kafkaContainer)
    .advertisedName("karapace-schema-registry-follower2")
    .build();
kafkaContainer.start();
masterContainer.start();
follower1Container.start();
follower2Container.start();

About

Testcontainers module for Karapace

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages