geode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jacob Barrett <jbarr...@pivotal.io>
Subject Re: [DISCUSS] Framework for concurrency tests
Date Fri, 15 Sep 2017 19:47:20 GMT
Love it! See my comments in your pull request.

On Fri, Sep 15, 2017 at 12:08 PM Dan Smith <dsmith@pivotal.io> wrote:

> 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
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message