/** * Overridden version which delegates to {@link #wrapTask(Runnable, boolean)}. There should be * no reason to override this, instead just ensure that {@link #wrapTask(Runnable, boolean)} is * implemented. */ @Override public final Runnable wrapTask(Runnable task) { return wrapTask(task, false); }
@Override @Test (expected = RuntimeException.class) public void defaultConstructorFail() { SubmitterSchedulerTaskInterceptor ssti = new SubmitterSchedulerTaskInterceptor(scheduler); ssti.schedule(DoNothingRunnable.instance(), 10); }
@Test public void interceptSubmitScheduledCallableTest() { ListenableFuture<?> f = submitterSchedulerInterceptor.submitScheduled(new TestCallable(), DELAY_TIME); assertEquals(1, testInterceptor.getInterceptedTasks().size()); assertTrue(testInterceptor.getInterceptedTasks().get(0) instanceof ListenableFutureTask); assertEquals(1, scheduler.advance(DELAY_TIME)); // replaced task should run assertFalse(f.isDone()); }
@Override @Test (expected = RuntimeException.class) public void nullConstructorFail() { @SuppressWarnings("unused") SubmitterSchedulerTaskInterceptor ssti = new SubmitterSchedulerTaskInterceptor(scheduler, null); }
@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 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 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 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); }
@Before @Override public void setup() { scheduler = new TestableScheduler(); submitterSchedulerInterceptor = new TestSubmitterSchedulerInterceptor(scheduler); executorInterceptor = submitterSchedulerInterceptor; testInterceptor = (TestInterceptor)executorInterceptor; interceptedTasks = new ArrayList<>(1); submitSchedulerTaskInterceptorLamba = new SubmitterSchedulerTaskInterceptor(scheduler, (r1, b1) -> { interceptedTasks.add(r1); return DoNothingRunnable.instance(); }); tr = new TestRunnable(); }
@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 }
/** * Overridden version which delegates to {@link #wrapTask(Runnable, boolean)}. There should be * no reason to override this, instead just ensure that {@link #wrapTask(Runnable, boolean)} is * implemented. */ @Override public final Runnable wrapTask(Runnable task) { return wrapTask(task, false); }
@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()); }
@Override public <T> ListenableFuture<T> submitScheduled(Runnable task, T result, long delayInMs) { return parentScheduler.submitScheduled(task == null ? null : wrapTask(task, false), result, delayInMs); }
@Override public void scheduleAtFixedRate(Runnable task, long initialDelay, long period) { parentScheduler.scheduleAtFixedRate(task == null ? null : wrapTask(task, true), initialDelay, period); } }
@Override public <T> ListenableFuture<T> submitScheduled(Runnable task, T result, long delayInMs) { return parentScheduler.submitScheduled(task == null ? null : wrapTask(task, false), result, delayInMs); }
@Override public void scheduleWithFixedDelay(Runnable task, long initialDelay, long recurringDelay) { parentScheduler.scheduleWithFixedDelay(task == null ? null : wrapTask(task, true), initialDelay, recurringDelay); }
@Override public void scheduleAtFixedRate(Runnable task, long initialDelay, long period) { parentScheduler.scheduleAtFixedRate(task == null ? null : wrapTask(task, true), initialDelay, period); } }
@Override public void scheduleWithFixedDelay(Runnable task, long initialDelay, long recurringDelay) { parentScheduler.scheduleWithFixedDelay(task == null ? null : wrapTask(task, true), initialDelay, recurringDelay); }
@Override public void schedule(Runnable task, long delayInMs) { parentScheduler.schedule(task == null ? null : wrapTask(task, false), delayInMs); }
@Override public void schedule(Runnable task, long delayInMs) { parentScheduler.schedule(task == null ? null : wrapTask(task, false), delayInMs); }