@Test public void submitCallableTest() throws InterruptedException, ExecutionException { List<TestCallable> callables = getCallableList(); List<Future<Object>> futures = new ArrayList<>(callables.size()); Iterator<TestCallable> it = callables.iterator(); while (it.hasNext()) { Future<Object> future = scheduler.submit(it.next()); assertNotNull(future); futures.add(future); } // all should run now assertEquals(TEST_QTY, scheduler.tick(Clock.lastKnownTimeMillis())); it = callables.iterator(); while (it.hasNext()) { assertTrue(it.next().isDone()); } it = callables.iterator(); Iterator<Future<Object>> futureIt = futures.iterator(); while (futureIt.hasNext()) { Future<Object> future = futureIt.next(); TestCallable tc = it.next(); assertTrue(future.isDone()); assertTrue(tc.getReturnedResult() == future.get()); } }
@Test public void submitScheduledCallableTest() { long scheduleDelay = 1000 * 10; TestCallable submitRun = new TestCallable(); TestCallable scheduleRun = new TestCallable(); Future<?> future = scheduler.submit(submitRun); assertNotNull(future); future = scheduler.submitScheduled(scheduleRun, scheduleDelay); assertNotNull(future); assertEquals(1, scheduler.tick()); assertTrue(submitRun.isDone()); // should have run assertFalse(scheduleRun.isDone()); // should NOT have run yet assertEquals(1, scheduler.advance(scheduleDelay)); assertTrue(scheduleRun.isDone()); // should have run assertEquals(0, scheduler.advance(scheduleDelay)); // should not execute anything }
@Test public void submitScheduledRunnableTest() { long scheduleDelay = 1000 * 10; TestRunnable submitRun = new TestRunnable(); TestRunnable scheduleRun = new TestRunnable(); Future<?> future = scheduler.submit(submitRun); assertNotNull(future); future = scheduler.submitScheduled(scheduleRun, scheduleDelay); assertNotNull(future); assertEquals(1, scheduler.tick()); assertEquals(1, submitRun.getRunCount()); // should have run assertEquals(0, scheduleRun.getRunCount()); // should NOT have run yet assertEquals(1, scheduler.advance(scheduleDelay)); assertEquals(1, submitRun.getRunCount()); // should NOT have run again assertEquals(1, scheduleRun.getRunCount()); // should have run assertEquals(0, scheduler.advance(scheduleDelay)); // should not execute anything assertEquals(1, submitRun.getRunCount()); // should NOT have run again assertEquals(1, scheduleRun.getRunCount()); // should NOT have run again }
Iterator<TestRunnable> it = runnables.iterator(); while (it.hasNext()) { Future<?> future = scheduler.submit(it.next()); assertNotNull(future); futures.add(future);