@Test public void interceptSubmitRunnableLambdaTest() { List<Runnable> interceptedTasks = new ArrayList<>(1); ExecutorTaskInterceptor executorInterceptorLambda = new ExecutorTaskInterceptor(scheduler, (r1) -> { interceptedTasks.add(r1); return DoNothingRunnable.instance(); }); executorInterceptorLambda.execute(tr); assertEquals(1, interceptedTasks.size()); assertTrue(tr == interceptedTasks.get(0)); assertEquals(1, scheduler.tick()); // replaced task should run assertEquals(0, tr.getRunCount()); // should have been replaced and not run }
@Test public void interceptScheduleLambdaTest() { submitSchedulerTaskInterceptorLamba.schedule(tr, DELAY_TIME); assertEquals(1, interceptedTasks.size()); assertTrue(tr == interceptedTasks.get(0)); assertEquals(1, scheduler.advance(DELAY_TIME)); // replaced task should run assertEquals(0, tr.getRunCount()); // should have been replaced and not run }
@Test public void invokeAfterAllCompleteTest() { List<SettableListenableFuture<Void>> futures = Collections.singletonList(new SettableListenableFuture<>()); TestRunnable tr = new TestRunnable(); FutureUtils.invokeAfterAllComplete(futures, tr); assertEquals(0, tr.getRunCount()); futures.get(0).setResult(null); assertTrue(tr.ranOnce()); }
@Test public void interceptScheduleWithFixedDelayTest() { submitterSchedulerInterceptor.scheduleWithFixedDelay(tr, DELAY_TIME, DELAY_TIME); assertEquals(1, testInterceptor.getInterceptedTasks().size()); assertTrue(tr == testInterceptor.getInterceptedTasks().get(0)); assertEquals(1, scheduler.advance(DELAY_TIME)); // replaced task should run assertEquals(0, tr.getRunCount()); // should have been replaced and not run }
@Test public void interceptScheduleAtFixedRateWithPriorityTest() { priorityInterceptor.scheduleAtFixedRate(tr, DELAY_TIME, DELAY_TIME, TaskPriority.Low); assertEquals(1, testInterceptor.getInterceptedTasks().size()); assertTrue(tr == testInterceptor.getInterceptedTasks().get(0)); assertEquals(1, scheduler.advance(DELAY_TIME)); // replaced task should run assertEquals(0, tr.getRunCount()); // should have been replaced and not run }
@Test public void interceptScheduleTest() { submitterSchedulerInterceptor.schedule(tr, DELAY_TIME); assertEquals(1, testInterceptor.getInterceptedTasks().size()); assertTrue(tr == testInterceptor.getInterceptedTasks().get(0)); assertEquals(1, scheduler.advance(DELAY_TIME)); // replaced task should run assertEquals(0, tr.getRunCount()); // should have been replaced and not run }
@Test public void interceptScheduleWithPriorityTest() { priorityInterceptor.schedule(tr, DELAY_TIME, TaskPriority.Low); assertEquals(1, testInterceptor.getInterceptedTasks().size()); assertTrue(tr == testInterceptor.getInterceptedTasks().get(0)); assertEquals(1, scheduler.advance(DELAY_TIME)); // replaced task should run assertEquals(0, tr.getRunCount()); // should have been replaced and not run }
@Test public void interceptScheduleAtFixedRateTest() { submitterSchedulerInterceptor.scheduleAtFixedRate(tr, DELAY_TIME, DELAY_TIME); assertEquals(1, testInterceptor.getInterceptedTasks().size()); assertTrue(tr == testInterceptor.getInterceptedTasks().get(0)); assertEquals(1, scheduler.advance(DELAY_TIME)); // replaced task should run assertEquals(0, tr.getRunCount()); // should have been replaced and not run }
@Test public void interceptScheduleWithFixedDelayWithPriorityTest() { priorityInterceptor.scheduleWithFixedDelay(tr, DELAY_TIME, DELAY_TIME, TaskPriority.Low); assertEquals(1, testInterceptor.getInterceptedTasks().size()); assertTrue(tr == testInterceptor.getInterceptedTasks().get(0)); assertEquals(1, scheduler.advance(DELAY_TIME)); // replaced task should run assertEquals(0, tr.getRunCount()); // should have been replaced and not run }
@Test public void interceptExecuteTest() { executorInterceptor.execute(tr); assertEquals(1, testInterceptor.getInterceptedTasks().size()); assertTrue(tr == testInterceptor.getInterceptedTasks().get(0)); assertEquals(1, scheduler.tick()); // replaced task should run assertEquals(0, tr.getRunCount()); // should have been replaced and not run }
@Test public void interceptSubmitScheduledRunnableWithResultWithPriorityTest() throws InterruptedException, ExecutionException { Object result = new Object(); ListenableFuture<Object> f = priorityInterceptor.submitScheduled(tr, result, DELAY_TIME, TaskPriority.Low); assertEquals(1, testInterceptor.getInterceptedTasks().size()); assertTrue(tr == testInterceptor.getInterceptedTasks().get(0)); assertEquals(1, scheduler.advance(DELAY_TIME)); // replaced task should run assertEquals(0, tr.getRunCount()); // should have been replaced and not run assertTrue(f.isDone()); assertTrue(f.get() == result); }
@Test public void interceptSubmitScheduledRunnableWithResultTest() throws InterruptedException, ExecutionException { Object result = new Object(); ListenableFuture<Object> f = submitterSchedulerInterceptor.submitScheduled(tr, result, DELAY_TIME); assertEquals(1, testInterceptor.getInterceptedTasks().size()); assertTrue(tr == testInterceptor.getInterceptedTasks().get(0)); assertEquals(1, scheduler.advance(DELAY_TIME)); // replaced task should run assertEquals(0, tr.getRunCount()); // should have been replaced and not run assertTrue(f.isDone()); assertTrue(f.get() == result); }
@Test public void interceptSubmitScheduledRunnableWithPriorityTest() { ListenableFuture<?> f = priorityInterceptor.submitScheduled(tr, DELAY_TIME, TaskPriority.Low); assertEquals(1, testInterceptor.getInterceptedTasks().size()); assertTrue(tr == testInterceptor.getInterceptedTasks().get(0)); assertEquals(1, scheduler.advance(DELAY_TIME)); // replaced task should run assertEquals(0, tr.getRunCount()); // should have been replaced and not run assertTrue(f.isDone()); }
@Test public void interceptSubmitScheduledRunnableTest() { ListenableFuture<?> f = submitterSchedulerInterceptor.submitScheduled(tr, DELAY_TIME); assertEquals(1, testInterceptor.getInterceptedTasks().size()); assertTrue(tr == testInterceptor.getInterceptedTasks().get(0)); assertEquals(1, scheduler.advance(DELAY_TIME)); // replaced task should run assertEquals(0, tr.getRunCount()); // should have been replaced and not run assertTrue(f.isDone()); }
@Test public void signalToRunImmediatelyOnCallingThreadTest() { TestReschedulingOperation testOp = new TestReschedulingOperation(scheduler, SCHEDULE_DELAY, false); testOp.signalToRunImmediately(true); assertEquals(1, testOp.tr.getRunCount()); assertEquals(0, scheduler.advance(SCHEDULE_DELAY)); // should have run in-thread not on scheduler }
@Test public void signalToRunImmediatelyOnSchedulerTest() { TestReschedulingOperation testOp = new TestReschedulingOperation(scheduler, SCHEDULE_DELAY, false); testOp.signalToRunImmediately(false); assertEquals(1, scheduler.advance(1)); assertEquals(1, testOp.tr.getRunCount()); }
@Test public void changeScheduleDelayTest() { TestReschedulingOperation testOp = new TestReschedulingOperation(scheduler, SCHEDULE_DELAY, true); testOp.setScheduleDelay(SCHEDULE_DELAY / 2); testOp.signalToRun(); assertEquals(1, scheduler.advance(SCHEDULE_DELAY / 2)); assertEquals(1, testOp.tr.getRunCount()); }
@Test public void autoRescheduleTest() { TestReschedulingOperation testOp = new TestReschedulingOperation(scheduler, SCHEDULE_DELAY, true); testOp.signalToRun(); // should run every time assertEquals(1, scheduler.advance(SCHEDULE_DELAY)); assertEquals(1, scheduler.advance(SCHEDULE_DELAY)); assertEquals(1, scheduler.getQueuedTaskCount()); assertEquals(2, testOp.tr.getRunCount()); }
@Test public void constructorTest() { assertEquals(0, instance.getRunCount()); assertFalse(instance.ranOnce()); assertFalse(instance.ranConcurrently()); assertEquals(0, instance.getRunDelayInMillis()); instance = new TestRunnable(DELAY_TIME); assertEquals(DELAY_TIME, instance.getRunDelayInMillis()); }
@Test public void runnableScheduleWhileFirstRunInThreadTest() throws Exception { int scheduleDelayMillis = 10; TestableScheduler scheduler = new TestableScheduler(); TestRunnable tr = new TestRunnable(); ListenableFuture<?> f = FutureUtils.scheduleWhile(scheduler, scheduleDelayMillis, false, tr, () -> tr.getRunCount() < 2); assertFalse(f.isDone()); assertEquals(1, scheduler.advance(scheduleDelayMillis)); assertTrue(f.isDone()); assertNull(f.get()); // verify no error state }