@Test public void scheduleInOrderTest() { TestRunnable lastRun = null; int testQty = 0; while (testQty < TEST_QTY) { testQty++; final TestRunnable fLastRun = lastRun; lastRun = new TestRunnable() { @Override public void handleRunStart() { if (fLastRun != null && !fLastRun.ranOnce()) { fail("last run did not complete"); } } }; scheduler.schedule(lastRun, DELAY_TIME); } // should throw exception if any internal failures occurred scheduler.tick(null); }
assertFalse(scheduler.remove(tr)); scheduler.schedule(tr, DELAY_TIME); assertTrue(scheduler.remove(tr)); assertFalse(scheduler.remove(tr));
@Test public void executeInOrderTest() { TestRunnable lastRun = null; long startTime = System.currentTimeMillis(); int testQty = 0; while (testQty < TEST_QTY || System.currentTimeMillis() - startTime < 100) { testQty++; final TestRunnable fLastRun = lastRun; lastRun = new TestRunnable() { @Override public void handleRunStart() { if (fLastRun != null && !fLastRun.ranOnce()) { fail("last run did not complete"); } } }; scheduler.schedule(DoNothingRunnable.instance(), 5); scheduler.execute(lastRun); } // should throw exception if any internal failures occurred scheduler.tick(null); }
@Test public void clearTasksTest() { scheduler.schedule(DoNothingRunnable.instance(), 1000 * 15); scheduler.execute(DoNothingRunnable.instance()); scheduler.clearTasks(); assertEquals(0, scheduler.queueManager.highPriorityQueueSet.queueSize()); assertEquals(0, scheduler.queueManager.lowPriorityQueueSet.queueSize()); } }
@Test public void scheduleRunnableTest() { TestRunnable tr = new TestRunnable(); long scheduleTime = Clock.accurateForwardProgressingMillis(); scheduler.schedule(tr, DELAY_TIME); int runCount = 0; while (runCount == 0) { runCount = scheduler.tick(null); } long runTime = Clock.accurateForwardProgressingMillis(); assertEquals(1, runCount); assertTrue(tr.ranOnce()); assertTrue((runTime - scheduleTime) >= DELAY_TIME); }
@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); } } };
@Test public void hasTaskReadyToRunTest() { assertFalse(scheduler.hasTaskReadyToRun()); // schedule in the future scheduler.schedule(DoNothingRunnable.instance(), 1000 * 15); // still should have nothing ready to run assertFalse(scheduler.hasTaskReadyToRun()); scheduler.execute(DoNothingRunnable.instance()); // should now have tasks ready to run assertTrue(scheduler.hasTaskReadyToRun()); scheduler.tick(null); // should no longer have anything to run assertFalse(scheduler.hasTaskReadyToRun()); scheduler.queueManager.highPriorityQueueSet .addScheduled(new OneTimeTaskWrapper(DoNothingRunnable.instance(), scheduler.queueManager.highPriorityQueueSet.scheduleQueue, Clock.lastKnownForwardProgressingMillis())); // now should be true with scheduled task which is ready to run assertTrue(scheduler.hasTaskReadyToRun()); }
@Test public void getDelayTillNextTaskTest() { assertEquals(Long.MAX_VALUE, scheduler.getDelayTillNextTask()); // schedule in the future scheduler.schedule(DoNothingRunnable.instance(), 1000 * 15); // still should have nothing ready to run assertTrue(scheduler.getDelayTillNextTask() > 0); scheduler.execute(DoNothingRunnable.instance()); // should now have tasks ready to run assertTrue(scheduler.getDelayTillNextTask() <= 0); scheduler.tick(null); // should no longer have anything to run assertTrue(scheduler.getDelayTillNextTask() > 0); scheduler.queueManager.highPriorityQueueSet .addScheduled(new OneTimeTaskWrapper(DoNothingRunnable.instance(), scheduler.queueManager.highPriorityQueueSet.scheduleQueue, Clock.lastKnownForwardProgressingMillis())); // now should be true with scheduled task which is ready to run assertTrue(scheduler.getDelayTillNextTask() <= 0); }