| package org.junit.tests.experimental.parallel; |
| |
| import static org.hamcrest.core.Is.is; |
| import static org.hamcrest.core.IsNot.not; |
| import static org.hamcrest.MatcherAssert.assertThat; |
| import static org.junit.Assert.assertNotNull; |
| import static org.junit.Assert.assertTrue; |
| |
| import java.util.concurrent.CountDownLatch; |
| import java.util.concurrent.TimeUnit; |
| |
| import org.junit.Before; |
| import org.junit.BeforeClass; |
| import org.junit.Test; |
| import org.junit.experimental.ParallelComputer; |
| import org.junit.runner.JUnitCore; |
| import org.junit.runner.Result; |
| |
| public class ParallelMethodTest { |
| private static final long TIMEOUT = 15; |
| private static volatile Thread fOne = null; |
| private static volatile Thread fTwo = null; |
| |
| public static class Example { |
| private static volatile CountDownLatch fSynchronizer; |
| |
| @BeforeClass |
| public static void init() { |
| fSynchronizer = new CountDownLatch(2); |
| } |
| |
| @Test |
| public void one() throws InterruptedException { |
| fSynchronizer.countDown(); |
| assertTrue(fSynchronizer.await(TIMEOUT, TimeUnit.SECONDS)); |
| fOne = Thread.currentThread(); |
| } |
| |
| @Test |
| public void two() throws InterruptedException { |
| fSynchronizer.countDown(); |
| assertTrue(fSynchronizer.await(TIMEOUT, TimeUnit.SECONDS)); |
| fTwo = Thread.currentThread(); |
| } |
| } |
| |
| @Before |
| public void init() { |
| fOne = null; |
| fTwo = null; |
| } |
| |
| @Test |
| public void testsRunInParallel() { |
| Result result = JUnitCore.runClasses(ParallelComputer.methods(), Example.class); |
| assertTrue(result.wasSuccessful()); |
| assertNotNull(fOne); |
| assertNotNull(fTwo); |
| assertThat(fOne, is(not(fTwo))); |
| } |
| } |