Skip to content

Latest commit

 

History

History
61 lines (39 loc) · 1.91 KB

README.md

File metadata and controls

61 lines (39 loc) · 1.91 KB

Takuan

Takuan is a framework for analyzing and root causing OD tests using dynamic invariants generated by Daikon. Given an OD test, Takuan finds differences in the invariants collected from passing and failing runs, outputting “problem invariants”. Takuan then searches for methods that influence the problem invariants.

Dependencies

You'll need to install this fork of Daikon before running Takuan.

After doing so, run the following command:

./scripts/compile-takuan.sh

jq is needed as a dependency (https://jqlang.github.io/jq/manual/).

Usage

To automatically run all checks:

./takuan.sh <gitURL> <sha> <victim> <polluter> (<module>)

You can copy and paste a row directly from the Google Sheet, as the arguments are in the correct order.

To run scripts individually:

To get the .inv files, go to any Java 8 Maven project and run:

./daikon-gen-victim-polluter.sh <com.example.Test.victimMethod> <com.example.Test.polluterMethod>

Then analyze the generated logs with:

mvn exec:java -Dexec.args="daikon-pv.inv daikon-victim.inv daikon-polluter.inv"

Or:

mvn package
java -cp target/classes:daikon-5.8.16.jar in.natelev.daikondiffvictimpolluter.DaikonDiffVictimPolluter daikon-pv.inv daikon-victim.inv daikon-polluter.inv

Or, go to the folder where you ran daikon-gen-victim-polluter.sh and run:

/path/to/daikon-diff-victim-polluter.sh

Provide a -o output.dinv argument to write the results to a file.

To just run the test with the polluter (no logs will be generated):

./daikon-victim-polluter.sh test <com.example.VictimTest> <com.example.PolluterTest>

If the Java process runs out of memory during processing, you should try again with -XX:MaxRAMPercentage=50.0 or a higher number.