chaos
chaos copied to clipboard
A test framework for linearizability check with Go
Chaos
Chaos is used to check the distributed system linearizability.
Chaos is inspired by jepsen and uses porcupine as its linearizability checker.
Architecture
Chaos runs your registered database on 5 nodes, sends the command through ssh
to control the service, like starting/stoping the service, or using a nemesis to disturb the whole cluster.
+-------------+
+------- | controller | -------+
| +-------------+ |
| | | | |
| +----+ | | |
v v | | v
+----+----+----+ | | +----+----+
| n1 | n2 | n3 | <+ +> | n4 | n5 |
+----+----+----+ +----+----+
Usage
In one shell, we start the 5 nodes and the controller.
cd docker
./up.sh
In another shell, use docker exec -it chaos-control bash
to enter the controller, then:
# build the node and your own chaos test
make
# run you own chaos like
./bin/chaos-tidb
Scaffold
It is very easy to write your own chaos test. TODO...