I am proud to release all of the software that accompanies my publications. Unless otherwise specified on the project page, all of my software is released under an MIT license. Below is a listing of those projects:
- A very large dataset of flaky tests, A dataset of flaky tests gathered by re-running test suites 10,000 times (Currently unpublished)
- JVM test isolation benchmark, A suite for measuring the performance overhead of test isolation in different Java build systems (ISSTA 2020)
- RIVULET, A tool for detecting code injection vulnerabilities in Java code (ICSE 2020)
- Flaky Mutation Testing, A fork of Pit that tolerates flaky tests, and results from our experimental studies (ISSTA 2019)
- Parikshan, Live debugging using containers (ASE 2018)
- Coverage Study, Infrastructure and dataset for large-scale code coverage collection (ASE 2018)
- CROCHET, Lightweight checkpoint/rollback in the JVM (ECOOP 2018)
- DeFlaker, Flaky test detector for Java (ICSE 2018)
- PRADET, Test dependency detector for Java (ICST 2018)
- DyCLINK, Behavioral clone detector for Java using link analysis (FSE 2016)
- HitoshiIO, Functional clone detector for Java (ICPC 2016)
- DataDepDetector, Java test dependency detector – NOT the tool used in my ElectricTest paper (due to IP ownership), but a prototype that does mostly the same thing (FSE 2015)
- Synapse, Cross-database replication for micro service apps (EuroSys 2015)
- Phosphor, Dynamic taint tracking for Java (OOPSLA 2014)
- Pebbles, Fine-grained system-wide taint tracking on Android (OSDI 2014)
- VMVM, Test Isolation for Java (ICSE 2014)
- ChroniclerJ, Record-replay in Java (ICSE 2013)
Other research-related software that does not directly tie to a publication:
- Big repository of old maven dependencies, collected in 2014-2015 for ElectricTest (FSE ’15). This repository contains many old snapshot revisions of libraries that are no longer available elsewhere.
- Java bytecode rewriting examples
- Maven lifecycle logger
- JavaSlicer fork, with some bug patches and support for multithreaded code
- Surefire Isolated JUnit Method Runner, a Surefire test provider that will run each test method in its own process
- Surefire Isolated Rerunner, a Surefire test provider that will rerun each failing test in its own process, rather than rerunning failing tests in the same process (this project is used by DeFlaker)
I also try to contribute back to open source projects where I can through patches and pull requests. So far, I have had a pull request merged into Maven’s testing framework, Surefire.
I also occasionally blog about the crazy things that the JVM does on my Java blog, http://www.jvm.wtf.
If you have any questions about these or any other of my projects, please email me directly. I am interested in making sure that these projects can continue to be used and built upon by other researchers and practitioners.