1 package org.xmlBlaster.test.dispatch;
2
3 import java.util.logging.Logger;
4 import java.util.logging.Level;
5 import org.xmlBlaster.util.Global;
6 import org.xmlBlaster.util.dispatch.plugins.prio.*;
7 import org.xmlBlaster.util.def.PriorityEnum;
8 import org.xmlBlaster.util.XmlBlasterException;
9
10 import java.util.Map;
11 import java.util.Iterator;
12
13 import junit.framework.*;
14
15 /**
16 * Test ConfigurationParser.
17 * <p />
18 * All methods starting with 'test' and without arguments are invoked automatically
19 * <p />
20 * TODO: http://xmlunit.sourceforge.net/
21 * <p />
22 * Invoke: java -Djava.compiler= junit.textui.TestRunner -noloading org.xmlBlaster.test.dispatch.ConfigurationParserTest
23 * @see org.xmlBlaster.util.dispatch.plugins.prio.ConfigurationParser
24 * @see org.xmlBlaster.util.dispatch.plugins.prio.PriorizedDispatchPlugin
25 * @see <a href="http://www.xmlBlaster.org/xmlBlaster/doc/requirements/dispatch.plugin.priorizedDispatch.html" target="others">the dispatch.plugin.priorizedDispatch requirement</a>
26 * @author xmlBlaster@marcelruff.info
27 */
28 public class ConfigurationParserTest extends TestCase {
29 protected Global glob;
30 private static Logger log = Logger.getLogger(ConfigurationParserTest.class.getName());
31 int counter = 0;
32
33 public ConfigurationParserTest(String name) {
34 super(name);
35 }
36
37 protected void setUp() {
38 this.glob = Global.instance();
39
40 }
41
42 protected void tearDown() {
43 this.glob = null;
44
45 Global.instance().shutdown();
46 }
47
48 /** Test a valid configuration */
49 public void testParse() {
50 System.out.println("***ConfigurationParserTest: testParse ...");
51
52 try {
53 String xml =
54 "<msgDispatch defaultStatus='64k' defaultAction='send'>\n" +
55 " <onStatus oid='_bandwidth.status' content='64k' defaultAction='destroy'>\n" +
56 " <action do='send' ifPriority='7-9'/>\n" +
57 " <action do='queue' ifPriority='3-6'/>\n" +
58 " <action do='queue|notifySender' ifPriority='2'/>\n" +
59 " </onStatus>\n" +
60 " <onStatus oid='_bandwidth.status' content='2M'>\n" +
61 " <action do='send'/>\n" + // defaults to ifPriority='0-9'
62 " </onStatus>\n" +
63 " <onStatus oid='_bandwidth.status' content='DOWN' defaultAction='queue' connectionState='polling'>\n" +
64 " <action do='destroy'/>\n" + // defaults to ifPriority='0-9'
65 " </onStatus>\n" +
66 "</msgDispatch>\n";
67
68 ConfigurationParser parser = new ConfigurationParser(glob, xml);
69
70 assertEquals("", "send", parser.getDefaultDispatchAction().getAction());
71 assertEquals("", "64k", parser.getDefaultStatus());
72 Map confMap = parser.getStatusConfigurationMap();
73 assertEquals("Illegal map size", 3, confMap.size());
74 assertTrue("Missing key", confMap.containsKey("64k"));
75 assertTrue("Missing key", confMap.containsKey("2M"));
76 assertTrue("Missing key", confMap.containsKey("DOWN"));
77 //Iterator it = confMap.keySet().iterator();
78 //while (it.hasNext()) {
79 // StatusConfiguration conf = (StatusConfiguration)it.next();
80 //}
81 StatusConfiguration conf = (StatusConfiguration)confMap.get("64k");
82 assertEquals("", "_bandwidth.status", conf.getOid());
83 assertEquals("", "64k", conf.getContent());
84 assertEquals("", (String)null, conf.getConnectionState());
85 assertEquals("", "destroy", conf.getDefaultDispatchAction().getAction());
86 assertEquals("", false, conf.defaultActionOnly());
87 for (int i=7; i<=9; i++) {
88 DispatchAction action = conf.getDispatchAction(PriorityEnum.toPriorityEnum(i));
89 assertEquals("Wrong action string", "send", action.getAction());
90 assertEquals("Wrong boolean action", true, action.doSend());
91 assertEquals("Wrong boolean action", false, action.doQueue());
92 assertEquals("Wrong boolean action", false, action.doDestroy());
93 assertEquals("Wrong boolean action", false, action.doNotifySender());
94 }
95 for (int i=3; i<=6; i++) {
96 DispatchAction action = conf.getDispatchAction(PriorityEnum.toPriorityEnum(i));
97 assertEquals("Wrong action string", "queue", action.getAction());
98 assertEquals("Wrong boolean action", false, action.doSend());
99 assertEquals("Wrong boolean action", true, action.doQueue());
100 assertEquals("Wrong boolean action", false, action.doDestroy());
101 assertEquals("Wrong boolean action", false, action.doNotifySender());
102 }
103 for (int i=2; i<=2; i++) {
104 DispatchAction action = conf.getDispatchAction(PriorityEnum.toPriorityEnum(i));
105 assertEquals("Wrong action string", "queue|notifySender", action.getAction());
106 assertEquals("Wrong boolean action", false, action.doSend());
107 assertEquals("Wrong boolean action", true, action.doQueue());
108 assertEquals("Wrong boolean action", false, action.doDestroy());
109 assertEquals("Wrong boolean action", true, action.doNotifySender());
110 }
111 for (int i=0; i<=1; i++) {
112 DispatchAction action = conf.getDispatchAction(PriorityEnum.toPriorityEnum(i));
113 assertEquals("Wrong action string", "destroy", action.getAction());
114 assertEquals("Wrong boolean action", false, action.doSend());
115 assertEquals("Wrong boolean action", false, action.doQueue());
116 assertEquals("Wrong boolean action", true, action.doDestroy());
117 assertEquals("Wrong boolean action", false, action.doNotifySender());
118 }
119
120
121 conf = (StatusConfiguration)confMap.get("2M");
122 assertEquals("", "_bandwidth.status", conf.getOid());
123 assertEquals("", "2M", conf.getContent());
124 assertEquals("", (String)null, conf.getConnectionState());
125 assertEquals("", "send", conf.getDefaultDispatchAction().getAction());
126 assertEquals("", true, conf.defaultActionOnly());
127 for (int i=0; i<=9; i++) {
128 DispatchAction action = conf.getDispatchAction(PriorityEnum.toPriorityEnum(i));
129 assertEquals("Wrong action string", "send", action.getAction());
130 assertEquals("Wrong boolean action", true, action.doSend());
131 assertEquals("Wrong boolean action", false, action.doQueue());
132 assertEquals("Wrong boolean action", false, action.doDestroy());
133 assertEquals("Wrong boolean action", false, action.doNotifySender());
134 }
135
136 conf = (StatusConfiguration)confMap.get("DOWN");
137 assertEquals("", "_bandwidth.status", conf.getOid());
138 assertEquals("", "DOWN", conf.getContent());
139 assertEquals("", "POLLING", conf.getConnectionState().toString());
140 assertEquals("", "queue", conf.getDefaultDispatchAction().getAction());
141 assertEquals("", false, conf.defaultActionOnly());
142 for (int i=0; i<=9; i++) {
143 DispatchAction action = conf.getDispatchAction(PriorityEnum.toPriorityEnum(i));
144 assertEquals("Wrong action string", "destroy", action.getAction());
145 assertEquals("Wrong boolean action", false, action.doSend());
146 assertEquals("Wrong boolean action", false, action.doQueue());
147 assertEquals("Wrong boolean action", true, action.doDestroy());
148 assertEquals("Wrong boolean action", false, action.doNotifySender());
149 }
150 }
151 catch (XmlBlasterException e) {
152 fail("testParse failed: " + e.toString());
153 }
154
155 System.out.println("***ConfigurationParserTest: testParse [SUCCESS]");
156 }
157
158 /** Test invalid configuration */
159 public void testInvalidParse() {
160 System.out.println("***ConfigurationParserTest: testInvalidParse ...");
161
162 try {
163 String xml = "<msgDispatch defaultStatus='64k' defaultAction='sendXXXX'/>";
164 ConfigurationParser parser = new ConfigurationParser(glob, xml);
165 fail("testInvalidParse failed, invalid xml should not be parseable");
166 }
167 catch (XmlBlasterException e) {
168 System.out.println("Success: Expected exception: " + e.toString());
169 }
170
171 try {
172 String xml =
173 "<msgDispatch defaultStatus='64k' defaultAction='send'>\n" +
174 " <onStatus oid='_bandwidth.status' content='64k' defaultAction='destroy'>\n" +
175 " <action do='send' ifPriority='7-99'/>\n" +
176 " </onStatus>\n" +
177 "</msgDispatch>\n";
178 ConfigurationParser parser = new ConfigurationParser(glob, xml);
179 fail("testInvalidParse failed, invalid xml should not be parseable, prio is not allowed");
180 }
181 catch (XmlBlasterException e) {
182 System.out.println("Success: Expected exception: " + e.toString());
183 }
184
185 try {
186 String xml =
187 "<msgDispatch defaultStatus='64k' defaultAction='send'>\n" +
188 " <onStatus oid='_bandwidth.status' content='64k' defaultAction='destroy'>\n" +
189 " <action do='sendXXX' ifPriority='7'/>\n" +
190 " </onStatus>\n" +
191 "</msgDispatch>\n";
192 ConfigurationParser parser = new ConfigurationParser(glob, xml);
193 fail("testInvalidParse failed, invalid xml should not be parseable, action is invalid");
194 }
195 catch (XmlBlasterException e) {
196 System.out.println("Success: Expected exception: " + e.toString());
197 }
198
199 try {
200 String xml =
201 "<msgDispatch defaultStatus='64k' defaultAction='send'>\n" +
202 " <onStatus oid='_bandwidth.status' content='64k' defaultAction='XXXXdestroy'>\n" +
203 " <action do='send' ifPriority='7'/>\n" +
204 " </onStatus>\n" +
205 "</msgDispatch>\n";
206 ConfigurationParser parser = new ConfigurationParser(glob, xml);
207 fail("testInvalidParse failed, invalid xml should not be parseable");
208 }
209 catch (XmlBlasterException e) {
210 System.out.println("Success: Expected exception: " + e.toString());
211 }
212
213 try {
214 String xml =
215 "<msgDispatch>\n" +
216 " <onStatus oid='_bandwidth.status' content='64k'>\n" +
217 " <action do='send|queue' ifPriority='7'/>\n" +
218 " </onStatus>\n" +
219 "</msgDispatch>\n";
220 ConfigurationParser parser = new ConfigurationParser(glob, xml);
221 fail("testInvalidParse failed, some combination of actions are invalid");
222 }
223 catch (XmlBlasterException e) {
224 System.out.println("Success: Expected exception: " + e.toString());
225 }
226
227 System.out.println("***ConfigurationParserTest: testInvalidParse [SUCCESS]");
228 }
229
230 /** Test empty parse -> default settings */
231 public void testDefault() {
232 System.out.println("***ConfigurationParserTest: testDefault ...");
233
234 try {
235 ConfigurationParser parser = new ConfigurationParser(glob, (String)null);
236 assertEquals("", DispatchAction.SEND, parser.getDefaultDispatchAction().getAction());
237 assertTrue("", null == parser.getDefaultStatus());
238 Map confMap = parser.getStatusConfigurationMap();
239 assertEquals("Illegal map size", 0, confMap.size());
240 StatusConfiguration conf = parser.getStatusConfiguration((String)null);
241 assertTrue("", null == conf.getOid());
242 assertTrue("", null == conf.getContent());
243 assertEquals("", (String)null, conf.getConnectionState());
244 assertEquals("", true, conf.defaultActionOnly());
245 assertEquals("", DispatchAction.SEND, conf.getDefaultDispatchAction().getAction());
246 for (int i=0; i<=9; i++) {
247 DispatchAction action = conf.getDispatchAction(PriorityEnum.toPriorityEnum(i));
248 assertEquals("Wrong action string", "send", action.getAction());
249 assertEquals("Wrong boolean action", true, action.doSend());
250 assertEquals("Wrong boolean action", false, action.doQueue());
251 assertEquals("Wrong boolean action", false, action.doDestroy());
252 assertEquals("Wrong boolean action", false, action.doNotifySender());
253 }
254 }
255 catch (XmlBlasterException e) {
256 fail("testDefault failed: " + e.toString());
257 }
258
259 System.out.println("***ConfigurationParserTest: testDefault [SUCCESS]");
260 }
261
262 /**
263 * <pre>
264 * java org.xmlBlaster.test.dispatch.ConfigurationParserTest
265 * </pre>
266 */
267 public static void main(String args[])
268 {
269 try {
270 ConfigurationParserTest testSub = new ConfigurationParserTest("ConfigurationParserTest");
271 testSub.setUp();
272 testSub.testDefault();
273 testSub.testParse();
274 testSub.testInvalidParse();
275 testSub.tearDown();
276 }
277 catch (Throwable e) {
278 e.printStackTrace();
279 System.err.println("ERROR: " + e.toString());
280 }
281 }
282 }
syntax highlighted by Code2HTML, v. 0.9.1