Deterministic Unit Tests for Multi-Threaded Java

No more untested multi-threaded Java. Use the open-source tool VMLens to write deterministic unit tests. Simply surround your multi-threaded, concurrent test with a loop iterating over all thread interleavings:

Got 10 minutes?

No More Untested Multi-Thread Java

Multi-threaded Java is not deterministic. This makes testing multi-threaded Java very challenging. With VMLens, however, you can now systematically iterate through all possible thread interleavings. This lets you write deterministic unit tests for multi-threaded Java.

No More Race Conditions

Race conditions occur when non-atomic methods are accessed by multiple threads simultaneously. The problem with detecting race conditions is that they only occur for very specific thread interlevings. B y executing all thread interleavings using VMLens, however, you can systematically test for race conditions.

No More Data Races

A data race occurs when memory access is not correctly synchronised. VMLens traces all synchronisation actions and memory accesses, checking that all memory accesses are correctly synchronised. This allows you to detect all data races during unit testing.

No More Deadlocks

A deadlock occurs when two threads attempt to acquire a lock that is being held by the other thread. Using VMLens to execute all thread interleavings allows you to check for data races during your tests in a deterministic way.

Why VMLens?