changes: 1) fixes problems in the original EyeTracking benchmark 2) fix a bug in...
[IRC.git] / Robust / src / Benchmarks / Chat / NetsClient.java
index df038e8f2d4d5ccff13ce6cc66a39a4b334b367e..8fcb81929a52983a32c605b88c276b8c736d6eb9 100644 (file)
@@ -6,13 +6,13 @@ import java.util.*;
 public class NetsClient extends Thread {
 
     static boolean debug;
-    static int sendoption=0;
 
     public static void main(String argv[]) {
 
        String host=null;
        int numberofclients=0;
        int numberofmessages=0;
+       int groups=0;
        int port=4321;
 
        NetsClient.debug=false;
@@ -21,46 +21,53 @@ public class NetsClient extends Thread {
            port=Integer.parseInt(argv[1]);
            numberofclients=Integer.parseInt(argv[2]);
            numberofmessages=Integer.parseInt(argv[3]);
+           groups=Integer.parseInt(argv[4]);
        }
        catch (Exception e) {
            System.out.println("NetsClient host port numberofclients numberofmessages debugflag");
        }
        try {
-           NetsClient.debug=(Integer.parseInt(argv[4])==1);
-           NetsClient.sendoption=Integer.parseInt(argv[5]);
+           NetsClient.debug=(Integer.parseInt(argv[5])==1);
        } catch (Exception e) {}
 
-       NetsClient[] tarray=new NetsClient[numberofclients];
-       for (int i = 0; i < numberofclients; i++) {
-           String room="room";
-           tarray[i] = new NetsClient(i, host, port,
-                                      numberofmessages, numberofclients, room);
-           if (debug)
-               System.out.println("Attempting to start "+i);
-           tarray[i].connectt();
-       }
-
-       long starttime=System.currentTimeMillis();
+       NetsClient[][] tarray=new NetsClient[groups][numberofclients];
+       for (int g=0;g<groups;g++) {
+           for (int i = 0; i < numberofclients; i++) {
+               String room="group"+g;
+               tarray[g][i] = new NetsClient(i, host, port,
+                                          numberofmessages, numberofclients, room);
+               if (debug)
+                   System.out.println("Attempting to start "+i);
+               tarray[g][i].connectt();
+           }
+           
+       try {
+           Thread.sleep(1000);
+       } catch (Exception e) {};
        for (int i = 0; i < numberofclients; i++)
-           tarray[i].start();
+           tarray[g][i].start();
        try {
            for (int i = 0; i < numberofclients; i++) {
-               tarray[i].join();
+               tarray[g][i].join();
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
            System.out.println(e);
        }
-       long endtime=System.currentTimeMillis();
+       }
+
+       int messages=0;
+       for (int g=0;g<groups;g++)
+           for(int i=0;i<numberofclients;i++)
+               messages+=tarray[g][i].lines;
 
        System.out.println("ChatClient");
        System.out.println("numclients:" + numberofclients);
+       System.out.println("groups:"+groups);
        System.out.println("port:" + port);
        System.out.println("number of messages:" + numberofmessages);
-       System.out.println("Elapsed time:(mS)" + (endtime - starttime));
-       System.out.println("Throughput:" + (double) numberofclients*
-                          ((sendoption==4) ? 1 : numberofclients) *
-                          numberofmessages/((double) (endtime-starttime)));
+
+       System.out.println("Lines="+messages+" out of "+groups*numberofclients*(numberofclients-1)*numberofmessages);
     }
 
     public NetsClient(int clientnumber, String host,
@@ -82,6 +89,7 @@ public class NetsClient extends Thread {
     OutputStream out;
     //DataInputStream din;
     BufferedReader d;
+    int lines=0;
 
     public void connectt() {
        try{
@@ -92,8 +100,8 @@ public class NetsClient extends Thread {
            out = sock.getOutputStream();
            pout = new PrintStream(out);
            //din = new DataInputStream(in);
-           d = new BufferedReader(new InputStreamReader(in));  
            pout.println(room);
+           pout.flush();
        }
        catch (UnknownHostException e ) {
            System.out.println("can't find host");
@@ -109,16 +117,27 @@ public class NetsClient extends Thread {
        int ns=0;
 
         try {
-           for(int nr=0;nr<noc*nom;) {
-               if ((ns<nom)&&((nr%noc)==clientnumber)) {
+           for(int nr=0;nr<noc*nom;nr++) {
+               if ((nr%noc)==clientnumber) {
                    ns++;
-                   pout.println("0|"+clientnumber+"|hello#"+ns+"**");
+                   pout.println(room+"|"+clientnumber+"|hello#"+ns);
+               }
+               while(in.available()>0) {
+                   int nchar=in.read();
+                   if (nchar==10)
+                       lines++;
                }
-               String request = d.readLine();
-               if (debug)
-                   System.out.println(request+nr);
             }
            pout.flush();
+           long time=System.currentTimeMillis();
+           while((System.currentTimeMillis()-time)<8*1000) {
+               if(in.available()>0) {
+                   int nchar=in.read();
+                   time=System.currentTimeMillis();
+                   if (nchar==10)
+                       lines++;
+           } else try {Thread.sleep(2);} catch (Exception e) {}
+           }
        }
 
         catch (UnknownHostException e ) {System.out.println("can't find host"); }