irmin
irmin copied to clipboard
Multicore safety tests with qcheck-stm
This PR introduces multicore tests using qcheck-stm, enabling us to validate both semantic correctness and linearizability of the operations under test.
The tests currently pass on irmin-mem, which is great news. A useful next step would be to run the test suite under TSan, as qcheck-stm generates a large number of concurrent executions, which increases the likelihood of data races.
What is being tested?
Since qcheck-stm verifies linearizability, only operations that behave atomically can be tested. Here, a visible operation is defined as a write to the store. As a consequence, operations that manipulate the tree are not covered by these tests.
Work in Progress
- The test suite currently targets
irmin-memandirmin-pack. - Some cleanup is still required.
- Currently debugging
irmin-packtest suite (the current issue is with the test not withirmin-pack)