Package org.xmlBlaster.test.util

Source Code of org.xmlBlaster.test.util.PtPDestination

/*------------------------------------------------------------------------------
Name:      PtPDestination.java
Project:   xmlBlaster.org
Copyright: xmlBlaster.org, see xmlBlaster-LICENSE file
------------------------------------------------------------------------------*/

package org.xmlBlaster.test.util;

import java.util.logging.Logger;

import junit.framework.TestCase;

import org.xmlBlaster.client.I_XmlBlasterAccess;
import org.xmlBlaster.client.qos.ConnectQos;
import org.xmlBlaster.client.qos.DisconnectQos;
import org.xmlBlaster.test.MsgInterceptor;
import org.xmlBlaster.util.Global;
import org.xmlBlaster.util.SessionName;
import org.xmlBlaster.util.XmlBlasterException;
import org.xmlBlaster.util.qos.address.Address;
import org.xmlBlaster.util.qos.address.CallbackAddress;


/**
* PtPDestination is a helper class when testing ptp destinations
* @author <a href="mailto:michele@laghi.eu">Michele Laghi</a>
*/
public class PtPDestination {
   private Global global;
   private MsgInterceptor updateInterceptor;
   private SessionName sessionName;
   Logger log = Logger.getLogger(PtPDestination.class.getName());
  
   public PtPDestination(Global parentGlobal, String sessionName) {
      this.global = parentGlobal.getClone(null);
      this.sessionName = new SessionName(this.global, sessionName);
      this.updateInterceptor = new MsgInterceptor(this.global, log, null);
   }
     
   public void init(boolean wantsPtP, boolean shutdownCb, long cbMaxEntries, long cbMaxEntriesCache, long subjMaxEntries, long subjMaxEntriesCache) throws XmlBlasterException {
      this.updateInterceptor.clear();
      ConnectQos qos = new ConnectQos(this.global);
      qos.setSessionName(this.sessionName);
      qos.setPtpAllowed(wantsPtP);
      qos.getSessionCbQueueProperty().setMaxEntries(cbMaxEntries);
      qos.getSessionCbQueueProperty().setMaxEntriesCache(cbMaxEntriesCache);
        
      if (subjMaxEntries > 0L || subjMaxEntriesCache > 0L) {  
         if (subjMaxEntries > 0L) qos.getSubjectQueueProperty().setMaxEntries(subjMaxEntries);
         if (subjMaxEntriesCache > 0L) qos.getSubjectQueueProperty().setMaxEntriesCache(subjMaxEntriesCache);
      }
        
      CallbackAddress cbAddress = new CallbackAddress(this.global);
      cbAddress.setRetries(-1);
      cbAddress.setPingInterval(-1);
      cbAddress.setDelay(250L);
      qos.addCallbackAddress(cbAddress);
     
      Address clientAddress = qos.getAddress();
      clientAddress.setRetries(-1);
      clientAddress.setPingInterval(-1);
      clientAddress.setDelay(10000L);
     
      this.updateInterceptor.clear();
      this.global.getXmlBlasterAccess().connect(qos, updateInterceptor);
      if (shutdownCb) {
         try {
            Thread.sleep(250L);
         }
         catch (InterruptedException ex) {
            ex.printStackTrace();
            TestCase.assertTrue("An interrupted exception occured", false);
         }
         Client.shutdownCb(global.getXmlBlasterAccess(), Client.Shutdown.LEAVE_SERVER);
      }
   }

   public void shutdown(boolean doDisconnect) {
      DisconnectQos qos = new DisconnectQos(this.global);
      if (doDisconnect)
         this.global.getXmlBlasterAccess().disconnect(qos);
      this.global.shutdown();
      this.global = null;
   }
     
   public SessionName getSessionName() {
      return this.sessionName;
   }
     
   public I_XmlBlasterAccess getConnection() {
      return this.global.getXmlBlasterAccess();
   }
  
   public MsgInterceptor getUpdateInterceptor() {
      return this.updateInterceptor;
   }
  
   public void check(long timeout, int expected) {
      TestCase.assertEquals(this.getSessionName().getRelativeName(), expected, this.updateInterceptor.waitOnUpdate(timeout, expected));
      this.updateInterceptor.clear();        
   }
}
TOP

Related Classes of org.xmlBlaster.test.util.PtPDestination

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.