Dan Smith created GEODE-3702:
--------------------------------

             Summary: New framework for concurrency testing
                 Key: GEODE-3702
                 URL: https://issues.apache.org/jira/browse/GEODE-3702
             Project: Geode
          Issue Type: Improvement
          Components: tests
            Reporter: Dan Smith


>From the mailing list discussion:

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.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to