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.
- Random schema generation
- Data generation using uniform, normal, and zipf distributions
- Materialized views
- Secondary indexes
- Counters
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.