Randomized concurrency testing for Erlang.
This library uses the randomized scheduling algorithms introduced in our publication:
Xinhao Yuan, Junfeng Yang, and Ronghui Gu. Partial Order Aware Concurrency Sampling.
In Computer Aided Verification - 30th International Conference, CAV 2018.
-
Compile the SUT with instrumentations that gives control to Firedrill on synchronization points.
-
Initialize/finalize
fd_scheduler
before/after tests. -
Keep runing your tests repeatly to reveal potential concurrency bugs, if there is any.
-
It alone cannot determinisitcally reproduce any bugs found. See Morpheus Integration.
-
No guarantee of verification. This is NOT a model checking approach.
-
Testing in distributed setting has considerable overhead. Try to support single node testing in SUT if possible.
See the unit testcases in test/
for basic examples.
$ rebar3 compile
TODO - Documentation
APL 2.0 -- See LICENSE