1 package org.apache.stratum.scheduler;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 import java.io.File;
21 import java.io.FileInputStream;
22
23 import junit.framework.Test;
24 import junit.framework.TestCase;
25 import junit.framework.TestSuite;
26 import junit.textui.TestRunner;
27
28 import org.apache.commons.betwixt.XMLIntrospector;
29 import org.apache.commons.betwixt.io.BeanReader;
30 import org.apache.commons.betwixt.strategy.DecapitalizeNameMapper;
31 import org.apache.commons.betwixt.strategy.DefaultPluralStemmer;
32 import org.apache.commons.configuration.PropertiesConfiguration;
33
34 /***
35 * Test harness for the Scheduler
36 *
37 * @author <a href="mailto:john@zenplex.com">John Thorhauer</a>
38 * @version $Id: TestScheduler.java 264731 2005-08-30 08:04:32Z henning $
39 */
40 public class TestScheduler
41 extends TestCase
42 {
43 /*** TODO: DOCUMENT ME! */
44 private static final String XML = "src/test-conf/Scheduler.xml";
45
46 /*** TODO: DOCUMENT ME! */
47 private static final String PROPERTIES = "src/test-conf/Scheduler.properties";
48
49 /***
50 * TODO: DOCUMENT ME!
51 *
52 * @param args TODO: DOCUMENT ME!
53 */
54 public static void main(String [] args)
55 {
56 TestRunner.run(suite());
57 }
58
59 /***
60 * TODO: DOCUMENT ME!
61 *
62 * @return TODO: DOCUMENT ME!
63 */
64 public static Test suite()
65 {
66 return new TestSuite(TestScheduler.class);
67 }
68
69 /***
70 * Creates a new TestScheduler object.
71 *
72 * @param testName TODO: DOCUMENT ME!
73 */
74 public TestScheduler(String testName)
75 {
76 super(testName);
77 }
78
79 /***
80 * TODO: DOCUMENT ME!
81 *
82 * @throws Exception TODO: DOCUMENT ME!
83 */
84 public void testLoadXmlConfig()
85 throws Exception
86 {
87 SchedulerConfig schedConf = new SchedulerConfig();
88 FileInputStream in = new FileInputStream(new File(XML));
89
90
91 BeanReader reader = createBeanReader();
92
93 SchedulerConfig schedConf2 = (SchedulerConfig) reader.parse(in);
94
95 assertNotNull("scheduler should not be null.", schedConf2);
96 assertEquals("there should be 2 job configurations", 2, schedConf2.getJobConfigs().size());
97 assertEquals("there should be 2 triggers", 2, schedConf2.getTriggerConfigs().size());
98 assertTrue("scheduler name should be scheduler1", schedConf2.getInstanceName().equals("scheduler1"));
99
100 assertTrue("job name should be job1", ((JobConfig) (schedConf2.getJobConfigs().get(0))).getName().equals("job1"));
101 }
102
103 /***
104 * TODO: DOCUMENT ME!
105 *
106 * @throws Exception TODO: DOCUMENT ME!
107 */
108 public void testRunScheduler()
109 throws Exception
110 {
111 Scheduler sched = new Scheduler();
112 PropertiesConfiguration conf = new PropertiesConfiguration(PROPERTIES);
113 sched.configure(conf);
114
115 try
116 {
117 sched.start();
118 Thread.sleep(5000);
119 sched.stop();
120 }
121 catch (InterruptedException e)
122 {
123 e.printStackTrace();
124 }
125 }
126
127
128
129 protected BeanReader createBeanReader()
130 throws Exception
131 {
132 BeanReader reader = new BeanReader();
133 reader.setXMLIntrospector(createXMLIntrospector());
134 reader.registerBeanClass(SchedulerConfig.class);
135
136 return reader;
137 }
138
139 /***
140 * ### it would be really nice to move this somewhere shareable across Maven / Turbine projects. Maybe a static helper method -
141 * question is what to call it???
142 *
143 * @return TODO: DOCUMENT ME!
144 */
145 protected XMLIntrospector createXMLIntrospector()
146 {
147 XMLIntrospector introspector = new XMLIntrospector();
148
149
150 introspector.getConfiguration().setAttributesForPrimitives(false);
151
152
153
154
155 introspector.getConfiguration().setElementNameMapper(new DecapitalizeNameMapper());
156 introspector.getConfiguration().setAttributeNameMapper(new DecapitalizeNameMapper());
157
158 introspector.getConfiguration().setPluralStemmer(new DefaultPluralStemmer());
159
160 return introspector;
161 }
162 }