This project uses Testcontainers to run integration tests against a multi-node TKeeper cluster defined via Docker Compose.
The test harness starts the Compose stack, waits for the keeper API ports to become available, and collects container logs with per-service prefixes (keeper-1, keeper-2, keeper-3).
The Compose runtime is resolved automatically:
- Prefer
docker-compose(Compose v1) when available - Fallback to
docker compose(Compose v2)
- Docker Engine
- Docker Compose:
docker-composeordocker compose
- Java 25
Run from root project directory:
./gradlew dockerBuildIntegration -Pkeeper.docker.features=allkeeper.docker.features=all includes test-only integration helpers such as feature-failure-injection.
Regular runtime builds with keeper.features=all do not include those helpers.
Or select only the modules needed for a test run:
./gradlew dockerBuildIntegration -Pkeeper.docker.features=authority-evm,seal-aws,failure-injectionRun the full test suite:
./gradlew :integration-tests:testRun a specific test class:
./gradlew :integration-tests:test --tests "org.exploit.tkeeper.test.{ClassName}"See available test classes in tests
Client with idx = 3 has disabled coordinator (so it can't make generate/rotate/refresh, sign, encrypt/decrypt, destroy & consistency fix requests)
Client with idx = 2 uses hsm as seal provider
On macOS, Docker MUST be provided by Colima. If your setup uses a non-default Docker socket, configure it via environment variables (DOCKER_HOST) before running tests. See build.gradle for details.