Author: toad
Date: 2008-09-02 16:32:09 +0000 (Tue, 02 Sep 2008)
New Revision: 22353
Modified:
trunk/freenet/src/freenet/node/simulator/SeednodePingTest.java
Log:
Record success/failure of connection with the time for each node in a file
dedicated to that node.
Show the track record of the nodes, indicate if one has been failing for a week.
Shut down the node properly.
Modified: trunk/freenet/src/freenet/node/simulator/SeednodePingTest.java
===================================================================
--- trunk/freenet/src/freenet/node/simulator/SeednodePingTest.java
2008-09-02 16:19:02 UTC (rev 22352)
+++ trunk/freenet/src/freenet/node/simulator/SeednodePingTest.java
2008-09-02 16:32:09 UTC (rev 22353)
@@ -22,8 +22,14 @@
import freenet.support.LoggerHook.InvalidThresholdException;
import freenet.support.SimpleFieldSet;
import freenet.support.TimeUtil;
+
+import java.io.BufferedReader;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
import java.util.EnumMap;
import java.util.Map;
import java.util.Vector;
@@ -33,7 +39,12 @@
*/
public class SeednodePingTest extends RealNodeTest {
+ static File STATUS_DIR = new
File("/var/www/freenet/tests/seednodes/status/");
+ static final long COUNT_SUCCESSES_PERIOD = 7*24*60*60*1000; // 1 week
+
public static void main(String[] args) throws FSParseException,
IOException, OpennetDisabledException, PeerParseException,
InterruptedException, ReferenceSignatureVerificationException,
NodeInitException, InvalidThresholdException {
+ if(args.length == 1)
+ STATUS_DIR = new File(args[0]);
RandomSource random = NodeStarter.globalTestInit("seednode-pingtest",
false, Logger.ERROR, "");
// Create one node
Executor executor = new PooledExecutor();
@@ -106,7 +117,67 @@
System.out.println("##################
("+node.peers.countConnectedPeers()+")
"+countConnectedSeednodes+'/'+node.peers.countSeednodes());
Thread.sleep(5000);
}
+ Map<FATE, Integer> totals = new
EnumMap(SeedServerTestPeerNode.FATE.class);
+ for(SeedServerTestPeerNode seednode : seedNodes) {
+ FATE fate = seednode.getFate();
+ Integer x = totals.get(fate);
+ if(x == null)
+ totals.put(fate, 1);
+ else
+ totals.put(fate, x+1);
+ System.out.println(seednode.getIdentityString() + " : "+fate+ "
: "+seednode.getPeerNodeStatusString());
+ }
+ System.out.println("RESULT:TOTALS:");
+ for(FATE fate : totals.keySet()) {
+ System.out.println("RESULT:"+fate + " : "+totals.get(fate));
+ }
System.out.println("Completed seednodes scan.");
+ // Record statuses.
+ System.out.println("FINAL STATUS:");
+ long writeTime = System.currentTimeMillis();
+ for(SeedServerTestPeerNode peer : seedNodes) {
+ String status = writeTime+" : "+peer.getIdentityString()+" :
"+peer.getFate();
+ System.out.println(status);
+ File logFile = new File(STATUS_DIR, peer.getIdentityString());
+ FileOutputStream fos = new FileOutputStream(logFile, true);
+ OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
+ osw.write(status+"\n");
+ osw.close();
+ FileInputStream fis = new FileInputStream(logFile);
+ InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
+ BufferedReader br = new BufferedReader(isr);
+ String line;
+ int successes = 0;
+ int failures = 0;
+ long lastSuccess = 0;
+ long firstSample = 0;
+ long countSince = writeTime - COUNT_SUCCESSES_PERIOD;
+ do {
+ line = br.readLine();
+ if(line == null) break;
+ String[] results = line.split(" : ");
+ if(results.length != 3) {
+ System.err.println("Unable to parse line in "+logFile+"
: wrong number of fields : "+results.length+" : "+line);
+ continue;
+ }
+ long time = Long.parseLong(results[0]);
+ FATE fate = FATE.valueOf(results[2]);
+ if(firstSample == 0) firstSample = time;
+ if(fate == FATE.CONNECTED_SUCCESS) {
+ if(time >= countSince)
+ successes++;
+ lastSuccess = time;
+ } else {
+ if(time >= countSince)
+ failures++;
+ }
+ } while(line != null);
+ br.close();
+ if(firstSample < countSince && successes == 0)
+ System.err.println("RESULT:"+peer.getIdentityString()+" NOT
CONNECTED IN LAST WEEK! LAST CONNECTED: "+(lastSuccess > 0 ?
TimeUtil.formatTime(writeTime - lastSuccess) : "NEVER"));
+ System.out.println(peer.getIdentityString()+" : last success
"+(lastSuccess > 0 ? TimeUtil.formatTime(writeTime - lastSuccess) : "NEVER")+"
failures in last week: "+failures+" successes in last week: "+successes);
+ }
+ node.park();
System.exit(0);
}
}