Test data integrity by comparing against an Oracle running in parallel
10K+

An automatic randomized testing suite for Scylla and Apache Cassandra.
Gemini is a tool for testing ScyllaDB (and Apache Cassandra) clusters by running randomized workloads against two clusters simultaneously - a reference "oracle" cluster and the system under test (SUT). It generates random mutations (INSERT, UPDATE, DELETE) and validates their results using SELECT queries. When discrepancies appear between the oracle and SUT, Gemini reports them for investigation.
Download the latest release for your platform from GitHub Releases.
Available builds:
scylladb/gemini:latest (supports amd64 and arm64)The oracle cluster serves as the source of truth for validation. For reliable testing:
--consistency=QUORUM or --consistency=ALL to minimize replication lag issues# With two clusters (oracle + test)
./gemini --oracle-cluster=<ORACLE_IP> --test-cluster=<TEST_IP>
# Test-only mode (no oracle validation)
./gemini --test-cluster=<TEST_IP>
# Using Docker
docker run -it scylladb/gemini:latest \
--oracle-cluster=<ORACLE_IP> \
--test-cluster=<TEST_IP>
./gemini \
--test-cluster=192.168.1.10,192.168.1.11 \
--oracle-cluster=192.168.1.20 \
--duration=1h \
--concurrency=10 \
--mode=mixed
See ./gemini --help or CLI arguments documentation for all options.
--use-counters--use-lwt--seed and --schema-seed to replay exact test scenarios| Mode | Description |
|---|---|
mixed | (default) Runs both mutations and validations |
write | Only mutations, no validation queries |
read | Only validation queries on existing data |
When Gemini detects a mismatch between oracle and test cluster, it reports the error to:
For detailed debugging steps, see Investigation Guide.
Contributions are welcome! Fork the repository and submit a pull request. See Development Guide for setup instructions.
Apache 2.0 - see LICENSE.
Content type
Image
Digest
sha256:6e99a08f5…
Size
35.3 MB
Last updated
about 2 months ago
docker pull scylladb/gemini