Controlled Concurrency Testing for Scala
summary
McCCT is a Scala controlled-concurrency tester that instruments libraries with thin wrappers and a central scheduler to serialize execution, insert schedule points before concurrency effects, and record failing interleavings for deterministic replay. It currently supports futures and async finish, uses exploration strategies like delay bounding, and in the demo finds and saves 75 failing schedules for a two-future increment bug. The framework replays regression schedules, models locks for deadlock checks, and aims for automatic instrumentation and broader library support.
AI-written summary · about
chapters (14)
- 0:00Welcome
- 0:25Clock frequency scaling end
- 3:09Concurrency challenges
- 4:12Controlled concurrency testing
- 6:01Real-world use
- 6:22Live demo: concurrency bug
- 10:57MaxCCT for Scala
- 14:49Finding bug with MaxCCT
- 16:34Reproducing and debugging
- 18:39Fixing with locks and tests
- 20:26Efficient interleaving exploration
- 21:51Deadlock detection
- 22:33How MaxCCT works under the hood
- 28:32Future work and conclusion
related talks
42mWhen all abstraction is lost
44mConcurrency in Scala and on the JVM
45mHow we test concurrent algorithms in Kotlin Coroutines
46mAsync Testing on the JVM and Scala.js
32mMUnit: your new favorite Scala testing library?
16mFray: An Efficient General-Purpose Concurrency Testing Platform for the JVM
01h 10mWorkshop. Lincheck: Testing concurrency on the JVM (Part 1)
33mChanneling the Inner Complexity
