Testing concurrent data structures

Hopper is a subtle beast and proves to be quite tricky to get correct, owing to the difficulty of manipulating the same memory across multiple threads. Slight synchronization bugs were common in the writing of the implementation, bugs that highlighted fundamental mistakes but were rare to trigger and even harder to reproduce. Traditional unit testing is not sufficient here. There are no clean units to be found, being that the computer's non-deterministic behavior is fundamental to the end result of the program's run. With that in mind, there are three key testing strategies used on hopper: randomized testing over random inputs searching for logic bugs (QuickCheck), randomized testing over random inputs searching ...

Get Hands-On Concurrency with Rust now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.