Package org.xmlBlaster.test.qos

Source Code of org.xmlBlaster.test.qos.TestEmbeddedXmlBlaster

/*------------------------------------------------------------------------------
Name:      TestEmbeddedXmlBlaster.java
Project:   xmlBlaster.org
Copyright: xmlBlaster.org, see xmlBlaster-LICENSE file
Comment:   Test start/stop xmlBlaster in a thread
------------------------------------------------------------------------------*/
package org.xmlBlaster.test.qos;

import java.util.logging.Logger;
import java.util.logging.Level;
import org.xmlBlaster.util.Global;
import org.xmlBlaster.util.ThreadLister;
import org.xmlBlaster.util.XmlBlasterException;
import org.xmlBlaster.client.qos.ConnectQos;
import org.xmlBlaster.client.qos.DisconnectQos;
import org.xmlBlaster.client.I_XmlBlasterAccess;
import org.xmlBlaster.client.key.GetKey;
import org.xmlBlaster.util.MsgUnit;
import org.xmlBlaster.util.EmbeddedXmlBlaster;
import org.xmlBlaster.test.Util;

import junit.framework.*;


/**
* This client tests to start an xmlBlaster server in a thread
* and stop it again.
* <p />
* Invoke examples:<br />
* <pre>
*    java junit.textui.TestRunner org.xmlBlaster.test.qos.TestEmbeddedXmlBlaster
*    java junit.swingui.TestRunner org.xmlBlaster.test.qos.TestEmbeddedXmlBlaster
* </pre>
* @see <a href="http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.runlevel.html">engine.runlevel</a>
* @see org.xmlBlaster.util.EmbeddedXmlBlaster
*/
public class TestEmbeddedXmlBlaster extends TestCase
{
   private static final String ME = "TestEmbeddedXmlBlaster";
   private final Global glob;
   private static Logger log = Logger.getLogger(TestEmbeddedXmlBlaster.class.getName());

   private I_XmlBlasterAccess con = null;
   private String name;
   private String passwd = "secret";
   private EmbeddedXmlBlaster serverThread;
   private int serverPort = 7615;

   /**
    * Constructs the TestEmbeddedXmlBlaster object.
    * <p />
    * @param testName   The name used in the test suite
    */
   public TestEmbeddedXmlBlaster(String testName) {
      this(Global.instance(), testName);
   }

   public TestEmbeddedXmlBlaster(Global glob, String testName) {
      super(testName);
      this.glob = glob;

      this.name = testName; // name to login to xmlBlaster
   }

   /**
    * Sets up the fixture.
    */
   protected void setUp()
   {
   }

   /**
    * Tears down the fixture.
    */
   protected void tearDown()
   {
      // reset to default server port (necessary if other tests follow in the same JVM).
      Util.resetPorts();
   }

   /**
    * RMI fails as we don't know how to kill the registry
    * JacORB 1.3.30 can't reinitialize the orb if once shutdown (so we leave it alive)
    *        hopefully fixed with JacORB 1.4.2
    * XmlRpc has one thread open???
    *
    * <pre>
    * BEFORE:
    *
    * Thread Group: system  Max Priority: 10
    *     Thread: Signal dispatcher  Priority: 5 Daemon
    *     Thread: Reference Handler  Priority: 10 Daemon
    *     Thread: Finalizer  Priority: 8 Daemon
    *     Thread Group: main  Max Priority: 10
    *         Thread: main  Priority: 5
    *
    * AFTER:
    *
    * Thread Group: system  Max Priority: 10
    *     Thread: Signal dispatcher  Priority: 5 Daemon
    *     Thread: Reference Handler  Priority: 10 Daemon
    *     Thread: Finalizer  Priority: 8 Daemon
    *     Thread: RMI TCP Accept-1  Priority: 5 Daemon
    *     Thread: RMI TCP Accept-2  Priority: 5 Daemon
    *     Thread: GC Daemon  Priority: 2 Daemon
    *     Thread: RMI RenewClean-[192.168.1.3:33493]  Priority: 5 Daemon
    *     Thread: RMI LeaseChecker  Priority: 5 Daemon
    *     Thread: RMI ConnectionExpiration-[192.168.1.3:33493]  Priority: 5 Daemon
    *     Thread: RMI ConnectionExpiration-[kinder:7613]  Priority: 5 Daemon
    *     Thread Group: main  Max Priority: 10
    *         Thread: XmlBlaster MainThread  Priority: 5
    *         Thread: Thread-11  Priority: 10 Daemon
    *         Thread: JacORB Listener Thread on port 33489  Priority: 5 Daemon
    *         Thread: Thread-14  Priority: 10 Daemon
    *         Thread: Thread-16  Priority: 5 Daemon
    *         Thread Group: XMLRPC Runner  Max Priority: 10
    *     Thread Group: RMI Runtime  Max Priority: 10
    *         Thread: TCP Connection(3)-192.168.1.3  Priority: 5 Daemon
    *         Thread: TCP Connection(4)-192.168.1.3  Priority: 5 Daemon
    * </pre>
    */
   public void testThreadFree()
   {
      log.info("######## Start testThreadFree()");

      int threadsBefore = ThreadLister.countThreads();
      log.info("Testing thread consume before xmlBlaster startup=" + threadsBefore);
      ThreadLister.listAllThreads(System.out);

      // Start xmlBlaster
      // We register here the demo plugin with xmlBlaster server, supplying an argument to the plugin
      String[] args = {
         "-bootstrapPort",        // For all protocol we may use set an alternate server port
         "" + serverPort,
         "-plugin/socket/port",
         "" + (serverPort-1),
         "-plugin/rmi/registryPort",
         "" + (serverPort-2),
         "-plugin/xmlrpc/port",
         "" + (serverPort-3),
         "-ProtocolPlugin[IOR][1.0]",
         "org.xmlBlaster.protocol.corba.CorbaDriver",
         "-CbProtocolPlugin[IOR][1.0]",
         "org.xmlBlaster.protocol.corba.CallbackCorbaDriver"
      };
      glob.init(args);

      serverThread = EmbeddedXmlBlaster.startXmlBlaster(glob);
      log.info("XmlBlaster is ready for testing JDBC access");

      // Stop xmlBlaster
      try { Thread.sleep(100L); } catch( InterruptedException i) {}
      EmbeddedXmlBlaster.stopXmlBlaster(this.serverThread);
      this.serverThread = null;


      ThreadLister.listAllThreads(System.out);
      int threadsAfter = ThreadLister.countThreads();
      log.info("Currently used threads after server startup/shutdown" + threadsAfter);
      int allow = threadsBefore + 1; // This 1 thread is temporary
      assertTrue("We have a thread leak, threadsBefore=" + threadsBefore + " threadsAfter=" + threadsAfter, threadsAfter <= allow);

   }

   /**
    * Invoke: java org.xmlBlaster.test.qos.TestEmbeddedXmlBlaster
    * @deprecated Use the TestRunner from the testsuite to run it:<p />
    * <pre>   java -Djava.compiler= junit.textui.TestRunner org.xmlBlaster.test.qos.TestEmbeddedXmlBlaster</pre>
    */
   public static void main(String args[])
   {
      Global glob = new Global();
      if (glob.init(args) != 0) {
         System.out.println(ME + ": Init failed");
         System.exit(1);
      }
      TestEmbeddedXmlBlaster test = new TestEmbeddedXmlBlaster(glob, "TestEmbeddedXmlBlaster");
      test.setUp();
      test.testThreadFree();
      test.tearDown();
   }
}
TOP

Related Classes of org.xmlBlaster.test.qos.TestEmbeddedXmlBlaster

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.