/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.terracotta.quartz.tests.rejoin;
import com.tc.test.config.model.TestConfig;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import org.junit.Assert;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.JobPersistenceException;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.TriggerKey;
import org.terracotta.quartz.tests.NullJob;
/**
*
* @author cdennis
*/
public class JobSchedulingRejoinTest extends AbstractRejoinTest {
public JobSchedulingRejoinTest(TestConfig testConfig) {
super(testConfig, Client.class);
}
public static class Client extends AbstractRejoinClient {
public Client(String[] args) {
super(args);
}
@Override
protected void test(Scheduler scheduler) throws Exception {
JobDetail job0 = JobBuilder.newJob(NullJob.class).withIdentity("job0").build();
Trigger trigger0 = TriggerBuilder.newTrigger().withIdentity("trigger0").startAt(new Date(Long.MAX_VALUE)).build();
scheduler.scheduleJob(job0, trigger0);
initiateRejoin();
Set<Integer> successes = new HashSet<Integer>();
for (int i = 1; i < 100; i++) {
JobDetail job = JobBuilder.newJob(NullJob.class).withIdentity("job" + i).build();
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger" + i).startAt(new Date(Long.MAX_VALUE)).build();
try {
scheduler.scheduleJob(job, trigger);
successes.add(i);
} catch (JobPersistenceException e) {
//JobPersistenceException == In Doubt
Thread.sleep(1000);
}
}
for (int i = 0; i < 100; i++) {
if (successes.contains(i)) {
Assert.assertTrue("Job " + i, scheduler.checkExists(new JobKey("job" + i)));
Assert.assertTrue("Trigger " + i, scheduler.checkExists(new TriggerKey("trigger" + i)));
}
}
}
}
}