Skip to content

Automatically diff victim+polluter invariants with victim invariants. For use with order-dependent flaky tests.

License

Notifications You must be signed in to change notification settings

NateLevin1/takuan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Automatically diff victim+polluter invariants with victim invariants. For use with order-dependent flaky tests.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published