Create a standard API / specification for testing workloads #13
Description
Once a simulation framework exists, then next question is what to do with it. FoundationDB coupled the randomized fault injection with specification based testing to obtain a high level of coverage.
Specifically, there is a workload interface, which "tester" actors run one or more workloads in parallel. Workloads are either antagonistic, e.g. kill N processes during the test, or a specification, e.g. backup and restore some data and assert that they're the same. Orthogonal workloads can be combined in the same test to test different failure scenarios or types of work in the same test.
There is an alternative direction available, which is to allow an easy way to specify the exact fault injections that will happen in a test. Millions of Tiny Databases went in this direction instead, which allowed them to generate a comprehensive set of simulated tests, model checking style.