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