@Before public void setup() { verifier = new AsyncVerifier(); }
public static void getLongRunningTasksWrappedFutureTest(final StatisticPriorityScheduler scheduler) throws InterruptedException, TimeoutException { final AsyncVerifier av = new AsyncVerifier(); scheduler.submit(new ClockUpdateRunnable() { @Override public void handleRunStart() { // even submitted (and thus wrapped in a future), we should get our direct reference av.assertTrue(scheduler.getLongRunningTasks(-1).get(0).getLeft() == this); av.signalComplete(); } }); av.waitForTest(); }
private static void verifyCancelationExceptionMessageInCallback(String msg, ListenableFuture<?> lf) throws InterruptedException, TimeoutException { AsyncVerifier av = new AsyncVerifier(); lf.addCallback(new FutureCallback<Object>() { @Override public void handleResult(Object result) { av.fail(); } @Override public void handleFailure(Throwable t) { av.assertEquals(msg, t.getMessage()); av.signalComplete(); } }); av.waitForTest(); }
private static void verifyCompleteFuture(final ListenableFuture<?> f, final List<? extends ListenableFuture<?>> futures) throws InterruptedException, TimeoutException { final AsyncVerifier av = new AsyncVerifier(); f.addListener(new Runnable() { @Override public void run() { av.assertTrue(f.isDone()); Iterator<? extends ListenableFuture<?>> it = futures.iterator(); while (it.hasNext()) { av.assertTrue(it.next().isDone()); } av.signalComplete(); } }); av.waitForTest(); }
@Test public void computationPoolThreadRenamedTest() throws InterruptedException, TimeoutException { final String threadName = StringUtils.makeRandomString(5); AsyncVerifier av = new AsyncVerifier(); CentralThreadlyPool.computationPool(threadName).execute(() -> { av.assertTrue(Thread.currentThread().getName().startsWith(threadName)); av.signalComplete(); }); av.waitForTest(); }
public static void optimizeDoneListenerExecutorTest(ListenableFuture<?> lf) throws InterruptedException, TimeoutException { AsyncVerifier av = new AsyncVerifier(); Thread t = Thread.currentThread(); lf.addListener(() -> {av.assertTrue(Thread.currentThread() == t) ; av.signalComplete();}, CentralThreadlyPool.computationPool(), ListenerOptimizationStrategy.SingleThreadIfExecutorMatchOrDone); av.waitForTest(); }
@Test public void threadPoolRenamedTest() throws InterruptedException, TimeoutException { final String threadName = StringUtils.makeRandomString(5); AsyncVerifier av = new AsyncVerifier(); CentralThreadlyPool.threadPool(2, threadName).execute(() -> { av.assertTrue(Thread.currentThread().getName().startsWith(threadName)); av.signalComplete(); }); av.waitForTest(); }
@Test public void rangedThreadPoolThreadRenamedTest() throws InterruptedException, TimeoutException { final String threadName = StringUtils.makeRandomString(5); AsyncVerifier av = new AsyncVerifier(); CentralThreadlyPool.rangedThreadPool(0, 1, threadName).execute(() -> { av.assertTrue(Thread.currentThread().getName().startsWith(threadName)); av.signalComplete(); }); av.waitForTest(); }
@Test public void lowPriorityRenamedTest() throws InterruptedException, TimeoutException { final String threadName = StringUtils.makeRandomString(5); AsyncVerifier av = new AsyncVerifier(); CentralThreadlyPool.lowPriorityPool(threadName).execute(() -> { av.assertTrue(Thread.currentThread().getName().startsWith(threadName)); av.signalComplete(); }); av.waitForTest(); }
@Test public void lowPrioritySingleThreadRenamedTest() throws InterruptedException, TimeoutException { final String threadName = StringUtils.makeRandomString(5); AsyncVerifier av = new AsyncVerifier(); CentralThreadlyPool.lowPrioritySingleThreadPool(threadName).execute(() -> { av.assertTrue(Thread.currentThread().getName().startsWith(threadName)); av.signalComplete(); }); av.waitForTest(); }
@Test public void singleThreadRenamedTest() throws InterruptedException, TimeoutException { final String threadName = StringUtils.makeRandomString(5); AsyncVerifier av = new AsyncVerifier(); CentralThreadlyPool.singleThreadPool(false, threadName).execute(() -> { av.assertTrue(Thread.currentThread().getName().startsWith(threadName)); av.signalComplete(); }); av.waitForTest(); }
@Test public void singleThreadPriorityTest() throws InterruptedException, TimeoutException { AsyncVerifier av = new AsyncVerifier(); CentralThreadlyPool.singleThreadPool(false, null, Thread.MIN_PRIORITY).execute(() -> { av.assertEquals(Thread.MIN_PRIORITY, Thread.currentThread().getPriority()); av.signalComplete(); }); av.waitForTest(); }
@Test public void blockTillAvailableScheduleTest() throws InterruptedException, TimeoutException { final AsyncVerifier av = new AsyncVerifier(); final TestRunnable testTask = new TestRunnable(); TestRunnable tickRunnable = new TestRunnable() { @Override public void handleRunStart() { try { long startTime = Clock.accurateForwardProgressingMillis(); scheduler.schedule(testTask, DELAY_TIME); int runCount = scheduler.blockingTick(null); // should block long finishTime = Clock.accurateForwardProgressingMillis(); av.assertEquals(1, runCount); av.assertTrue(finishTime - startTime >= DELAY_TIME); av.assertTrue(testTask.ranOnce()); av.signalComplete(); } catch (InterruptedException e) { av.fail(e); } } }; new Thread(tickRunnable).start(); av.waitForTest(); }
@Test public void rangedThreadPoolAvailableExecuteTest() throws InterruptedException, TimeoutException { AsyncVerifier av = new AsyncVerifier(); CentralThreadlyPool.rangedThreadPool(0, 1).execute(av::signalComplete); av.waitForTest(); }
@Test public void lowPrioritySingleThreadExecuteTest() throws InterruptedException, TimeoutException { AsyncVerifier av = new AsyncVerifier(); CentralThreadlyPool.lowPrioritySingleThreadPool().execute(av::signalComplete); av.waitForTest(); }
@Test public void threadRenamedTest() throws InterruptedException, TimeoutException { SubmitterExecutorFactory schedulerFactory = getSubmitterExecutorFactory(); try { AsyncVerifier av = new AsyncVerifier(); schedulerFactory.makeSubmitterExecutor(1, false).execute(() -> { av.assertTrue(Thread.currentThread().getName().startsWith(THREAD_NAME)); av.signalComplete(); }); av.waitForTest(); } finally { schedulerFactory.shutdown(); } }
@Test public void threadRenamedTest() throws InterruptedException, TimeoutException { SubmitterSchedulerFactory schedulerFactory = getSubmitterSchedulerFactory(); try { AsyncVerifier av = new AsyncVerifier(); schedulerFactory.makeSubmitterExecutor(1, false).execute(() -> { av.assertTrue(Thread.currentThread().getName().startsWith(THREAD_NAME)); av.signalComplete(); }); av.waitForTest(); } finally { schedulerFactory.shutdown(); } }
@Test public void threadRenamedTest() throws InterruptedException, TimeoutException { SubmitterSchedulerFactory schedulerFactory = getSubmitterSchedulerFactory(); try { AsyncVerifier av = new AsyncVerifier(); schedulerFactory.makeSubmitterExecutor(1, false).execute(() -> { av.assertTrue(Thread.currentThread().getName().startsWith(THREAD_NAME)); av.signalComplete(); }); av.waitForTest(); } finally { schedulerFactory.shutdown(); } }
@Test public void blockTillAvailableExecuteTest() throws InterruptedException, TimeoutException { final AsyncVerifier av = new AsyncVerifier(); TestRunnable tickRunnable = new TestRunnable() { @Override public void handleRunStart() { try { int runCount = scheduler.blockingTick(null); // should block av.assertEquals(1, runCount); av.signalComplete(); } catch (InterruptedException e) { av.fail(e); } } }; new Thread(tickRunnable).start(); // should be blocked waiting for task now tickRunnable.blockTillStarted(); TestRunnable testTask = new TestRunnable(); scheduler.execute(testTask); testTask.blockTillFinished(); // should run without issue av.waitForTest(); // our parent thread should finish quickly }
@Test public void startWithSameThreadExecutorTest() throws InterruptedException, TimeoutException { AsyncVerifier av = new AsyncVerifier(); PrioritySchedulerStatisticTracker s = new PrioritySchedulerStatisticTracker(1); try { s.schedule(() -> { av.assertTrue(profiler.isRunning()); try { blockForProfilerSample(); profiler.stop(); // this should unblock the test thread } catch (Exception e) { av.fail(e); } av.signalComplete(); }, 200); profiler.start(SameThreadSubmitterExecutor.instance()); // will block while profile runs av.waitForTest(); // test already completed, just check result } finally { s.shutdownNow(); } }