⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testsubnotify.java

📁 java开源的企业总线.xmlBlaster
💻 JAVA
字号:
/*------------------------------------------------------------------------------Name:      TestSubNotify.javaProject:   xmlBlaster.orgCopyright: xmlBlaster.org, see xmlBlaster-LICENSE file------------------------------------------------------------------------------*/package org.xmlBlaster.test.qos;import java.util.logging.Logger;import java.util.logging.Level;import org.xmlBlaster.test.MsgInterceptor;import org.xmlBlaster.util.Global;import org.xmlBlaster.util.XmlBlasterException;import org.xmlBlaster.client.qos.ConnectQos;import org.xmlBlaster.util.Timestamp;import org.xmlBlaster.client.I_XmlBlasterAccess;import org.xmlBlaster.client.I_Callback;import org.xmlBlaster.client.key.EraseKey;import org.xmlBlaster.client.key.SubscribeKey;import org.xmlBlaster.client.key.UpdateKey;import org.xmlBlaster.client.qos.EraseQos;import org.xmlBlaster.client.qos.SubscribeQos;import org.xmlBlaster.client.qos.UpdateQos;import org.xmlBlaster.client.qos.PublishReturnQos;import org.xmlBlaster.client.qos.SubscribeReturnQos;import org.xmlBlaster.client.qos.EraseReturnQos;import org.xmlBlaster.util.MsgUnit;import org.xmlBlaster.util.def.Constants;import org.xmlBlaster.util.qos.address.CallbackAddress;import junit.framework.*;/** * This client tests the method subscribe() with a later publish() with XPath query. * <br /> * The subscribe() should be recognized for this later arriving publish() * <p> * This client may be invoked multiple time on the same xmlBlaster server, * as it cleans up everything after his tests are done. * <p> * Invoke examples:<br /> * <pre> *    java junit.textui.TestRunner org.xmlBlaster.test.qos.TestSubNotify *    java junit.swingui.TestRunner org.xmlBlaster.test.qos.TestSubNotify * </pre> */public class TestSubNotify extends TestCase{   private final Global glob;   private static Logger log = Logger.getLogger(TestSubNotify.class.getName());   private String publishOid = "dummyTestSubNotify";   private I_XmlBlasterAccess senderConnection;   private String senderName;   private MsgInterceptor msgInterceptor;   /**    * @param testName  The name used in the test suite    * @param loginName The name to login to the xmlBlaster    */   public TestSubNotify(Global glob, String testName) {      super(testName);      this.glob = glob;      this.senderName = testName;   }   /**    * Connect to xmlBlaster and login    */   protected void setUp() {      try {         this.senderConnection = glob.getXmlBlasterAccess();         String passwd = "secret";         this.msgInterceptor = new MsgInterceptor(this.glob, log, null);         this.msgInterceptor.countErased(true); // count erased() notifications as well         this.senderConnection.connect(new ConnectQos(glob, senderName, passwd), this.msgInterceptor); // Login to xmlBlaster      }      catch (Exception e) {         e.printStackTrace();         fail("Login failed: " + e.toString());      }   }   protected void tearDown() {      this.senderConnection.disconnect(null);   }   private void erase() {      try {         EraseKey ek = new EraseKey(this.glob, this.publishOid);         EraseQos eq = new EraseQos(this.glob);         EraseReturnQos[] arr = this.senderConnection.erase(ek, eq);         assertEquals("Erase", 1, arr.length);      } catch(XmlBlasterException e) { fail("Erase XmlBlasterException: " + e.getMessage()); }   }   private void subscribe(boolean wantNotify) {      try {         SubscribeKey sk = new SubscribeKey(this.glob, this.publishOid);         SubscribeQos sq = new SubscribeQos(this.glob);         sq.setWantNotify(wantNotify);         this.senderConnection.subscribe(sk, sq);      } catch(XmlBlasterException e) { fail("Subscribe XmlBlasterException: " + e.getMessage()); }   }   private void publish() {      try {         MsgUnit msgUnit = new MsgUnit("<key oid='"+this.publishOid+"'/>", "Hi".getBytes(), "<qos/>");         PublishReturnQos tmp = senderConnection.publish(msgUnit);         assertEquals("Wrong publishOid", publishOid, tmp.getKeyOid());      } catch(XmlBlasterException e) { fail("publish - XmlBlasterException: " + e.getMessage()); }   }   public void testNotify() {      subscribe(true);      publish();      this.msgInterceptor.waitOnUpdate(1000, this.publishOid, Constants.STATE_OK, 1);      assertEquals("Missing update", 1, this.msgInterceptor.count());      this.msgInterceptor.clear(); this.msgInterceptor.countErased(true);            erase();      this.msgInterceptor.waitOnUpdate(1000, this.publishOid, Constants.STATE_ERASED, 1);      assertEquals("Missing ERASED event", 1, this.msgInterceptor.count());      log.info("Success, we received the erase notification");   }   public void testNoNotify() {      subscribe(false); // NO ERASE NOTIFICATION WANTED            publish();      this.msgInterceptor.waitOnUpdate(1000, this.publishOid, Constants.STATE_OK, 1);      assertEquals("Missing update", 1, this.msgInterceptor.count());      this.msgInterceptor.clear(); this.msgInterceptor.countErased(true);            erase();      this.msgInterceptor.waitOnUpdate(1000, this.publishOid, Constants.STATE_ERASED, 0);      assertEquals("Wrong ERASED event", 0, this.msgInterceptor.count());      log.info("Success, we didn't receive the erase notification");   }   public static Test suite()   {       TestSuite suite= new TestSuite();       String loginName = "TestSubNotify";       suite.addTest(new TestSubNotify(new Global(), "testNotify"));       suite.addTest(new TestSubNotify(new Global(), "testNoNotify"));       return suite;   }   /**    * Invoke: java org.xmlBlaster.test.qos.TestSubNotify    */   public static void main(String args[]) {      //junit.swingui.TestRunner.run(Bla.class);      Global glob = new Global();      if (glob.init(args) != 0) {         System.err.println("Init failed");         System.exit(1);      }      TestSubNotify TestSubNotify = new TestSubNotify(glob, "TestSubNotify");            TestSubNotify.setUp();      TestSubNotify.testNotify();      TestSubNotify.tearDown();      TestSubNotify.setUp();      TestSubNotify.testNoNotify();      TestSubNotify.tearDown();   }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -