...
It makes sense to use composition to create more specific faults out of more general faults. For example, a fault for suspending the active Kafka controller could be built off of a fault for suspending a generic process. A fault for partitioning the ZooKeeper nodes from the broker nodes could be built on top of the generic network partition fault.
Code
Patches here: https://github.com/cmccabe/kafka/tree/trogdor
The code for Trogdor lives under ./tools/src/main/java/org/apache/kafka/trogdor.
...