diff src/org/dancres/blitz/tools/MonitorStats.java @ 34:6f68e94c1fb8 default tip

Add CondensedStats monitoring utility, equivalent to vmstat
author Dominic Cleal <dominic-cleal@cdo2.com>
date Thu, 05 Aug 2010 11:07:25 +0100
parents 3dc0c5604566
children
line wrap: on
line diff
--- a/src/org/dancres/blitz/tools/MonitorStats.java	Sat Jun 12 10:52:10 2010 +0100
+++ b/src/org/dancres/blitz/tools/MonitorStats.java	Thu Aug 05 11:07:25 2010 +0100
@@ -1,35 +1,17 @@
 package org.dancres.blitz.tools;
 
 import java.io.IOException;
-
+import java.rmi.RMISecurityManager;
 import java.rmi.RemoteException;
-import java.rmi.RMISecurityManager;
-
-import net.jini.discovery.*;
-
-import net.jini.lookup.*;
-import net.jini.lookup.entry.Name;
-
-import net.jini.core.lookup.ServiceItem;
-import net.jini.core.lookup.ServiceTemplate;
-
-import net.jini.core.entry.Entry;
 
 import net.jini.admin.Administrable;
-
 import net.jini.space.JavaSpace;
 
-import net.jini.core.transaction.TransactionException;
-
-import org.dancres.blitz.remote.BlitzAdmin;
-
+import org.dancres.blitz.remote.StatsAdmin;
+import org.dancres.blitz.stats.Stat;
 import org.dancres.jini.util.DiscoveryUtil;
 import org.dancres.jini.util.ServiceLocator;
 
-import org.dancres.blitz.stats.*;
-
-import org.dancres.blitz.remote.StatsAdmin;
-
 /**
    <p>MonitorStats accepts a spacename as an argument and a loop time.  It then
    attempts to list all available statistics on the space every loop time
@@ -50,6 +32,10 @@
     private static final long MAX_DISCOVER_TIME = 15 * 1000;
 
     public static void main(String args[]) {
+        new MonitorStats().startup(args);
+    }
+
+    void startup(String args[]) {
         if (System.getSecurityManager() == null)
             System.setSecurityManager(new RMISecurityManager());
 
@@ -93,20 +79,7 @@
                             StatsAdmin myStatsAdmin = 
                                 (StatsAdmin) myAdminProxy;
 
-                            if (myTimeout == 0) {
-                                Stat[] myStats = myStatsAdmin.getStats();
-
-                                System.out.println("Snapshot: " +
-                                    System.currentTimeMillis());
-                                for (int i = 0; i < myStats.length; i++) {
-                                    System.out.println(myStats[i]);
-                                }
-
-                                System.out.println();
-
-                            } else {
-                                new Watcher(myStatsAdmin, myTimeout).start();
-                            }
+                            getWatcher(myStatsAdmin, myTimeout).run();
                         } else {
                             System.err.println("No BlitzAdmin interface found - can't be Blitz");
                         }
@@ -129,7 +102,11 @@
         }
     }
 
-    static class Watcher extends Thread {
+    Runnable getWatcher(StatsAdmin anAdmin, long aTimeout) {
+        return new Watcher(anAdmin, aTimeout);
+    }
+
+    static class Watcher implements Runnable {
         private StatsAdmin theAdmin;
         private long theTimeout;
 
@@ -139,7 +116,7 @@
         }
 
         public void run() {
-            while (true) {
+            do {
                 try {
                     Stat[] myStats = theAdmin.getStats();
 
@@ -155,7 +132,7 @@
                 } catch (Exception anE) {
                     System.err.println(anE);
                 }
-            }
+            } while (theTimeout > 0);  // if timeout == 0, only run once
         }
     }
 }