Concutest


About Concutest
Introduction
ConcJUnit
Thread Checker
Schedule-Based Execution

Using Concutest
Download
How to Run
License

Resources
Documentation
FAQ
Publications

Give Feedback
Features, Bugs, Support
Contact Us

Developers
SourceForge Project
Developer Docs
Javadocs
Developer Blog
Mathias Ricken's Homepage

      Testing Using Schedule-Based Execution

The testing framework using scheduled replay that we propose will perform four new functions not provided by existing systems:

  • Executing unit tests according to specific schedules recorded in files as sequences of synchronization operations.
  • Providing a tool for generating a representative set of schedules for a particular unit test using both exhaustive and randomized methods.
  • Applying the Eraser Algorithm during unit testing to confirm that shared variables are accessed using a consistent locking protocol.
  • Providing a tool to ensure that the schedule files for concurrent unit tests remain consistent with the program code base as it evolves.

Running the Eraser Algorithm will confirm that synchronization-based replay is deterministic and that schedules other than those tested are unlikely to generate data races. The new framework will use custom class loaders to rewrite byte code to support schedule-based execution and the Eraser Algorithm.

Tentatively, we will break the project into the following phases and approach them in order:

  1. Detection of Synchronization Events
  2. Scheduled Program Replay
  3. Generation of Schedules
  4. Verification of Shared Variable Locking
  5. Schedule Consistency Checking
  6. Unit Testing of Distributed Applications

Supplemental material


Concutest is partially funded by the National Science Foundation and the Texas Advanced Technology Program.
Copyright © 2004-2010 by Mathias Ricken. All rights reserved.
Support This Project