developer tooling for the JVM
Concurrency bugs,
forced out of hiding.
Deversity builds and maintains
async-test-lib, a JUnit 5
extension that stress-tests code under maximum thread contention. A single
@AsyncTest annotation runs a test body on N threads for M rounds, forces
the threads to collide, and reports what more than a hundred concurrency detectors
observed.
- JUnit 5 extension
- 100+ detectors
- Java 21 and newer
- Free for non-commercial use
@AsyncTest(threads = 8, rounds = 500)
void concurrentTransfers() {
account.transfer(from, to, 100);
}
✗ race conditionlost update on Account.balance, round 231
✗ unsafe publicationAccount visible before fully constructed
✓ contention8 threads × 500 rounds, 100+ detectors watching
what it catches
The bugs that pass every sequential test
Four of the most common shapes, from a suite of more than a hundred detectors.
Race conditions
Lost updates and check-then-act windows that only open under real contention.
Deadlocks
Lock cycles and stuck threads, caught in the test run instead of in production.
Missed signals
Waits and notifies that never meet, condition waits that sleep forever.
Unsafe publication
Objects visible to other threads before they are fully constructed.
how it works
One annotation, one report
No harness to write and no mocks to thread. The extension does the colliding; you read the findings.
Annotate
Add @AsyncTest(threads = N, rounds = M) to a JUnit 5 test body.
Collide
The extension runs the body on N threads for M rounds and forces the threads to collide at the worst possible moments.
Read the report
The detectors report race conditions, deadlocks, missed signals, unsafe publication, and more.
licensing
Free to learn on, licensed to ship with
Non-commercial use costs nothing and needs no key. Companies buy one annual licence for the whole team.
Non-commercial
Free
async-test-lib is free for non-commercial use under the PolyForm Noncommercial License 1.0.0. No license key needed.
- Personal projects, study and research
- Every detector, nothing held back
- Developers on free email providers count as non-commercial
Commercial
From €250/ year
Priced by team size. A license covers every developer on your company email domain. There are no per-seat keys.
- One key for the whole team and CI
- Renews yearly, cancel any time
- Invoice or purchase order on request
from Deversity
Three tools, one habit: check the claim, not the README
Each one turns a thing teams take on trust into a thing the build verifies.
async-test-lib
JUnit 5 extension · Java 21+Runs a test body on N threads for M rounds, forces the threads to collide, and reports what more than a hundred concurrency detectors observed.
llm-fw
Local proxy · Node.js 22+A firewall for LLM traffic that runs on your own machine. It intercepts every request your tools make to OpenAI, Anthropic, Gemini and a dozen other providers, blocks prompt injection in real time, redacts leaked credentials, and forwards clean traffic untouched. No cloud calls and no telemetry.
Find the bug before your users do
Add the annotation to one flaky test today. It is free for non-commercial use, and a commercial licence covers your whole team.