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.ScheduleInstruction; 15 import org.oddjob.scheduling.TriggerScheduleInstruction; 16 import org.oddjob.state.JobState; 17 18 21 public class TriggerScheduleTest 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 TriggerScheduleInstruction ts = new TriggerScheduleInstruction(); 49 ts.setOn(d); 50 ts.setJob(RunnableWrapper.wrapperFor(r)); 51 ts.setId("whatever"); 52 sj.setSchedules(new ScheduleInstruction[] { ts }); 53 54 sj.start(); 55 56 Thread.sleep(2000); 57 d.run(); 58 59 while (!r.ran) { 60 try { 61 Thread.sleep(1000); 62 } catch (InterruptedException e) {} 63 } 64 65 assertTrue(r.ran); 66 assertNull(r.e); 67 } 68 69 public void testSerialize() throws Exception { 70 DummyStateJob sample = new DummyStateJob(); 72 sample.setDesired("complete"); 73 74 DummyStateJob on = new DummyStateJob(); 75 on.setDesired("complete"); 76 77 ComponentRegistry cr = new ComponentRegistry(); 78 cr.register("x", sample); 79 cr.register("y", on); 80 81 TriggerSchedule triggerSchedule = new TriggerSchedule(); 82 83 triggerSchedule.setId("whatever"); 84 triggerSchedule.setComponentRegistry(cr); 85 triggerSchedule.setOn(on); 86 triggerSchedule.setJob(sample); 87 88 TriggerSchedule copy = (TriggerSchedule) Helper.copy(triggerSchedule); 89 copy.setComponentRegistry(cr); 90 91 MockScheduler scheduler = new MockScheduler(); 92 copy.scheduleWith(scheduler); 93 94 assertNull(scheduler.jobDetail); 95 96 on.run(); 97 98 OddjobData ojd = (OddjobData) scheduler.jobDetail.getJobDataMap() 99 .get(OddjobData.ODDJOB_DATA); 100 101 assertEquals(JobState.READY, sample.lastJobStateEvent().getJobState()); 102 ojd.getJob().run(); 103 assertEquals(JobState.COMPLETE, sample.lastJobStateEvent().getJobState()); 104 } 105 106 } 107 | Popular Tags |