@Test public void drainQueueIntoTest() { List<TaskWrapper> depositList = new ArrayList<>(2); OneTimeTaskWrapper task = new OneTimeTaskWrapper(DoNothingRunnable.instance(), null, Clock.lastKnownForwardProgressingMillis()); queueSet.executeQueue.add(task); queueSet.drainQueueInto(depositList); assertTrue(depositList.contains(task)); depositList.clear(); queueSet.scheduleQueue.add(task); queueSet.drainQueueInto(depositList); assertTrue(depositList.contains(task)); }
@Test public void getNextTaskExecuteOnlyTest() { OneTimeTaskWrapper task = new OneTimeTaskWrapper(DoNothingRunnable.instance(), null, Clock.accurateForwardProgressingMillis() + DELAY_TIME); queueSet.executeQueue.add(task); assertTrue(queueSet.getNextTask() == task); }
@Test public void addScheduledTest() { TaskWrapper task = new OneTimeTaskWrapper(DoNothingRunnable.instance(), null, Clock.lastKnownForwardProgressingMillis() + 10); queueSet.addScheduled(task); assertEquals(0, queueSet.executeQueue.size()); assertEquals(1, queueSet.scheduleQueue.size()); }
@Test public void getNextReadyTaskScheduledAheadOfExecuteTest() { TaskWrapper scheduleTask = new OneTimeTaskWrapper(DoNothingRunnable.instance(), queueManager.highPriorityQueueSet.scheduleQueue, Clock.accurateForwardProgressingMillis()); queueManager.highPriorityQueueSet.addScheduled(scheduleTask); TestUtils.blockTillClockAdvances(); OneTimeTaskWrapper executeTask = new OneTimeTaskWrapper(DoNothingRunnable.instance(), queueManager.highPriorityQueueSet.executeQueue, Clock.lastKnownForwardProgressingMillis()); queueManager.highPriorityQueueSet.addExecute(executeTask); assertTrue(scheduleTask == queueManager.getNextTask()); assertTrue(scheduleTask == queueManager.getNextTask()); // schedule task has not been removed yet // this should remove the schedule task so we can get the execute task assertTrue(scheduleTask.canExecute(executeTask.getExecuteReference())); assertTrue(executeTask == queueManager.getNextTask()); }
@Override protected OneTimeTaskWrapper doSchedule(Runnable task, long delayInMillis, TaskPriority priority) { QueueSet queueSet = taskQueueManager.getQueueSet(priority); OneTimeTaskWrapper result; if (delayInMillis == 0) { addToExecuteQueue(queueSet, (result = new ImmediateTaskWrapper(task, queueSet.executeQueue))); } else { addToScheduleQueue(queueSet, (result = new OneTimeTaskWrapper(task, queueSet.scheduleQueue, Clock.accurateForwardProgressingMillis() + delayInMillis))); } return result; }
@Override protected OneTimeTaskWrapper doSchedule(Runnable task, long delayInMillis, TaskPriority priority) { QueueSet queueSet = taskQueueManager.getQueueSet(priority); OneTimeTaskWrapper result; if (delayInMillis == 0) { addToExecuteQueue(queueSet, (result = new ImmediateTaskWrapper(task, queueSet.executeQueue))); } else { addToScheduleQueue(queueSet, (result = new OneTimeTaskWrapper(task, queueSet.scheduleQueue, Clock.accurateForwardProgressingMillis() + delayInMillis))); } return result; }
@Test public void removeRunnableTest() { TestRunnable runnable = new TestRunnable(); OneTimeTaskWrapper task = new OneTimeTaskWrapper(runnable, null, Clock.lastKnownForwardProgressingMillis()); assertFalse(queueSet.remove(runnable)); queueSet.executeQueue.add(task); assertTrue(queueSet.remove(runnable)); assertFalse(queueSet.remove(runnable)); queueSet.scheduleQueue.addFirst(task); assertTrue(queueSet.remove(runnable)); assertFalse(queueSet.remove(runnable)); }
@Test public void removeCallableTest() { TestCallable callable = new TestCallable(); OneTimeTaskWrapper task = new OneTimeTaskWrapper(new ListenableFutureTask<>(false, callable), null, Clock.lastKnownForwardProgressingMillis()); assertFalse(queueSet.remove(callable)); queueSet.executeQueue.add(task); assertTrue(queueSet.remove(callable)); assertFalse(queueSet.remove(callable)); queueSet.scheduleQueue.addFirst(task); assertTrue(queueSet.remove(callable)); assertFalse(queueSet.remove(callable)); }
@Test public void getNextReadyTaskHighPriorityDelayedTest() { TaskWrapper scheduleTask = new OneTimeTaskWrapper(DoNothingRunnable.instance(), queueManager.highPriorityQueueSet.scheduleQueue, Clock.accurateForwardProgressingMillis() + 1000); queueManager.highPriorityQueueSet.addScheduled(scheduleTask); TestUtils.blockTillClockAdvances(); OneTimeTaskWrapper executeTask = new OneTimeTaskWrapper(DoNothingRunnable.instance(), queueManager.lowPriorityQueueSet.executeQueue, Clock.lastKnownForwardProgressingMillis()); queueManager.lowPriorityQueueSet.addExecute(executeTask); assertTrue(executeTask == queueManager.getNextTask()); }
@Test public void removeRunnableTest() { TestRunnable runnable = new TestRunnable(); OneTimeTaskWrapper task = new OneTimeTaskWrapper(runnable, null, Clock.lastKnownForwardProgressingMillis()); assertFalse(queueManager.remove(runnable)); queueManager.highPriorityQueueSet.executeQueue.add(task); assertTrue(queueManager.remove(runnable)); assertFalse(queueManager.remove(runnable)); queueManager.lowPriorityQueueSet.scheduleQueue.addFirst(task); assertTrue(queueManager.remove(runnable)); assertFalse(queueManager.remove(runnable)); }
@Test public void getNextReadyTaskHighPriorityReadyFirstTest() { TaskWrapper highTask = new OneTimeTaskWrapper(DoNothingRunnable.instance(), queueManager.highPriorityQueueSet.scheduleQueue, Clock.accurateForwardProgressingMillis() + DELAY_TIME); TaskWrapper lowTask = new OneTimeTaskWrapper(DoNothingRunnable.instance(), queueManager.lowPriorityQueueSet.scheduleQueue, Clock.lastKnownForwardProgressingMillis() + (DELAY_TIME * 10)); queueManager.highPriorityQueueSet.addScheduled(highTask); queueManager.lowPriorityQueueSet.addScheduled(lowTask); assertTrue(highTask == queueManager.getNextTask()); }
private void getNextReadyTaskScheduledTest(QueueSet queueSet) { TaskWrapper task = new OneTimeTaskWrapper(DoNothingRunnable.instance(), queueSet.scheduleQueue, Clock.lastKnownForwardProgressingMillis()); queueSet.addScheduled(task); assertTrue(task == queueManager.getNextTask()); }
@Test public void removeCallableTest() { TestCallable callable = new TestCallable(); OneTimeTaskWrapper task = new OneTimeTaskWrapper(new ListenableFutureTask<>(false, callable), null, Clock.lastKnownForwardProgressingMillis()); assertFalse(queueManager.remove(callable)); queueManager.highPriorityQueueSet.executeQueue.add(task); assertTrue(queueManager.remove(callable)); assertFalse(queueManager.remove(callable)); queueManager.lowPriorityQueueSet.scheduleQueue.addFirst(task); assertTrue(queueManager.remove(callable)); assertFalse(queueManager.remove(callable)); }
private void getNextReadyTaskExecuteTest(QueueSet queueSet) { OneTimeTaskWrapper task = new OneTimeTaskWrapper(DoNothingRunnable.instance(), queueSet.executeQueue, Clock.lastKnownForwardProgressingMillis()); queueSet.addExecute(task); assertTrue(task == queueManager.getNextTask()); }
@Test public void getNextTaskExecuteFirstTest() { OneTimeTaskWrapper executeTask = new OneTimeTaskWrapper(DoNothingRunnable.instance(), null, Clock.accurateForwardProgressingMillis()); OneTimeTaskWrapper scheduleTask = new OneTimeTaskWrapper(new TestRunnable(), null, Clock.accurateForwardProgressingMillis() + DELAY_TIME); queueSet.executeQueue.add(executeTask); queueSet.scheduleQueue.add(scheduleTask); assertTrue(queueSet.getNextTask() == executeTask); }
@Test public void addExecuteTest() { OneTimeTaskWrapper task = new OneTimeTaskWrapper(DoNothingRunnable.instance(), null, Clock.lastKnownForwardProgressingMillis()); queueSet.addExecute(task); assertEquals(1, queueSet.executeQueue.size()); assertEquals(0, queueSet.scheduleQueue.size()); }
@Test public void getNextReadyTaskLowPriorityReadyFirstTest() { TaskWrapper highTask = new OneTimeTaskWrapper(DoNothingRunnable.instance(), queueManager.highPriorityQueueSet.scheduleQueue, Clock.accurateForwardProgressingMillis() + (DELAY_TIME * 10)); TaskWrapper lowTask = new OneTimeTaskWrapper(DoNothingRunnable.instance(), queueManager.lowPriorityQueueSet.scheduleQueue, Clock.lastKnownForwardProgressingMillis() + DELAY_TIME); queueManager.highPriorityQueueSet.addScheduled(highTask); queueManager.lowPriorityQueueSet.addScheduled(lowTask); assertTrue(lowTask == queueManager.getNextTask()); }
@Test public void getNextTaskScheduleOnlyTest() { OneTimeTaskWrapper task = new OneTimeTaskWrapper(DoNothingRunnable.instance(), null, Clock.accurateForwardProgressingMillis() + DELAY_TIME); queueSet.scheduleQueue.add(task); assertTrue(queueSet.getNextTask() == task); }
@Test public void queueSizeTest() { assertEquals(0, queueSet.queueSize()); OneTimeTaskWrapper task = new OneTimeTaskWrapper(DoNothingRunnable.instance(), null, Clock.lastKnownForwardProgressingMillis()); queueSet.executeQueue.add(task); queueSet.scheduleQueue.addFirst(task); assertEquals(2, queueSet.queueSize()); }
@Test public void getNextTaskScheduleFirstTest() { OneTimeTaskWrapper executeTask = new OneTimeTaskWrapper(DoNothingRunnable.instance(), null, Clock.accurateForwardProgressingMillis() + DELAY_TIME); OneTimeTaskWrapper scheduleTask = new OneTimeTaskWrapper(DoNothingRunnable.instance(), null, Clock.lastKnownForwardProgressingMillis()); queueSet.executeQueue.add(executeTask); queueSet.scheduleQueue.add(scheduleTask); assertTrue(queueSet.getNextTask() == scheduleTask); }