KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > oddjob > quartz > CronScheduleTest


1 /*
2  * (c) Rob Gordon 2005
3  */

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 /**
19  *
20  */

21 public class CronScheduleTest extends TestCase {
22
23     public void test1() throws Exception JavaDoc {
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 JavaDoc {
32             boolean ran;
33             Exception JavaDoc e;
34             public void run() {
35                 ran = true;
36                 try {
37                     sj.stop();
38                 } catch (Exception JavaDoc 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 JavaDoc e) {}
60         }
61         
62         assertTrue(r.ran);
63         assertNull(r.e);
64     }
65
66     public void testSerialize() throws Exception JavaDoc {
67         // not serializable job
68
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