Skip to content

Generation of sequential and concurrent unit tests to find correctness and performance problems in Java classes

License

Notifications You must be signed in to change notification settings

michaelpradel/ConTeGe

Repository files navigation

ConTeGe

ConTeGe (short for Concurrent Test Generator) is a framework for generating sequential and concurrent unit tests. It is a research platform to build tools for finding correctness and performance problems in sequential and concurrent Java classes. In particular, ConTeGe is the basis for the following approaches:

An automatic and precise thread safety checker that found previously unknown bugs in the JDK

See thread-safe.org for details.

Fully Automatic and Precise Detection of Thread Safety Violations
by Michael Pradel and Thomas R. Gross
at Conference on Programming Language Design and Implementation (PLDI), 2012

An approach for automatic substitutability testing that finds various bugs in widely used Java classes

See this page for details.

Automatic Testing of Sequential and Concurrent Substitutability
by Michael Pradel and Thomas R. Gross
at International Conference on Software Engineering (ICSE), 2013

SpeedGun, a performance regression testing tool for thread-safe classes

See the SpeedGun branch for details.

Performance Regression Testing of Concurrent Classes
by Michael Pradel, Markus Huggler, and Thomas R. Gross
at International Symposium on Software Testing and Analysis (ISSTA), 2014

Instructions for running ConTeGe

To run a pre-built version equivalent to the PLDI'12 paper, run the following from the ConTeGe direcory:

./scripts/ClassTester_pre-built.sh

It will test the XYSeries class from the benchmarks directory and (hopefully) find a thread safety violation after a few seconds. To test other classes and run more benchmarks, see the comments in this and the other scripts.

About

Generation of sequential and concurrent unit tests to find correctness and performance problems in Java classes

Resources

License

Stars

Watchers

Forks

Packages

No packages published