Hi Geode devs, I've been messing around with an open source tool called Java Pathfinder for writing tests of multithreaded code. Java Pathfinder is a special JVM which among other things tries to execute your code using all possible thread interleavings.
I'd like to propose two things: 1) We introduce a framework for writing unit tests of code that is supposed to be thread safe. This framework should let a developer easily write a test with multiple things going on in parallel. The framework can then take that code and try to run it with different thread interleavings. Here's an example of what this could look like: @RunWith(ConcurrentTestRunner.class) public class AtomicIntegerTest { @Test public void parallelIncrementReturns2(ParallelExecutor executor) throws ExecutionException, InterruptedException { AtomicInteger atomicInteger = new AtomicInteger(); executor.inParallel(() -> atomicInteger.incrementAndGet()); executor.inParallel(() -> atomicInteger.incrementAndGet()); executor.execute(); assertEquals(2, atomicInteger.get()); } 2) We implement this framework initially using Java Pathfinder, but allow for other methods of testing the code to be plugged in for example just running the test in the loop. Java pathfinder is cool because it can run the code with different interleavings but it does have some serious limitations. I've put together some code for this proposal which is available in this github PR: https://github.com/apache/geode/pull/787 What do you think? -Dan