@Test public void shouldScheduleRepeatingPeriodSchedulableJob() throws SchedulerException { try { fakeNow(new DateTime(2020, 7, 15, 10, 0, 0)); Map<String, Object> params = new HashMap<>(); params.put(MotechSchedulerService.JOB_ID_KEY, "job_id"); schedulerService.scheduleRepeatingPeriodJob( new RepeatingPeriodSchedulableJob( new MotechEvent("test_event_3", params), newDateTime(2020, 7, 15, 12, 0, 0), newDateTime(2020, 7, 16, 12, 0, 0), new Period(4, 0, 0, 0), true)); List<DateTime> fireTimes = getFireTimes("test_event_3-job_id-period"); assertEquals( asList( new DateTime(2020, 7, 15, 12, 0, 0), new DateTime(2020, 7, 15, 16, 0, 0), new DateTime(2020, 7, 15, 20, 0, 0), new DateTime(2020, 7, 16, 0, 0, 0), new DateTime(2020, 7, 16, 4, 0, 0), new DateTime(2020, 7, 16, 8, 0, 0), new DateTime(2020, 7, 16, 12, 0, 0)), fireTimes); } finally { stopFakingTime(); } }
@Override public void scheduleRepeatingPeriodJob( String subject, Map<Object, Object> parameters, DateTime startTime, DateTime endTime, Period repeatPeriod, Boolean ignorePastFiresAtStart, Boolean useOriginalFireTimeAfterMisfire) { MotechEvent motechEvent = new MotechEvent(subject, createMotechEventParameters(parameters)); RepeatingPeriodSchedulableJob job = new RepeatingPeriodSchedulableJob( motechEvent, startTime.toDate(), endTime.toDate(), repeatPeriod, ignorePastFiresAtStart); job.setUseOriginalFireTimeAfterMisfire(useOriginalFireTimeAfterMisfire); scheduler.scheduleRepeatingPeriodJob(job); }