[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [xmlblaster] Testing Protocols



Hi again,

this is what I code , you can take an idea :

PongTest is a subscriber that wait for a "ping" message
PingTest is a publisher that wait for a "pong" message after sending a "ping" message and calculate the latency


I hope that help you little

PS : running in console with correct argument for server, port ,CallBack port ....


Zied


Mohannad a écrit :
thanks Zied,
These files will be helpful. However, I need tools for measurement. I used jconsole but I didn't find for example a way to measure the time delay or packet transmission time.


Is there any function in Jconsole will help to support this ?

Thanks,

Mohannad

On Wed, Apr 16, 2008 at 12:01 PM, Zied ABID <zied.abid at it-sudparis.eu> wrote:

    Dear Mohannad,

    If I understand, you want just use xmlBlaster to publish and
    receive message, so you should take a look on javaClients
    HelloWorld in
    $XMLBLASTER_HOME/demo/javaClients specially : HelloWorldPublish
    and HelloWorldSubscribe

    $XMLBLASTER_HOME/demo/HelloWorld6 is helpful too to have an idea
    on protocol's configuration


I'm begging also in xmlBlaster , so I hope that is helpful


Zied


Mohannad a écrit :

        thanks Marcel,

        I need the XMLBlaster for just publish messages and the
        clients simply will receive them. So by changing the code of
        Java file in the client side (will lead somehow to different
        seniors), and then we can take some approximate measurements.

        If this possible at least to build some approximation and not
        necessary to be very accurate, I will be appreciate it if you
        could help us to make it by this Middleware package.

        Thanks again,

        Mohannad

        On Wed, Apr 16, 2008 at 11:00 AM, Marcel Ruff
        <mr at marcelruff.info <mailto:mr at marcelruff.info>
        <mailto:mr at marcelruff.info <mailto:mr at marcelruff.info>>> wrote:

           Mohannad wrote:

               Dear Marcel,

               I'm new here for using XMLBlaster. I am working with my
               college in my university on project which depends
        totally on
               XMLBlaster package. We need the package for testing several
               protocols on different operating systems (different objects
               also) by changing the loads that sent. This will help to
               decide which protocol is better than other in specific
        loads.

               My doctor in my university suggested to use XMLBlaster
        since
               it has powerful capability to monitor the real time and
        then
               calculate statistics (e.g number of messages sent in
        specific
               time period)
               I tried to figure out that capabilities by using
        jconsole, but
               I could not find these real time monitoring for my
        project's goal.

               Could you help me to find a way to accomplish our
        project goal?

           Hi Mohannad,

           you plan a scientific task.

           To do such performance measurements you need to create an
        accurate
           experimental setup
           and precisely define the measurement points with minimal
        'noise'
           (cross effects etc) in between.

           This needs to be coded depending on what your goals are
           and can't be generally done by a middleware.

           I wish you success,
           Marcel


Thanks Marcel,

               Mohannad




-- Marcel Ruff http://www.xmlBlaster.org http://watchee.net Phone: +49 7551 309371




-- Mo|-|annad
-وما توفيقي الا بالله -






--
Mo|-|annad
-وما توفيقي الا بالله -

// from xmlBlaster/demo/HelloWorld2.java
import org.xmlBlaster.util.Global;
import org.xmlBlaster.util.SessionName;
import org.xmlBlaster.util.XmlBlasterException;
import org.xmlBlaster.client.qos.ConnectQos;
import org.xmlBlaster.client.qos.PublishQos;
import org.xmlBlaster.client.I_Callback;
import org.xmlBlaster.client.key.PublishKey;
import org.xmlBlaster.client.key.UpdateKey;
import org.xmlBlaster.client.qos.UpdateQos;
import org.xmlBlaster.client.I_XmlBlasterAccess;
import org.xmlBlaster.util.MsgUnit;


public class PingTest implements I_Callback
{
	private String oid="test";
	private Global glob;
	I_XmlBlasterAccess con;

	long fin = -1L;
	long debut = -1L;
	long latence = -1L; 


	

public PingTest(final Global glob) {

    
	try {
		this.glob =glob;		
	
		
		
		 // Parametre de connexion ( Obligatoire ) 
		  String[] args = { "-protocol", "XMLRPC",
	   		 "-dispatch/connection/plugin/xmlrpc/hostname", "xerxes",
	   		//"-dispatch/connection/plugin/xmlrpc/port","8080",
	   		// "-dispatch/callback/plugin/xmlrpc/hostname","misti",  
	   		 "-dispatch/callback/plugin/xmlrpc/port","40500"
	          };
		  glob.init(args);
		
		
		con=glob.getXmlBlasterAccess();
         ConnectQos qos = new ConnectQos(glob);
         con.connect(qos, this);  // Login to xmlBlaster, register for updates
         System.out.println("Envoie d'un ping");
         debut=System.currentTimeMillis();
         System.out.println("debut : "+debut);
       
	 send("ping");
         
         //subscribe
         con.subscribe("<key oid='test'/>", "<qos/>");
         
         // A similar subscription with XPATH:
         //con.subscribe("<key oid='' queryType='XPATH'>//key[ at oid='HelloWorld2']</key>", "<qos/>");

         // wait a second
//         try { Thread.sleep(1000); } catch(Exception e) { }
//         Global.waitOnKeyboardHit("\nHit a key to logout and terminate ...");
//
//     
      }
      catch (Exception e) {
         System.err.println(e.getMessage());
      }
   }




void send(String cont)
{
    PublishKey pk = new PublishKey(glob, oid, "text/xml", "1.0");
    PublishQos pq = new PublishQos(glob);
    
	
    pq.setPersistent(false);
    byte[] content = cont.getBytes();
    MsgUnit msgUnit = new MsgUnit(pk, content, pq);
    
    try {

    	// 	publish
    	con.publish(msgUnit);

    } catch (XmlBlasterException e) {
		System.err.print(e);
	}

}
   
   
   //update : reception d'un message
   
   
   public String update(String cbSessionId, UpdateKey updateKey, byte[] content,
                        UpdateQos updateQos)
   {
//      System.out.println("\nHelloWorld: Received asynchronous message '" +
//         updateKey.getOid() + "' state=" + updateQos.getState() + " from xmlBlaster");
      
	   
	   String receive = new String(content);
	   
	   if (receive.equals("pong")) {
	   


	//	try {
	//	Thread.sleep(100);
	//} catch (InterruptedException e1) {
	//		System.err.println(e);
	//}

	fin=System.currentTimeMillis();
        System.out.println("fin   : "+fin);
	   
	latence = (fin-debut)/2;
	System.out.println("latence : "+latence);
       	   
	    try {
		
	    	con.erase("<key oid='HelloWorld2'/>", null);
		
	    } catch (XmlBlasterException e) {
			e.printStackTrace();
		}

		con.disconnect(null);
	   
	   }
	   
	   return "";
   }

   
   
   
   
   /**
    * Try
    * <pre>
    *   java HelloWorld2 -help
    * </pre>
    * for usage help
    */
   public static void main(String args[]) {
      Global glob = new Global();

      if (glob.init(args) != 0) { // Get help with -help
         System.out.println(glob.usage());
         System.out.println("Example: java HelloWorld2 -session.name Jack");
         System.exit(1);
      }

      PingTest ping = new PingTest(glob);
      
   
   }
}

//from xmlBlaster/demo/HelloWorld2.java
import org.xmlBlaster.util.Global;
import org.xmlBlaster.util.SessionName;
import org.xmlBlaster.util.XmlBlasterException;
import org.xmlBlaster.client.qos.ConnectQos;
import org.xmlBlaster.client.qos.PublishQos;
import org.xmlBlaster.client.I_Callback;
import org.xmlBlaster.client.key.PublishKey;
import org.xmlBlaster.client.key.UpdateKey;
import org.xmlBlaster.client.qos.UpdateQos;
import org.xmlBlaster.client.I_XmlBlasterAccess;
import org.xmlBlaster.util.MsgUnit;


public class PongTest  implements I_Callback
{
	private String oid="test";
	private Global glob;
	I_XmlBlasterAccess con;

	
	 


public PongTest(final Global glob) {

    
	try {
		this.glob =glob;		
	
		// Parametre de connexion ( Obligatoire ) 
		  String[] args = { "-protocol", "XMLRPC",
	   		 "-dispatch/connection/plugin/xmlrpc/hostname", "xerxes", 
	   		 //"-dispatch/connection/plugin/xmlrpc/port","8080",
	   		 // "-dispatch/callback/plugin/xmlrpc/hostname","misti",  
	   		 "-dispatch/callback/plugin/xmlrpc/port","40600"
	          };
		 
		  glob.init(args);
		  
		con=glob.getXmlBlasterAccess();
         ConnectQos qos = new ConnectQos(glob);
         con.connect(qos, this);  // Login to xmlBlaster, register for updates
         
         //subscribe
         con.subscribe("<key oid='test'/>", "<qos/>");
         
         // A similar subscription with XPATH:
         //con.subscribe("<key oid='' queryType='XPATH'>//key[ at oid='HelloWorld2']</key>", "<qos/>");

         // wait a second
//         try { Thread.sleep(1000); } catch(Exception e) { }
//         Global.waitOnKeyboardHit("\nHit a key to logout and terminate ...");
//
//     
      }
      catch (Exception e) {
         System.err.println(e.getMessage());
      }
   }




void send(String cont)
{
    PublishKey pk = new PublishKey(glob, oid, "text/xml", "1.0");
    PublishQos pq = new PublishQos(glob);
    
	
    pq.setPersistent(false);
    byte[] content = cont.getBytes();
    MsgUnit msgUnit = new MsgUnit(pk, content, pq);
    
    try {

    	// 	publish
    	con.publish(msgUnit);

    } catch (XmlBlasterException e) {
		System.err.print(e);
	}

}
   
   
   //update : reception d'un message
   
   
   public String update(String cbSessionId, UpdateKey updateKey, byte[] content,
                        UpdateQos updateQos) throws XmlBlasterException
   {
//      System.out.println("\nHelloWorld: Received asynchronous message '" +
//         updateKey.getOid() + "' state=" + updateQos.getState() + " from xmlBlaster");
      
	   
	   String receive = new String(content);
	   
	   if (receive.equals("ping")) {
	System.out.println("ping recu, envoie du pong");
	  send("pong");
	  try {
		Thread.sleep(1000);
		con.erase("<key oid='test'/>", null);
		con.disconnect(null);
	  } catch (InterruptedException e) {
			e.printStackTrace();
	} 
	  
	   }
	   
	   return "";
   }

   
   
   
   
   /**
    * Try
    * <pre>
    *   java HelloWorld2 -help
    * </pre>
    * for usage help
    */
   public static void main(String args[]) {
      Global glob = new Global();

      if (glob.init(args) != 0) { // Get help with -help
         System.out.println(glob.usage());
         System.out.println("Example: java HelloWorld2 -session.name Jack");
         System.exit(1);
      }

     new PongTest(glob);
      
      System.out.println("Debut pong");
      
   }
}