📄 testclientproperty.java
字号:
/*------------------------------------------------------------------------------Name: TestClientProperty.javaProject: xmlBlaster.orgCopyright: xmlBlaster.org, see xmlBlaster-LICENSE fileComment: Demo code for a client using xmlBlasterVersion: $Id: TestClientProperty.java 14813 2006-03-04 23:02:48Z laghi $------------------------------------------------------------------------------*/package org.xmlBlaster.test.qos;import java.util.Map;import java.util.logging.Logger;import java.util.logging.Level;import org.xmlBlaster.util.Global;import org.xmlBlaster.util.XmlBlasterException;import org.xmlBlaster.client.qos.ConnectQos;import org.xmlBlaster.client.I_XmlBlasterAccess;import org.xmlBlaster.client.I_Callback;import org.xmlBlaster.client.key.EraseKey;import org.xmlBlaster.client.key.PublishKey;import org.xmlBlaster.client.key.SubscribeKey;import org.xmlBlaster.client.key.UpdateKey;import org.xmlBlaster.client.qos.DisconnectQos;import org.xmlBlaster.client.qos.EraseQos;import org.xmlBlaster.client.qos.PublishQos;import org.xmlBlaster.client.qos.SubscribeQos;import org.xmlBlaster.client.qos.UnSubscribeQos;import org.xmlBlaster.client.qos.UpdateQos;import org.xmlBlaster.util.MsgUnit;import org.xmlBlaster.util.qos.ConnectQosData;import org.xmlBlaster.util.qos.ConnectQosSaxFactory;import org.xmlBlaster.util.qos.DisconnectQosData;import org.xmlBlaster.util.qos.DisconnectQosSaxFactory;import org.xmlBlaster.util.qos.MsgQosData;import org.xmlBlaster.util.qos.MsgQosSaxFactory;import org.xmlBlaster.util.qos.QueryQosData;import org.xmlBlaster.util.qos.QueryQosSaxFactory;import org.xmlBlaster.util.qos.ClientProperty;import junit.framework.*;/** * * * Invoke examples:<br /> * <pre> * java junit.textui.TestRunner org.xmlBlaster.test.qos.TestClientProperty * java junit.swingui.TestRunner org.xmlBlaster.test.qos.TestClientProperty * </pre> */public class TestClientProperty extends TestCase implements I_Callback{ private static String ME = "TestClientProperty"; private final Global glob; private static Logger log = Logger.getLogger(TestClientProperty.class.getName()); private boolean messageArrived = false; private I_XmlBlasterAccess senderConnection; /** * Constructs the TestClientProperty object. * <p /> * @param testName The name used in the test suite * @param loginName The name to login to the xmlBlaster */ public TestClientProperty(Global glob, String name) { super(name); this.glob = glob; } /** * Sets up the fixture. * <p /> * Connect to xmlBlaster and login */ protected void setUp() { } /** * Tears down the fixture. * <p /> * cleaning up .... erase() the previous message OID and logout */ protected void tearDown() { } private void checkValues(Map map) { assertEquals("", 3, map.size()); assertEquals("", "oneValue", ((ClientProperty)map.get("oneKey")).getStringValue()); assertEquals("", "twoValue", ((ClientProperty)map.get("twoKey")).getStringValue()); assertEquals("", 55, ((ClientProperty)map.get("threeKey")).getIntValue()); } public void testConnectQos() { if (log.isLoggable(Level.FINE)) log.fine("TestConnectQos"); try { ConnectQos qos = new ConnectQos(this.glob); qos.addClientProperty("oneKey", "oneValue"); qos.addClientProperty("twoKey", "twoValue"); qos.addClientProperty("threeKey", new Integer(55)); String literal = qos.toXml(); ConnectQosSaxFactory factory = new ConnectQosSaxFactory(this.glob); ConnectQosData data = factory.readObject(literal); checkValues(data.getClientProperties()); } catch (XmlBlasterException ex) { assertTrue("Exeption occured : " + ex.getMessage(), false); } } public void testDisconnectQos() { if (log.isLoggable(Level.FINE)) log.fine("TestDisconnectQos"); DisconnectQos qos = new DisconnectQos(this.glob); qos.addClientProperty("oneKey", "oneValue"); qos.addClientProperty("twoKey", "twoValue"); qos.addClientProperty("threeKey", new Integer(55)); String literal = qos.toXml(); DisconnectQosSaxFactory factory = new DisconnectQosSaxFactory(this.glob); try { DisconnectQosData data = factory.readObject(literal); checkValues(data.getClientProperties()); } catch (XmlBlasterException ex) { assertTrue("Exeption occured : " + ex.getMessage(), false); } } public void testPublishQos() { if (log.isLoggable(Level.FINE)) log.fine("TestPublishQos"); PublishQos qos = new PublishQos(this.glob); qos.addClientProperty("oneKey", "oneValue"); qos.addClientProperty("twoKey", "twoValue"); qos.addClientProperty("threeKey", new Integer(55)); String literal = qos.toXml(); MsgQosSaxFactory factory = new MsgQosSaxFactory(this.glob); try { MsgQosData data = factory.readObject(literal); checkValues(data.getClientProperties()); } catch (XmlBlasterException ex) { assertTrue("Exeption occured : " + ex.getMessage(), false); } } public void testSubscribeQos() { if (log.isLoggable(Level.FINE)) log.fine("TestSubscribeQos"); SubscribeQos qos = new SubscribeQos(this.glob); qos.addClientProperty("oneKey", "oneValue"); qos.addClientProperty("twoKey", "twoValue"); qos.addClientProperty("threeKey", new Integer(55)); String literal = qos.toXml(); QueryQosSaxFactory factory = new QueryQosSaxFactory(this.glob); try { QueryQosData data = factory.readObject(literal); checkValues(data.getClientProperties()); } catch (XmlBlasterException ex) { assertTrue("Exeption occured : " + ex.getMessage(), false); } } public void testUnSubscribeQos() { if (log.isLoggable(Level.FINE)) log.fine("TestUnSubscribeQos"); UnSubscribeQos qos = new UnSubscribeQos(this.glob); qos.addClientProperty("oneKey", "oneValue"); qos.addClientProperty("twoKey", "twoValue"); qos.addClientProperty("threeKey", new Integer(55)); String literal = qos.toXml(); ConnectQosSaxFactory factory = new ConnectQosSaxFactory(this.glob); try { ConnectQosData data = factory.readObject(literal); checkValues(data.getClientProperties()); } catch (XmlBlasterException ex) { assertTrue("Exeption occured : " + ex.getMessage(), false); } } public void testGetQos() { if (log.isLoggable(Level.FINE)) log.fine("TestGetQos"); try { ConnectQos qos = new ConnectQos(this.glob); qos.addClientProperty("oneKey", "oneValue"); qos.addClientProperty("twoKey", "twoValue"); qos.addClientProperty("threeKey", new Integer(55)); String literal = qos.toXml(); QueryQosSaxFactory factory = new QueryQosSaxFactory(this.glob); QueryQosData data = factory.readObject(literal); checkValues(data.getClientProperties()); } catch (XmlBlasterException ex) { assertTrue("Exeption occured : " + ex.getMessage(), false); } } public void testEraseQos() { if (log.isLoggable(Level.FINE)) log.fine("TestEraseQos"); EraseQos qos = new EraseQos(this.glob); qos.addClientProperty("oneKey", "oneValue"); qos.addClientProperty("twoKey", "twoValue"); qos.addClientProperty("threeKey", new Integer(55)); String literal = qos.toXml(); QueryQosSaxFactory factory = new QueryQosSaxFactory(this.glob); try { QueryQosData data = factory.readObject(literal); checkValues(data.getClientProperties()); } catch (XmlBlasterException ex) { assertTrue("Exeption occured : " + ex.getMessage(), false); } } /** * TEST: Construct a message and publish it. * <p /> * The returned publishOid is checked */ public void testUpdateQos() { if (log.isLoggable(Level.FINE)) log.fine("Testing the update qos ..."); try { senderConnection = glob.getXmlBlasterAccess(); // Find orb String passwd = "secret"; ConnectQos connQos = new ConnectQos(glob, "clientProperty", passwd); if (log.isLoggable(Level.FINE)) log.fine("the connect qos is: " + connQos.toXml()); senderConnection.connect(connQos, this); // Login to xmlBlaster // publish PublishKey key = new PublishKey(this.glob, "clientProp"); PublishQos qos = new PublishQos(this.glob); qos.addClientProperty("oneKey", "oneValue"); qos.addClientProperty("twoKey", "twoValue"); qos.addClientProperty("threeKey", new Integer(55)); MsgUnit msg = new MsgUnit(key, "message".getBytes(), qos); senderConnection.publish(msg); // subscribe senderConnection.subscribe(new SubscribeKey(this.glob, "clientProp"), new SubscribeQos(this.glob)); waitOnUpdate(10000); senderConnection.erase(new EraseKey(this.glob, "clientProperty"), new EraseQos(this.glob)); senderConnection.disconnect(new DisconnectQos(this.glob)); } catch (Exception e) { log.severe("Login failed: " + e.toString()); e.printStackTrace(); assertTrue("Login failed: " + e.toString(), false); } } /** * This is the callback method invoked from xmlBlaster * delivering us a new asynchronous message. * @see org.xmlBlaster.client.I_Callback#update(String, UpdateKey, byte[], UpdateQos) */ public String update(String cbSessionId_, UpdateKey updateKey, byte[] content, UpdateQos updateQos) { log.info("Receiving update of message oid=" + updateKey.getOid() + "..."); if (updateQos.isErased()) return ""; assertEquals("Wrong sender", "clientProperty", updateQos.getSender().getLoginName()); assertEquals("Wrong oid of message returned", "clientProp", updateKey.getOid()); Map map = updateQos.getData().getClientProperties(); this.checkValues(map); this.messageArrived = true; return ""; } /** * Little helper, waits until the variable 'messageArrive' is set * to true, or returns when the given timeout occurs. * @param timeout in milliseconds */ private void waitOnUpdate(final long timeout) { long pollingInterval = 50L; // check every 0.05 seconds if (timeout < 50) pollingInterval = timeout / 10L; long sum = 0L; while (!messageArrived) { try { Thread.sleep(pollingInterval); } catch( InterruptedException i) {} sum += pollingInterval; if (sum > timeout) { log.warning("Timeout of " + timeout + " occurred"); break; } } assertTrue("The message never arrived", messageArrived); messageArrived = false; } /** * Method is used by TestRunner to load these tests */ public static Test suite() { TestSuite suite= new TestSuite(); String loginName = "Tim"; suite.addTest(new TestClientProperty(new Global(), "testConnectQos")); suite.addTest(new TestClientProperty(new Global(), "testDisconnectQos")); suite.addTest(new TestClientProperty(new Global(), "testPublishQos")); suite.addTest(new TestClientProperty(new Global(), "testSubscribeQos")); suite.addTest(new TestClientProperty(new Global(), "testUnSubscribeQos")); suite.addTest(new TestClientProperty(new Global(), "testGetQos")); suite.addTest(new TestClientProperty(new Global(), "testEraseQos")); suite.addTest(new TestClientProperty(new Global(), "testUpdateQos")); return suite; } /** * Invoke: java org.xmlBlaster.test.qos.TestClientProperty * @deprecated Use the TestRunner from the testsuite to run it:<p /> * <pre> java -Djava.compiler= junit.textui.TestRunner org.xmlBlaster.test.qos.TestClientProperty</pre> */ public static void main(String args[]) { Global glob = new Global(); if (glob.init(args) != 0) { System.err.println(ME + ": Init failed"); System.exit(1); } TestClientProperty test = new TestClientProperty(glob, "testClientProperty"); test.setUp(); test.testConnectQos(); test.tearDown(); test.setUp(); test.testDisconnectQos(); test.tearDown(); test.setUp(); test.testPublishQos(); test.tearDown(); test.setUp(); test.testSubscribeQos(); test.tearDown(); test.setUp(); test.testUnSubscribeQos(); test.tearDown(); test.setUp(); test.testGetQos(); test.tearDown(); test.setUp(); test.testEraseQos(); test.tearDown(); test.setUp(); test.testUpdateQos(); test.tearDown(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -