@Test // org.quartz.jobStore.misfireThreshold=1000 (in quartz.properties) makes the test reliable. // See http://quartz-scheduler.org/documentation/quartz-2.x/configuration/ConfigJobStoreTX public void shouldNotIgnoreFiresInPastWhenSchedulingCronJob() throws InterruptedException, SchedulerException { final String eventSubject = id("eve"); try { TestEventListener listener = new TestEventListener(); eventRegistry.registerListener(listener, eventSubject); DateTime now = findSuitableTimeToScheduleWithSafeBufferFromTriggerTime(); Map<String, Object> params = new HashMap<>(); params.put(MotechSchedulerService.JOB_ID_KEY, "job_id"); DateTime jobStartTimeInPast = now.minusMinutes(3); schedulerService.scheduleJob( new CronSchedulableJob( new MotechEvent(eventSubject, params), "0 0/1 * 1/1 * ? *", jobStartTimeInPast, null, false)); synchronized (listener.getReceivedEvents()) { listener.getReceivedEvents().wait(5000); } assertTrue( "Listener didn't receive misfired events.", listener.getReceivedEvents().size() > 0); } finally { eventRegistry.clearListenersForBean(eventSubject); schedulerService.unscheduleAllJobs(eventSubject + "-job_id"); } }
@Test public void shouldIgnoreFiresInPastWhenSchedulingCronJob() throws InterruptedException, SchedulerException { String subject = "cron_ignore_misfire"; try { TestEventListener listener = new TestEventListener(); eventRegistry.registerListener(listener, subject); DateTime now; for (now = now(); now.getSecondOfMinute() > 55 || now.getSecondOfMinute() < 5; now = now()) { // we don't want triggers now, only misfires Thread.sleep(1000); } DateTime jobStartTime = now.minusMinutes(3); Map<String, Object> params = new HashMap<>(); params.put(MotechSchedulerService.JOB_ID_KEY, "job_id"); schedulerService.scheduleJob( new CronSchedulableJob( new MotechEvent(subject, params), "0 0/1 * 1/1 * ? *", jobStartTime, null, true)); synchronized (listener.getReceivedEvents()) { listener.getReceivedEvents().wait(2000); } assertTrue(listener.getReceivedEvents().size() == 0); } finally { eventRegistry.clearListenersForBean("test"); schedulerService.unscheduleAllJobs(subject); } }
@Test public void shouldUnscheduleAllJobsWithAGivenJobIdPrefix() throws SchedulerException { Map<String, Object> params = new HashMap<>(); params.put(MotechSchedulerService.JOB_ID_KEY, "job_id"); schedulerService.scheduleJob( new CronSchedulableJob(new MotechEvent("test_event1", params), "0 0 12 * * ?")); schedulerService.scheduleJob( new CronSchedulableJob(new MotechEvent("test_event2", params), "0 0 13 * * ?")); schedulerService.scheduleJob( new CronSchedulableJob(new MotechEvent("test_event3", params), "0 0 14 * * ?")); schedulerService.unscheduleAllJobs("test_event"); assertNull(scheduler.getTrigger(triggerKey("test_event1-job_id", "default"))); assertNull(scheduler.getTrigger(triggerKey("test_event2-job_id", "default"))); assertNull(scheduler.getTrigger(triggerKey("test_event3-job_id", "default"))); }
@After public void teardown() { schedulerService.unscheduleAllJobs("org.motechproject.scheduletracking"); allEnrollments.removeAll(); allSchedules.removeAll(); }
@After public void teardown() { schedulerService.unscheduleAllJobs("org.motechproject.scheduletracking"); enrollmentDataService.deleteAll(); scheduleDataService.deleteAll(); }
@After public void tearDown() throws SchedulerException { schedulerService.unscheduleAllJobs("test_event"); schedulerService.unscheduleAllJobs("test_event_2"); schedulerService.unscheduleAllJobs("test_event_3"); }