public Date nextFireTime() { return orig.nextFireTime(); }
@Test public void timerIsResetWhenJobThrowsExceptions() { final Date triggerTime = new Date(1000); when( mockTrigger_1.hasNextFireTime() ).thenReturn(triggerTime, triggerTime, triggerTime, null); when( mockTrigger_1.nextFireTime() ).thenReturn(triggerTime); Job job = new Job() { public void execute(JobContext ctx) { assertThat(scheduler.getCurrentTime(), is(1000L)); throw new RuntimeException("for test"); } }; scheduler.scheduleJob(job, this.mockContext_1, mockTrigger_1); scheduler.advanceTime(5000, TimeUnit.MILLISECONDS); // The time must be advanced correctly even when the job throws an exception assertThat(scheduler.getCurrentTime(), is(5000L)); verify( mockTrigger_1, atLeast(2) ).hasNextFireTime(); verify( mockTrigger_1, times(1) ).nextFireTime(); } }
@Test public void timerIsSetToJobTriggerTimeForExecution() { final Date triggerTime = new Date(1000); when( mockTrigger_1.hasNextFireTime() ).thenReturn(triggerTime, triggerTime, triggerTime, null); when( mockTrigger_1.nextFireTime() ).thenReturn(triggerTime); Job job = new Job() { public void execute(JobContext ctx) { // Even though the clock has been advanced to 5000, the job should run // with the time set its trigger time. assertThat(scheduler.getCurrentTime(), is(1000L)); } }; scheduler.scheduleJob(job, this.mockContext_1, mockTrigger_1); scheduler.advanceTime(5000, TimeUnit.MILLISECONDS); // Now, after the job has been executed the time should be what it was advanced to assertThat(scheduler.getCurrentTime(), is(5000L)); verify( mockTrigger_1, atLeast(2) ).hasNextFireTime(); verify( mockTrigger_1, times(1) ).nextFireTime(); }
@Test public void testMixedDurationAndTimer() { CompositeMaxDurationTimer timer = new CompositeMaxDurationTimer(); timer.addDurationTimer( new DurationTimer( 25 ) ); timer.addDurationTimer( new DurationTimer( 50 ) ); timer.addDurationTimer( new DurationTimer( 70 ) ); timer.setTimer( new IntervalTimer(null, null, 6, 40, 25) ); Date timestamp = new Date(); Trigger trigger = timer.createTrigger( timestamp.getTime(), null, null, null, null, null, null ); // ignores the first interval timer at 65 assertEquals( new Date( timestamp.getTime() + 70 ), trigger.hasNextFireTime() ); assertEquals( new Date( timestamp.getTime() + 90 ), trigger.nextFireTime() ); assertEquals( new Date( timestamp.getTime() + 115 ), trigger.nextFireTime() ); assertEquals( new Date( timestamp.getTime() + 140 ), trigger.nextFireTime() ); assertNull( trigger.nextFireTime() ); assertNull( trigger.hasNextFireTime() ); } }
public Date nextFireTime() { return orig.nextFireTime(); }
@Test public void testJustMaxDuration() { CompositeMaxDurationTimer timer = new CompositeMaxDurationTimer(); timer.addDurationTimer( new DurationTimer( 25 ) ); timer.addDurationTimer( new DurationTimer( 50 ) ); timer.addDurationTimer( new DurationTimer( 70 ) ); Date timestamp = new Date(); Trigger trigger = timer.createTrigger( timestamp.getTime(), null, null, null, null, null, null ); assertEquals( new Date( timestamp.getTime() + 70 ), trigger.hasNextFireTime() ); assertNull( trigger.nextFireTime() ); assertNull( trigger.hasNextFireTime() ); }