1 4 package org.oddjob.quartz; 5 6 import junit.framework.TestCase; 7 8 import org.oddjob.Helper; 9 import org.oddjob.arooa.ArooaConstants; 10 import org.oddjob.arooa.ArooaContext; 11 import org.oddjob.arooa.registry.ComponentRegistry; 12 import org.oddjob.framework.RunnableWrapper; 13 import org.oddjob.jobs.DummyStateJob; 14 import org.oddjob.scheduling.CronScheduleInstruction; 15 import org.oddjob.scheduling.ScheduleInstruction; 16 import org.oddjob.state.JobState; 17 18 21 public class CronScheduleTest extends TestCase { 22 23 public void test1() throws Exception { 24 ComponentRegistry cr = new ComponentRegistry(); 25 ArooaContext arooaContext = new ArooaContext(); 26 arooaContext.set(ArooaConstants.COMPONENT_REGISTRY, cr); 27 28 final QuartzSchedulerJob sj = new QuartzSchedulerJob(); 29 sj.setContext(arooaContext); 30 31 class R implements Runnable { 32 boolean ran; 33 Exception e; 34 public void run() { 35 ran = true; 36 try { 37 sj.stop(); 38 } catch (Exception e) { 39 this.e = e; 40 } 41 } 42 } 43 R r = new R(); 44 45 DummyStateJob d = new DummyStateJob(); 46 d.setDesired("complete"); 47 48 CronScheduleInstruction cs = new CronScheduleInstruction(); 49 cs.setJob(RunnableWrapper.wrapperFor(r)); 50 cs.setId("whatever"); 51 cs.setExpression("0/3 * * * * ?"); 52 sj.setSchedules(new ScheduleInstruction[] { cs }); 53 54 sj.start(); 55 56 while (!r.ran) { 57 try { 58 Thread.sleep(1000); 59 } catch (InterruptedException e) {} 60 } 61 62 assertTrue(r.ran); 63 assertNull(r.e); 64 } 65 66 public void testSerialize() throws Exception { 67 DummyStateJob sample = new DummyStateJob(); 69 sample.setDesired("complete"); 70 71 ComponentRegistry cr = new ComponentRegistry(); 72 cr.register("x", sample); 73 74 CronSchedule cronSchedule = new CronSchedule(); 75 76 cronSchedule.setId("whatever"); 77 cronSchedule.setExpression("0/3 * * * * ?"); 78 cronSchedule.setComponentRegistry(cr); 79 cronSchedule.setJob(sample); 80 81 CronSchedule copy = (CronSchedule) Helper.copy(cronSchedule); 82 copy.setComponentRegistry(cr); 83 84 MockScheduler scheduler = new MockScheduler(); 85 copy.scheduleWith(scheduler); 86 87 OddjobData ojd = (OddjobData) scheduler.jobDetail.getJobDataMap() 88 .get(OddjobData.ODDJOB_DATA); 89 90 assertEquals(JobState.READY, sample.lastJobStateEvent().getJobState()); 91 ojd.getJob().run(); 92 assertEquals(JobState.COMPLETE, sample.lastJobStateEvent().getJobState()); 93 } 94 } 95 | Popular Tags |