package net.joelinn.quartz; import net.jodah.concurrentunit.Waiter; import org.junit.Test; import org.quartz.CronTrigger; import org.quartz.JobDetail; import org.quartz.SimpleTrigger; import org.quartz.TriggerBuilder; import org.quartz.impl.matchers.NameMatcher; import static net.joelinn.quartz.TestUtils.createCronTrigger; import static net.joelinn.quartz.TestUtils.createJob; import static org.quartz.SimpleScheduleBuilder.simpleSchedule; /** * @author Joe Linn * 12/4/2016 */ public class SingleThreadedIntegrationTest extends BaseIntegrationTest { @Test public void testMisfireListener() throws Exception { final String jobName = "oneJob"; JobDetail jobDetail = createJob(TestJob.class, jobName, "oneGroup"); final String triggerName = "trigger1"; final String everySecond = "* * * * * ?"; CronTrigger trigger = createCronTrigger(triggerName, "oneGroup", everySecond); JobDetail sleepJob = createJob(SleepJob.class, "sleepJob", "twoGroup"); CronTrigger sleepTrigger = createCronTrigger("sleepTrigger", "twoGroup", everySecond); Waiter waiter = new Waiter(); scheduler.scheduleJob(sleepJob, sleepTrigger); scheduler.scheduleJob(jobDetail, trigger); scheduler.getListenerManager().addTriggerListener(new MisfireListener(waiter), NameMatcher.triggerNameEquals(triggerName)); // wait for MisfireListener.triggerMisfired() to be called waiter.await(2500); } @Test public void testSingleExecution() throws Exception { final String jobName = "oneJob"; JobDetail jobDetail = createJob(TestJob.class, jobName, "oneGroup"); SimpleTrigger trigger = TriggerBuilder.newTrigger().withSchedule(simpleSchedule().withRepeatCount(0).withIntervalInMilliseconds(200)).build(); Waiter waiter = new Waiter(); scheduler.getListenerManager().addTriggerListener(new CompleteListener(waiter), NameMatcher.triggerNameEquals(trigger.getKey().getName())); scheduler.scheduleJob(jobDetail, trigger); waiter.await(2000); } }