The testing process involves multiple modules that perform different tasks. The modules and their APIs are listed below.
Governs the whole testing process. Runs different workloads during different troubles.
Puts workloads against the database. Writes logs that are later used by
valideaux.
start(id, workload, cluster)- starts aworkloadagainst theclusterand call itid.stop(id)- stops a previously started workload calledid.
Manages the database nodes.
deploy(driver, ...)- deploys a cluster using the specifieddriverand other parameters specific to that driver. Returns aclusterinstance that is used in other methods.cluster->up(id)- adds a node namedidto thecluster.cluster->down(id)- removes a node namedidfrom thecluster.cluster->drop(src, dst, ratio)- dropratiopackets flowing from nodesrcto nodedst.cluster->delay(src, dst, msec)- delay packets flowing from nodesrcto nodedstbymsecmilliseconds.
This is the troublemaker that messes with the network, nodes and time.
cause(cluster, trouble, ...)- causes the specifiedtroublein the specifiedclusterwith some trouble-specific parameters.fix(cluster)- fixes all troubles caused in thecluster.
Validates the logs of stresseaux.
Generates reports on the test results. This is usually a table that with
trouble vs workload axes.