Author: zothar
Date: 2006-11-03 16:29:32 +0000 (Fri, 03 Nov 2006)
New Revision: 10807

Modified:
   trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
   trunk/freenet/src/freenet/node/Node.java
   trunk/freenet/src/freenet/node/PeerNodeStatus.java
Log:
Added more node stats to FCP and renamed networkSizeEstimateRecent.

Modified: trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java       
2006-11-03 13:43:22 UTC (rev 10806)
+++ trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java       
2006-11-03 16:29:32 UTC (rev 10807)
@@ -65,23 +65,6 @@
                return "GET, POST";
        }

-       /**
-        * Counts the peers in <code>peerNodes</code> that have the specified
-        * status.
-        * @param peerNodeStatuses The peer nodes' statuses
-        * @param status The status to count
-        * @return The number of peers that have the specified status.
-        */
-       private int getPeerStatusCount(PeerNodeStatus[] peerNodeStatuses, int 
status) {
-               int count = 0;
-               for (int peerIndex = 0, peerCount = peerNodeStatuses.length; 
peerIndex < peerCount; peerIndex++) {
-                       if (peerNodeStatuses[peerIndex].getStatusValue() == 
status) {
-                               count++;
-                       }
-               }
-               return count;
-       }
-
        public void handleGet(URI uri, ToadletContext ctx) throws 
ToadletContextClosedException, IOException, RedirectException {

                String path = uri.getPath();
@@ -109,16 +92,16 @@
                        }
                });

-               int numberOfConnected = getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_CONNECTED);
-               int numberOfRoutingBackedOff = 
getPeerStatusCount(peerNodeStatuses, Node.PEER_NODE_STATUS_ROUTING_BACKED_OFF);
-               int numberOfTooNew = getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_TOO_NEW);
-               int numberOfTooOld = getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_TOO_OLD);
-               int numberOfDisconnected = getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_DISCONNECTED);
-               int numberOfNeverConnected = 
getPeerStatusCount(peerNodeStatuses, Node.PEER_NODE_STATUS_NEVER_CONNECTED);
-               int numberOfDisabled = getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_DISABLED);
-               int numberOfBursting = getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_BURSTING);
-               int numberOfListening = getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_LISTENING);
-               int numberOfListenOnly = getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_LISTEN_ONLY);
+               int numberOfConnected = 
PeerNodeStatus.getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_CONNECTED);
+               int numberOfRoutingBackedOff = 
PeerNodeStatus.getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_ROUTING_BACKED_OFF);
+               int numberOfTooNew = 
PeerNodeStatus.getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_TOO_NEW);
+               int numberOfTooOld = 
PeerNodeStatus.getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_TOO_OLD);
+               int numberOfDisconnected = 
PeerNodeStatus.getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_DISCONNECTED);
+               int numberOfNeverConnected = 
PeerNodeStatus.getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_NEVER_CONNECTED);
+               int numberOfDisabled = 
PeerNodeStatus.getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_DISABLED);
+               int numberOfBursting = 
PeerNodeStatus.getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_BURSTING);
+               int numberOfListening = 
PeerNodeStatus.getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_LISTENING);
+               int numberOfListenOnly = 
PeerNodeStatus.getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_LISTEN_ONLY);

                int numberOfSimpleConnected = numberOfConnected + 
numberOfRoutingBackedOff;
                int numberOfNotConnected = numberOfTooNew + numberOfTooOld + 
