package org.multiverse.commitbarriers; import org.junit.Before; import org.junit.Test; import java.util.concurrent.TimeUnit; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.multiverse.TestUtils.sleepMs; import static org.multiverse.api.TxnThreadLocal.clearThreadLocalTxn; public class CountDownCommitBarrier_setTimeoutTest { @Before public void setUp() { clearThreadLocalTxn(); } @Test public void whenNullTimeUnit_thenNullPointerException() { CountDownCommitBarrier barrier = new CountDownCommitBarrier(1); try { barrier.setTimeout(10, null); fail(); } catch (NullPointerException expected) { } assertTrue(barrier.isClosed()); } @Test public void whenTimedOut() { CountDownCommitBarrier barrier = new CountDownCommitBarrier(1); barrier.setTimeout(1000, TimeUnit.MILLISECONDS); sleepMs(3000); assertTrue(barrier.isAborted()); } @Test public void whenCommittedBeforeTimeout() throws InterruptedException { CountDownCommitBarrier barrier = new CountDownCommitBarrier(1); barrier.setTimeout(1000, TimeUnit.MILLISECONDS); barrier.countDown(); sleepMs(2000); assertTrue(barrier.isCommitted()); } @Test public void whenAbortedBeforeTimeout() { CountDownCommitBarrier barrier = new CountDownCommitBarrier(1); barrier.setTimeout(1000, TimeUnit.MILLISECONDS); barrier.abort(); sleepMs(2000); assertTrue(barrier.isAborted()); } @Test public void whenCommitted_thenCommitBarrierOpenException() { CountDownCommitBarrier barrier = new CountDownCommitBarrier(0); try { barrier.setTimeout(10, TimeUnit.SECONDS); fail(); } catch (CommitBarrierOpenException expected) { } assertTrue(barrier.isCommitted()); } @Test public void whenAborted_thenCommitBarrierOpenException() { CountDownCommitBarrier barrier = new CountDownCommitBarrier(1); barrier.abort(); try { barrier.setTimeout(10, TimeUnit.SECONDS); fail(); } catch (CommitBarrierOpenException expected) { } assertTrue(barrier.isAborted()); } }