[Tinyos-beta-commits] CVS: tinyos-1.x/beta/Drain/tools/java/net/tinyos/drain DrainTest.java, NONE, 1.1 Drain.java, 1.10, 1.11 Makefile, 1.3, 1.4

Gilman Tolle gtolle at users.sourceforge.net
Wed Aug 17 23:38:39 PDT 2005


Update of /cvsroot/tinyos/tinyos-1.x/beta/Drain/tools/java/net/tinyos/drain
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28874

Modified Files:
	Drain.java Makefile 
Added Files:
	DrainTest.java 
Log Message:
Client-side performance testing tool for DrainTest traffic generator.

--- NEW FILE: DrainTest.java ---
package net.tinyos.drain;

import java.io.*; 
import java.text.*;
import java.util.*;

import net.tinyos.message.*;
import net.tinyos.util.*;
import net.tinyos.drain.*;

import org.apache.log4j.*;

public class DrainTest implements MessageListener {

  private Logger log = Logger.getLogger(DrainTest.class.getName());

  private Map nodes = new HashMap();

  public DrainTest() {
    DrainConnector mhConnector = new DrainConnector();
    Timer t = new Timer();
    t.schedule(new PrintTask(), 0, 4000);
    mhConnector.registerListener(254, this);
  }
  
  public void messageReceived(int to, Message m) {
    DrainMsg mhMsg = (DrainMsg) m;
    
    DrainTestMsg dtMsg = 
      new DrainTestMsg(mhMsg, mhMsg.offset_data(0), 
		       mhMsg.dataLength()
		       - mhMsg.offset_data(0));
    
    log.debug("seqno=" + dtMsg.get_seqno() + ", " + 
	      "time=" + (dtMsg.get_time() * 1000 / 65535));

    if (nodes.containsKey(new Integer(mhMsg.get_source()))) {
      NodeRec rec = (NodeRec) nodes.get(new Integer(mhMsg.get_source()));
      if (dtMsg.get_seqno() > rec.lastSeqno) {
	rec.received++;
	rec.sent += dtMsg.get_seqno() - rec.lastSeqno;
	rec.lastSeqno = dtMsg.get_seqno();
      }
      if (dtMsg.get_seqno() < rec.lastSeqno) {
	rec.lastSeqno = dtMsg.get_seqno();
      }
    } else {
      NodeRec rec = new NodeRec();
      rec.received = rec.sent = 1;
      rec.lastSeqno = dtMsg.get_seqno();
      nodes.put(new Integer(mhMsg.get_source()), rec);
    }
  }

  private class NodeRec {
    int received;
    int lastReceived;
    int sent;
    int lastSeqno;
  }

  private class PrintTask extends TimerTask {
    public void run() {
      log.info("Status Report");
      double aggTraffic = 0;

      for(Iterator it = nodes.keySet().iterator();
	  it.hasNext(); ) {
	Integer addr = (Integer) it.next();
	NodeRec rec = (NodeRec) nodes.get(addr);
	double receiveRate = (rec.received - rec.lastReceived) / 4.0;
	aggTraffic += receiveRate;
	rec.lastReceived = rec.received;

	log.info(addr + ": " + "sent= " + rec.sent + " received= " + rec.received + " success=" + 100*((float)rec.received / rec.sent) + " pps=" + receiveRate);
      }
      log.info("Aggregate pps=" + aggTraffic);
    }
  }

  public static void main(String args[]) {
    new DrainTest();
  }
}

Index: Drain.java
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/beta/Drain/tools/java/net/tinyos/drain/Drain.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** Drain.java	4 Aug 2005 03:18:57 -0000	1.10
--- Drain.java	18 Aug 2005 06:38:37 -0000	1.11
***************
*** 33,37 ****
    public boolean usingTosBase = true;
    public int treeInstance = (int)((double)Math.random() * (double)255);
!     
    public Drain() {
      spAddr = DrainLib.setSPAddr();
--- 33,39 ----
    public boolean usingTosBase = true;
    public int treeInstance = (int)((double)Math.random() * (double)255);
! 
!   public boolean isCommandLine = false;
! 
    public Drain() {
      spAddr = DrainLib.setSPAddr();
***************
*** 116,119 ****
--- 118,124 ----
  	      count--;
  	  }
+ 	  if (isCommandLine) {
+ 	    System.exit(0);
+ 	  }
        }
    }
***************
*** 139,144 ****
  
      drain.maintainTree();
- 
-     System.exit(0);
    }
  
--- 144,147 ----
***************
*** 147,150 ****
--- 150,155 ----
      ArrayList cleanedArgs = new ArrayList();
  
+     drain.isCommandLine = true;
+ 
      for(int i = 0; i < args.length; i++) {
        if (args[i].startsWith("--")) {
***************
*** 175,178 ****
--- 180,185 ----
            drain.spAddr = 0xfffe;
  	  drain.usingTosBase = false;
+ 	} else if (opt.equals("i")) {
+ 	  drain.treeInstance = Integer.parseInt(args[++i]);
  	} else if (opt.equals("h")) {
  	  usage();
***************
*** 189,192 ****
--- 196,200 ----
    private static void usage() {
      System.err.println("usage: java net.tinyos.nucleus.Drain <opts>");
+     System.err.println("  -i <instance number>");
      System.err.println("  -t <rebroadcast delay in secs>");
      System.err.println("  -c <number of beacons to transmit>");

Index: Makefile
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/beta/Drain/tools/java/net/tinyos/drain/Makefile,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** Makefile	16 Jul 2005 21:26:35 -0000	1.3
--- Makefile	18 Aug 2005 06:38:37 -0000	1.4
***************
*** 7,11 ****
  
  # List of message classes to build
! MSGS = DrainMsg.java DrainBeaconMsg.java DrainGroupRegisterMsg.java DrainConsts.java
  CONSTS = 
  INITIAL_TARGETS = $(MSGS) $(CONSTS)
--- 7,11 ----
  
  # List of message classes to build
! MSGS = DrainMsg.java DrainBeaconMsg.java DrainGroupRegisterMsg.java DrainConsts.java DrainTestMsg.java
  CONSTS = 
  INITIAL_TARGETS = $(MSGS) $(CONSTS)
***************
*** 24,27 ****
--- 24,30 ----
  	$(MIG) -java-classname=$(PACKAGE).DrainGroupRegisterMsg $(BETA)/Drain/Drain.h DrainGroupRegisterMsg -o $@
  
+ DrainTestMsg.java: $(BETA)/Drain/DrainTest.h
+ 	$(MIG) -java-classname=$(PACKAGE).DrainTestMsg $(BETA)/Drain/DrainTest.h DrainTestMsg -o $@
+ 
  DrainConsts.java: $(BETA)/Drain/Drain.h
  	$(NCG) -java-classname=$(PACKAGE).DrainConsts -I$(BETA)/Drain $(BETA)/Drain/Drain.h Drain.h -o $@



More information about the Tinyos-beta-commits mailing list