Scylla Testing

As a database project we wish to offer the highest means of guarantees for your data. On a 24×7 basis we hit Scylla with a battery of tests. Many tests were adopted from Apache Cassandra and third parties. Many os the tests were developed exclusively for clearing all possible issues, from correctness, to data-loss to distributed behavior. Here are some highlights from our Scylla testing blog series:

Cassandra compatibility testing

Scylla is an Apache Cassandra compatible database. Thus, besides Scylla’s own tests, the project must pass the relevant Apache Cassandra test suite. This ensures that Scylla will handle the CQL query language exactly as Cassandra does. Learn about Scylla/Cassandra compatibility testing

Jepsen

The latest hit on the distributed software testing scene is Kyle Kingsbury’s Jepsen. Jepsen is a flexible tool that can cause hard-to-handle network outages, partitions and delays for a variety of distributed systems, including Apache Cassandra, and now Scylla. Learn more

CharybdeFS

Testing for proper handling of filesystem errors is critical. We have developed a new emulated filesystem that can inject any error for any operation, under the control of a test script. CharybdeFS makes rare error conditions into repeatable test cases. Learn how it works

Distributed test

Scylla distributed tests, or dtest, is an extended version of the dtest project originally developed for Apache Cassandra. Cassandra dtests are functional black boxes that test Cassandra cluster operation. Thus dtest provides a test suite covering how a Cassandra server should operate, and allows us at ScyllaDB to validate that Scylla is compatible in functionality with Cassandra. Learn more

Longevity testing

Longevity tests create a Scylla cluster in AWS and exercise it by running cassandra-stress and other clients specified in the test scripts. This testing is meant to find problems in the operation of long running clusters, which is the case with existing Scylla deployments. The system uses Boto for controlling Amazon AWS from Python. Learn more