Welcome to the ReEx project homepage. ReEx is a testing framework that dynamically explores all the possible behaviors/schedules of a multithreaded Java program in order to find buggy behaviors/schedules. The tool consists of two main parts, instrumentation and exploration. The instrumentation part dynamically instruments all schedule relevant bytecode instructions (eg. field read/write, monitor enter/exit, wait, notify, notifyAll, join etc) and provides hooks which are in turn used by the exploration part to re-execute the given program once for each possible schedule. In order to allow the user to try different exploration strategies, ReEx provides interfaces that can be used by the user to customize the exploration it performs. Infact, ReEx has been used to test real-world multithreaded Java programs using customized exploration strategies as reported in our ISSTA 2011 paper.
By Vilas Jagannath,
Qingzhou Luo, and
20th International Symposium on Software Testing and Analysis
(ISSTA 2011), pages 133-143, Toronto, Canada, July 2011
Binaries, source Code, and examples can be found in reex-1.0.tar.gz. Additional details can be found in the README.
Can be found here.