Concurrent Computing Lab

Lincheck Framework for Testing Concurrent Data Structures

Lincheck is a practical and user-friendly framework for testing concurrent algorithms on JVM. It provides a simple and declarative way to write concurrent tests. Instead of describing how to perform the test, users specify what to test by declaring all of the operations to examine, and the framework automatically handles the rest. As a result, tests written with Lincheck are concise and easy to understand. The framework automatically generates a set of concurrent scenarios, examines them using stress-testing or bounded model checking, and verifies that the results of each invocation are correct. If an error is detected via model checking, Lincheck provides an easy-to-follow trace to reproduce it, significantly simplifying bug investigation.

Conference talks

How we test concurrent algorithms in Kotlin Coroutines

Nikita Koval, KotlinConf 2023

Lincheck: Testing concurrency on the JVM, part 1

Workshop by Maria Sokolova, Hydra 2021

Lincheck: Testing concurrency on the JVM, part 2

Workshop by Maria Sokolova, Hydra 2021