@Before public void setup() { scheduler = new TestableScheduler(); }
@Before public void setup() { scheduler = new TestableScheduler(); watchdog = new WatchdogCache(scheduler, true, 1); }
@Before public void setup() { scheduler = new TestableScheduler(); limiter = new RateLimiterExecutor(scheduler, 1); }
@Before public void setup() { scheduler = new TestableScheduler(); poller = new Poller(scheduler, POLL_INTERVAL); }
@Test public void executeHighPriorityTest() { TestableScheduler highScheduler = new TestableScheduler(); TestableScheduler lowScheduler = new TestableScheduler(); PriorityDelegatingScheduler delegatingScheduler = new PriorityDelegatingScheduler(highScheduler, lowScheduler, null, TaskPriority.Starvable); delegatingScheduler.execute(DoNothingRunnable.instance(), TaskPriority.High); assertEquals(1, highScheduler.tick()); assertEquals(0, lowScheduler.tick()); }
@Test public void submitScheduledHighPriorityTest() { TestableScheduler highScheduler = new TestableScheduler(); TestableScheduler lowScheduler = new TestableScheduler(); PriorityDelegatingScheduler delegatingScheduler = new PriorityDelegatingScheduler(highScheduler, lowScheduler, null, TaskPriority.Starvable); delegatingScheduler.submitScheduled(DoNothingRunnable.instance(), 100, TaskPriority.High); assertEquals(1, highScheduler.advance(100)); assertEquals(0, lowScheduler.advance(100)); }
@Test public void getDefaultPriorityTest() { TestableScheduler testableScheduler = new TestableScheduler(); PrioritySchedulerServiceQueueLimitRejector queueRejector = new PrioritySchedulerServiceQueueLimitRejector(testableScheduler, TEST_QTY); assertEquals(testableScheduler.getDefaultPriority(), queueRejector.getDefaultPriority()); }
@Test public void schedulerPriorityWithoutStarvableSchedulerTest() { TestableScheduler highScheduler = new TestableScheduler(); TestableScheduler lowScheduler = new TestableScheduler(); PriorityDelegatingScheduler delegatingScheduler = new PriorityDelegatingScheduler(highScheduler, lowScheduler, null, TaskPriority.Starvable); assertTrue(highScheduler == delegatingScheduler.scheduler(TaskPriority.High)); assertTrue(lowScheduler == delegatingScheduler.scheduler(TaskPriority.Low)); assertTrue(lowScheduler == delegatingScheduler.scheduler(TaskPriority.Starvable)); assertTrue(lowScheduler == delegatingScheduler.scheduler(null)); }
@Test public void getMaxWaitForLowPriority() { TestableScheduler testableScheduler = new TestableScheduler(); PrioritySchedulerServiceQueueLimitRejector queueRejector = new PrioritySchedulerServiceQueueLimitRejector(testableScheduler, TEST_QTY); assertEquals(testableScheduler.getMaxWaitForLowPriority(), queueRejector.getMaxWaitForLowPriority()); }
@Test public void scheduleWhileAlreadyDoneWithFinalResultTest() throws Exception { TestableScheduler scheduler = new TestableScheduler(); Object result = new Object(); ListenableFuture<Object> f = FutureUtils.scheduleWhile(scheduler, 2, FutureUtils.immediateResultFuture(result), () -> result, (o) -> false); assertTrue(f.isDone()); assertTrue(result == f.get()); }
@Test public void getSetQueueLimitTest() { TestableScheduler testableScheduler = new TestableScheduler(); SchedulerServiceQueueLimitRejector queueRejector = new SchedulerServiceQueueLimitRejector(testableScheduler, TEST_QTY); assertEquals(TEST_QTY, queueRejector.getQueueLimit()); queueRejector.setQueueLimit(TEST_QTY * 2); assertEquals(TEST_QTY * 2, queueRejector.getQueueLimit()); }
@Test public void getSetQueueLimitTest() { TestableScheduler testableScheduler = new TestableScheduler(); ExecutorQueueLimitRejector queueRejector = new ExecutorQueueLimitRejector(testableScheduler, TEST_QTY); assertEquals(TEST_QTY, queueRejector.getQueueLimit()); queueRejector.setQueueLimit(TEST_QTY * 2); assertEquals(TEST_QTY * 2, queueRejector.getQueueLimit()); }
@Test public void getSetQueueLimitTest() { TestableScheduler testableScheduler = new TestableScheduler(); PrioritySchedulerServiceQueueLimitRejector queueRejector = new PrioritySchedulerServiceQueueLimitRejector(testableScheduler, TEST_QTY); assertEquals(TEST_QTY, queueRejector.getQueueLimit()); queueRejector.setQueueLimit(TEST_QTY * 2); assertEquals(TEST_QTY * 2, queueRejector.getQueueLimit()); }
@Test public void getSetQueueLimitTest() { TestableScheduler testableScheduler = new TestableScheduler(); SubmitterSchedulerQueueLimitRejector queueRejector = new SubmitterSchedulerQueueLimitRejector(testableScheduler, TEST_QTY); assertEquals(TEST_QTY, queueRejector.getQueueLimit()); queueRejector.setQueueLimit(TEST_QTY * 2); assertEquals(TEST_QTY * 2, queueRejector.getQueueLimit()); }
@Test public void scheduleWhileAlreadyDoneCanceledTest() { TestableScheduler scheduler = new TestableScheduler(); SettableListenableFuture<?> startingFuture = new SettableListenableFuture<>(); startingFuture.cancel(false); ListenableFuture<Object> f = FutureUtils.scheduleWhile(scheduler, 2, startingFuture, () -> null, (o) -> false); assertTrue(f.isDone()); assertTrue(f.isCancelled()); }
@Override @Test public void getQueuedTaskCountTest() { TestableScheduler testableScheduler = new TestableScheduler(); SchedulerServiceQueueLimitRejector queueRejector = new SchedulerServiceQueueLimitRejector(testableScheduler, TEST_QTY); for (int i = 0; i < TEST_QTY; i++) { assertEquals(i, queueRejector.getQueuedTaskCount()); queueRejector.execute(DoNothingRunnable.instance()); } testableScheduler.tick(); assertEquals(0, queueRejector.getQueuedTaskCount()); }
@Test public void flatMapWithExecutorAlreadyDoneMapperThrowExceptionTest() throws InterruptedException { TestableScheduler scheduler = new TestableScheduler(); RuntimeException failure = new SuppressedStackRuntimeException(); ListenableFuture<?> lf = makeListenableFutureFactory().makeWithResult(null); ListenableFuture<Void> mappedLF = lf.flatMap((o) -> { throw failure; }, scheduler); assertEquals(1, scheduler.tick()); assertTrue(mappedLF.isDone()); verifyFutureFailure(mappedLF, failure); }
@Test public void flatMapWithExecutorAlreadyDoneMapperReturnFailedFutureTest() throws InterruptedException { TestableScheduler scheduler = new TestableScheduler(); RuntimeException failure = new SuppressedStackRuntimeException(); ListenableFuture<?> lf = makeListenableFutureFactory().makeWithResult(null); ListenableFuture<Void> mappedLF = lf.flatMap((o) -> FutureUtils.immediateFailureFuture(failure), scheduler); assertEquals(1, scheduler.tick()); assertTrue(mappedLF.isDone()); verifyFutureFailure(mappedLF, failure); }
@Test public void getQueuedTaskCountTest() { assertEquals(0, statWrapper.getQueuedTaskCount()); TestableScheduler scheduler = new TestableScheduler(); statWrapper = new ExecutorStatisticWrapper(scheduler); statWrapper.execute(DoNothingRunnable.instance()); assertEquals(1, statWrapper.getQueuedTaskCount()); scheduler.tick(); assertEquals(0, statWrapper.getQueuedTaskCount()); }
@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 }