numberOfDisconnected + numberOfNeverConnected + numberOfDisabled + 
numberOfBursting + numberOfListening + numberOfListenOnly;

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2006-11-03 13:43:22 UTC (rev 
10806)
+++ trunk/freenet/src/freenet/node/Node.java    2006-11-03 16:29:32 UTC (rev 
10807)
@@ -23,6 +23,7 @@
 import java.net.UnknownHostException;
 import java.security.MessageDigest;
 import java.util.Arrays;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -1682,6 +1683,7 @@
        public SimpleFieldSet exportVolatileFieldSet() {
                SimpleFieldSet fs = new SimpleFieldSet();
                long now = System.currentTimeMillis();
+               fs.put("isUsingWrapper", Boolean.toString(isUsingWrapper()));
                long nodeUptimeSeconds = 0;
                synchronized(this) {
                        fs.put("startupTime", Long.toString(startupTime));
@@ -1691,14 +1693,88 @@
                fs.put("averagePingTime", 
Double.toString(getNodeAveragePingTime()));
                fs.put("bwlimitDelayTime", 
Double.toString(getBwlimitDelayTime()));
                fs.put("networkSizeEstimateSession", 
Integer.toString(getNetworkSizeEstimate(-1)));
-               int networkSizeEstimateRecent = 0;
-               if(nodeUptimeSeconds > (48*60*60)) {  // 48 hours
-                       networkSizeEstimateRecent = getNetworkSizeEstimate(now 
- (48*60*60*1000));  // 48 hours
-               }
-               fs.put("networkSizeEstimateRecent", 
Integer.toString(networkSizeEstimateRecent));
+               int networkSizeEstimate24hourRecent = 
getNetworkSizeEstimate(now - (24*60*60*1000));  // 24 hours
+               fs.put("networkSizeEstimate24hourRecent", 
Integer.toString(networkSizeEstimate24hourRecent));
+               int networkSizeEstimate48hourRecent = 
getNetworkSizeEstimate(now - (48*60*60*1000));  // 48 hours
+               fs.put("networkSizeEstimate48hourRecent", 
Integer.toString(networkSizeEstimate48hourRecent));
                fs.put("missRoutingDistance", 
Double.toString(missRoutingDistance.currentValue()));
                fs.put("backedoffPercent", 
Double.toString(backedoffPercent.currentValue()));
                fs.put("pInstantReject", 
Double.toString(pRejectIncomingInstantly()));
+               
+               /* gather connection statistics */
+               PeerNodeStatus[] peerNodeStatuses = getPeerNodeStatuses();
+               Arrays.sort(peerNodeStatuses, new Comparator() {
+                       public int compare(Object first, Object second) {
+                               PeerNodeStatus firstNode = (PeerNodeStatus) 
first;
+                               PeerNodeStatus secondNode = (PeerNodeStatus) 
second;
+                               int statusDifference = 
firstNode.getStatusValue() - secondNode.getStatusValue();
+                               if (statusDifference != 0) {
+                                       return statusDifference;
+                               }
+                               return 
firstNode.getName().compareToIgnoreCase(secondNode.getName());
+                       }
+               });
+               
+               int numberOfConnected = 
PeerNodeStatus.getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_CONNECTED);
+               int numberOfRoutingBackedOff = 
PeerNodeStatus.getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_ROUTING_BACKED_OFF);
+               int numberOfTooNew = 
PeerNodeStatus.getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_TOO_NEW);
+               int numberOfTooOld = 
PeerNodeStatus.getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_TOO_OLD);
+               int numberOfDisconnected = 
PeerNodeStatus.getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_DISCONNECTED);
+               int numberOfNeverConnected = 
PeerNodeStatus.getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_NEVER_CONNECTED);
+               int numberOfDisabled = 
PeerNodeStatus.getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_DISABLED);
+               int numberOfBursting = 
PeerNodeStatus.getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_BURSTING);
+               int numberOfListening = 
PeerNodeStatus.getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_LISTENING);
+               int numberOfListenOnly = 
PeerNodeStatus.getPeerStatusCount(peerNodeStatuses, 
Node.PEER_NODE_STATUS_LISTEN_ONLY);
+               
+               int numberOfSimpleConnected = numberOfConnected + 
numberOfRoutingBackedOff;
+               int numberOfNotConnected = numberOfTooNew + numberOfTooOld + 
numberOfDisconnected + numberOfNeverConnected + numberOfDisabled + 
numberOfBursting + numberOfListening + numberOfListenOnly;
+
+               fs.put("numberOfConnected", 
Integer.toString(numberOfConnected));
+               fs.put("numberOfRoutingBackedOff", 
Integer.toString(numberOfRoutingBackedOff));
+               fs.put("numberOfTooNew", Integer.toString(numberOfTooNew));
+               fs.put("numberOfTooOld", Integer.toString(numberOfTooOld));
+               fs.put("numberOfDisconnected", 
Integer.toString(numberOfDisconnected));
+               fs.put("numberOfNeverConnected", 
Integer.toString(numberOfNeverConnected));
+               fs.put("numberOfDisabled", Integer.toString(numberOfDisabled));
+               fs.put("numberOfBursting", Integer.toString(numberOfBursting));
+               fs.put("numberOfListening", 
Integer.toString(numberOfListening));
+               fs.put("numberOfListenOnly", 
Integer.toString(numberOfListenOnly));
+               
+               fs.put("numberOfSimpleConnected", 
Integer.toString(numberOfSimpleConnected));
+               fs.put("numberOfNotConnected", 
Integer.toString(numberOfNotConnected));
+
+               fs.put("numberOfInserts", Integer.toString(getNumInserts()));
+               fs.put("numberOfRequests", Integer.toString(getNumRequests()));
+               fs.put("numberOfTransferringRequests", 
Integer.toString(getNumTransferringRequests()));
+               fs.put("numberOfARKFetchers", 
Integer.toString(getNumARKFetchers()));
+
+               long[] total = IOStatisticCollector.getTotalIO();
+               long total_output_rate = (total[0]) / nodeUptimeSeconds;
+               long total_input_rate = (total[1]) / nodeUptimeSeconds;
+               long totalPayloadOutput = getTotalPayloadSent();
+               long total_payload_output_rate = totalPayloadOutput / 
nodeUptimeSeconds;
+               int total_payload_output_percent = (int) (100 * 
totalPayloadOutput / total[0]);
+               fs.put("totalOutputBytes", Long.toString(total[0]));
+               fs.put("totalOutputRate", Long.toString(total_output_rate));
+               fs.put("totalPayloadOutputBytes", 
Long.toString(totalPayloadOutput));
+               fs.put("totalPayloadOutputRate", 
Long.toString(total_payload_output_rate));
+               fs.put("totalPayloadOutputPercent", 
Integer.toString(total_payload_output_percent));
+               fs.put("totalInputBytes", Long.toString(total[1]));
+               fs.put("totalInputRate", Long.toString(total_input_rate));
+               long[] rate = getNodeIOStats();
+               long delta = (rate[5] - rate[2]) / 1000;
+               long recent_output_rate = (rate[3] - rate[0]) / delta;
+               long recent_input_rate = (rate[4] - rate[1]) / delta;
+               fs.put("recentOutputRate", Long.toString(recent_output_rate));
+               fs.put("recentInputRate", Long.toString(recent_input_rate));
+
+               String [] routingBackoffReasons = 
getPeerNodeRoutingBackoffReasons();
+               if(routingBackoffReasons.length != 0) {
+                       for(int i=0;i<routingBackoffReasons.length;i++) {
+                               fs.put("numberWithBackoffOf" + 
routingBackoffReasons[i], 
getPeerNodeRoutingBackoffReasonSize(routingBackoffReasons[i]));
+                       }
+               }
+               
                return fs;
        }


Modified: trunk/freenet/src/freenet/node/PeerNodeStatus.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNodeStatus.java  2006-11-03 13:43:22 UTC 
(rev 10806)
+++ trunk/freenet/src/freenet/node/PeerNodeStatus.java  2006-11-03 16:29:32 UTC 
(rev 10807)
@@ -142,6 +142,23 @@
        }

        /**
+        * Counts the peers in <code>peerNodes</code> that have the specified
+        * status.
+        * @param peerNodeStatuses The peer nodes' statuses
+        * @param status The status to count
+        * @return The number of peers that have the specified status.
+        */
+       public static int getPeerStatusCount(PeerNodeStatus[] peerNodeStatuses, 
int status) {
+               int count = 0;
+               for (int peerIndex = 0, peerCount = peerNodeStatuses.length; 
peerIndex < peerCount; peerIndex++) {
+                       if (peerNodeStatuses[peerIndex].getStatusValue() == 
status) {
+                               count++;
+                       }
+               }
+               return count;
+       }
+
+       /**
         * @return the timeLastConnectionCompleted
         */
        public long getTimeLastConnectionCompleted() {


Reply via email to