VMLens is an open-source Java testing tool that addresses the challenge of testing multi-threaded code by separating the problem into two parts: executing all possible thread interleavings based on synchronization actions, and detecting data races. The tool operates as a Java agent, transforming bytecode at runtime to trace field accesses and synchronization actions. It focuses on synchronization actions to define thread interleavings and checks for data races using happens-before relations. VMLens treats Java's concurrency utilities as correctly implemented abstractions, reducing the number of necessary interleavings to test. The tool aims to help developers efficiently utilize modern multi-core processors by ensuring correct usage of Java's concurrency features.
Table of contents
Separate the Problem into two partsImplemenationChoosing a high level of abstractionUnit tests are a missing piece to use the cores efficientlySort: