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

📄 ramtest.java

📁 java开源的企业总线.xmlBlaster
💻 JAVA
字号:
/*------------------------------------------------------------------------------Name:      RamTest.javaProject:   xmlBlaster.orgCopyright: xmlBlaster.org, see xmlBlaster-LICENSE fileComment:   Load test for xmlBlasterVersion:   $Id: RamTest.java 14846 2006-03-07 17:14:22Z ruff $------------------------------------------------------------------------------*/package org.xmlBlaster.test.stress;import java.util.logging.Logger;import org.xmlBlaster.util.Global;import org.xmlBlaster.util.StopWatch;import org.xmlBlaster.util.XmlBlasterException;import org.xmlBlaster.util.MsgUnit;import org.xmlBlaster.client.qos.ConnectQos;import org.xmlBlaster.client.qos.PublishReturnQos;import org.xmlBlaster.client.qos.EraseReturnQos;import org.xmlBlaster.client.I_XmlBlasterAccess;import junit.framework.*;/** * This client publishes 1000 different messages to measure RAM consumption/message. * <br /> * The RAM consumption in kByte/Message is logged to the console. * <br /> * Note that this is the net RAM consumption, without any content and a very small XmlKey. * You may see this as the internal memory overhead in xmlBlaster for each published message. * <br /> * 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.stress.RamTest *    java junit.swingui.TestRunner org.xmlBlaster.test.stress.RamTest * </pre> */public class RamTest extends TestCase{   private final Global glob;   private static Logger log = Logger.getLogger(RamTest.class.getName());   private StopWatch stopWatch = null;   private I_XmlBlasterAccess senderConnection;   private String senderName;   private String senderContent;   private final int numPublish;        // 100;   private final String contentMime = "text/plain";   private final String contentMimeExtended = "1.0";   /** Constructor for Junit */   public RamTest() {      this(new Global(), "RamTest", "RamTest", 1000);   }   /**    * Constructs the RamTest object.    * <p />    * @param testName  The name used in the test suite    * @param loginName The name to login to the xmlBlaster    * @param numPublish The number of messages to send    */   public RamTest(Global glob, String testName, String loginName, int numPublish)   {      super(testName);      this.glob = glob;      this.senderName = loginName;      this.numPublish = numPublish;   }   /**    * Sets up the fixture.    * <p />    * Connect to xmlBlaster and login    */   protected void setUp()   {      try {         senderConnection = glob.getXmlBlasterAccess(); // Find orb         String passwd = "secret";         ConnectQos connectQos = new ConnectQos(glob, senderName, passwd);         senderConnection.connect(connectQos, null); // Login to xmlBlaster without Callback      }      catch (Exception e) {          log.severe(e.toString());          e.printStackTrace();      }   }   /**    * Tears down the fixture.    * <p />    * cleaning up .... erase() the previous message OID and logout    */   protected void tearDown()   {      log.info("tearDown() ...");      stopWatch = new StopWatch();      for (int ii=0; ii<numPublish; ii++) {         String xmlKey = "<key oid='RamTest-" + (ii+1) + "'>\n" +                         "</key>";         String qos = "<qos></qos>";         try {            EraseReturnQos[] arr = senderConnection.erase(xmlKey, qos);            assertTrue("returned erased oid array == null", null != arr);            assertEquals("num erased messages is wrong", 1, arr.length);         } catch(XmlBlasterException e) { log.severe("XmlBlasterException: " + e.getMessage()); }      }      long avg = 0;      double elapsed = stopWatch.elapsed();      if (elapsed > 0.)         avg = (long)(1000.0 * numPublish / elapsed);      log.info("Success: Erasing done, " + numPublish + " messages erased, average messages/second = " + avg);      senderConnection.disconnect(null);   }   /**    * TEST: Construct a message and publish it.    * <p />    * The returned publishOid is checked    */   public void doPublish()   {      log.info("Publishing " + numPublish + " messages ...");      long usedMemBefore = 0L;      MsgUnit[] msgUnitArr = new MsgUnit[numPublish];      try {         for (int ii=0; ii<numPublish; ii++) {            String xmlKey = "<key oid='RamTest-" + (ii+1) + "' contentMime='" + contentMime + "' contentMimeExtended='" + contentMimeExtended + "'>\n" +                            "   <RamTest-AGENT id='192.168.124.10' subId='1' type='generic'>" +                            "      <RamTest-DRIVER id='FileProof' pollingFreq='10'>" +                            "      </RamTest-DRIVER>"+                            "   </RamTest-AGENT>" +                            "</key>";            senderContent = "" + (ii+1);            MsgUnit msgUnit = new MsgUnit(xmlKey, senderContent.getBytes(), "<qos></qos>");            msgUnitArr[ii] = msgUnit;         }         // 1. Query the current memory allocated in xmlBlaster         String xmlKey = "<key oid='__cmd:?usedMem' queryType='EXACT'></key>";         String qos = "<qos></qos>";         MsgUnit[] msgArr = senderConnection.get(xmlKey, qos);         assertTrue("returned msgArr == null", null != msgArr);         assertEquals("msgArr.length!=1", 1, msgArr.length);         assertTrue("returned msgArr[0].msgUnit == null", null != msgArr[0]);         assertTrue("returned msgArr[0].msgUnit.content == null", null != msgArr[0].getContent());         assertTrue("returned msgArr[0].msgUnit.content.length == 0", 0 != msgArr[0].getContent().length);         String mem = new String(msgArr[0].getContent());         usedMemBefore = new Long(mem).longValue();         log.info("xmlBlaster used allocated memory before publishing = " + Global.byteString(usedMemBefore));         stopWatch = new StopWatch();         // 2. publish all the messages         PublishReturnQos[] publishOidArr = senderConnection.publishArr(msgUnitArr);         long avg = 0;         double elapsed = stopWatch.elapsed();         if (elapsed > 0.)            avg = (long)(1000.0 * numPublish / elapsed);         log.info("Success: Publishing done, " + numPublish + " messages sent, average messages/second = " + avg);         assertTrue("returned publishOidArr == null", null != publishOidArr);         assertEquals("numPublished is wrong", numPublish, publishOidArr.length);         // 3. Query the memory allocated in xmlBlaster after publishing all the messages         msgArr = senderConnection.get(xmlKey, qos);         long usedMemAfter = new Long(new String(msgArr[0].getContent())).longValue();         log.info("xmlBlaster used allocated memory after publishing = " + Global.byteString(usedMemAfter));         log.info("Consumed memory for each message = " + Global.byteString((usedMemAfter-usedMemBefore)/numPublish));      } catch(XmlBlasterException e) {         log.warning("XmlBlasterException: " + e.getMessage());         assertTrue("publish - XmlBlasterException: " + e.getMessage(), false);      } catch(Exception e) {         log.warning("Exception: " + e.toString());         e.printStackTrace();         assertTrue("get or publish - Exception: " + e.toString(), false);      }   }   /**    * TEST: Construct 1000 messages and publish it.    */   public void testManyPublish()   {      doPublish();   }   /**    * Method is used by TestRunner to load these tests    */   public static Test suite()   {       TestSuite suite= new TestSuite();       String loginName = "Tim";       int numMsg = 100;       suite.addTest(new RamTest(new Global(), "testManyPublish", loginName, numMsg));       return suite;   }   /**    * Invoke: java org.xmlBlaster.test.stress.RamTest    * <br />    * You can use the command line option -numPublish 1000 to change the number of messages sent.    * <br />    * @deprecated Use the TestRunner from the testsuite to run it:<p />    * <pre>   java -Djava.compiler= junit.textui.TestRunner org.xmlBlaster.test.stress.RamTest</pre>    */   public static void main(String args[])   {      Global glob = new Global(args);      int numPublish = glob.getProperty().get("numPublish", 1000);      RamTest testSub = new RamTest(glob, "RamTest", "Tim", numPublish);      testSub.setUp();      testSub.testManyPublish();      testSub.tearDown();   }}

⌨️ 快捷键说明

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