| package org.onlab.nio; |
| |
| import org.junit.Before; |
| |
| import java.util.concurrent.CountDownLatch; |
| import java.util.concurrent.ExecutorService; |
| import java.util.concurrent.TimeUnit; |
| |
| import static java.util.concurrent.Executors.newSingleThreadExecutor; |
| import static org.junit.Assert.fail; |
| import static org.onlab.util.Tools.namedThreads; |
| |
| /** |
| * Base class for various NIO loop unit tests. |
| */ |
| public abstract class AbstractLoopTest { |
| |
| protected static final long MAX_MS_WAIT = 1500; |
| |
| /** Block on specified countdown latch. Return when countdown reaches |
| * zero, or fail the test if the {@value #MAX_MS_WAIT} ms timeout expires. |
| * |
| * @param latch the latch |
| * @param label an identifying label |
| */ |
| protected void waitForLatch(CountDownLatch latch, String label) { |
| try { |
| boolean ok = latch.await(MAX_MS_WAIT, TimeUnit.MILLISECONDS); |
| if (!ok) { |
| fail("Latch await timeout! [" + label + "]"); |
| } |
| } catch (InterruptedException e) { |
| System.out.println("Latch interrupt [" + label + "] : " + e); |
| fail("Unexpected interrupt"); |
| } |
| } |
| |
| protected ExecutorService exec; |
| |
| @Before |
| public void setUp() { |
| exec = newSingleThreadExecutor(namedThreads("test")); |
| } |
| |
| } |