scylladb/gemini
Test data integrity by comparing against an Oracle running in parallel
415
An automatic randomized testing suite for Scylla and Apache Cassandra.
Gemini operates on two clusters, a system under test (SUT) and a test oracle, by generating random mutations (INSERT
, UPDATE
) and verifying them (SELECT
) using the CQL protocol and query language. As the mutations are performed on both systems, their client-visible state is assumed to be the same, unless either of the systems (usually system under test) have bugs. If a verification step fails, Gemini reports the CQL query and its results for further analysis.
Download a release from http://downloads.scylladb.com/gemini/
Make sure you have two scylla clusters setup from here on referred to as ORACLE_CLUSTER and TEST_CLUSTER
Unzip the tarball and run ./gemini --oracle-cluster=<ORACLE_CLUSTER> --test-cluster=<TEST_CLUSTER>
Enjoy!
Execute ./gemini --help
to see the entire list of arguments available.
Their explanation in some detail is available the CLI arguments.
Gemini is already being used for testing Scylla releases, but there's still plenty to do. To contribute to Gemini, please fork the repository and send a pull request.
Gemini is distributed under the Apache 2.0 license. See LICENSE for more information.
docker pull scylladb/gemini