Author: toad
Date: 2008-02-09 16:08:10 +0000 (Sat, 09 Feb 2008)
New Revision: 17765
Modified:
trunk/freenet/src/freenet/node/simulator/RealNodeRequestInsertTest.java
trunk/freenet/src/freenet/node/simulator/RealNodeRoutingTest.java
Log:
Factor out ping test.
Modified:
trunk/freenet/src/freenet/node/simulator/RealNodeRequestInsertTest.java
===================================================================
--- trunk/freenet/src/freenet/node/simulator/RealNodeRequestInsertTest.java
2008-02-09 15:59:42 UTC (rev 17764)
+++ trunk/freenet/src/freenet/node/simulator/RealNodeRequestInsertTest.java
2008-02-09 16:08:10 UTC (rev 17765)
@@ -32,7 +32,7 @@
/**
* @author amphibian
*/
-public class RealNodeRequestInsertTest extends RealNodeTest {
+public class RealNodeRequestInsertTest extends RealNodeRoutingTest {
static final int NUMBER_OF_NODES = 50;
static final int DEGREE = 10;
@@ -70,78 +70,8 @@
waitForAllConnected(nodes);
- // Now sit back and watch the fireworks!
- int cycleNumber = 0;
- int lastSwaps = 0;
- int lastNoSwaps = 0;
- int failures = 0;
- int successes = 0;
- RunningAverage avg = new SimpleRunningAverage(100, 0.0);
- RunningAverage avg2 = new BootstrappingDecayingRunningAverage(0.0,
0.0, 1.0, 100, null);
- int pings = 0;
- while(true) {
- cycleNumber++;
- try {
- Thread.sleep(5000);
- } catch (InterruptedException e) {
- // Ignore
- }
- for(int i=0;i<NUMBER_OF_NODES;i++) {
- Logger.normal(RealNodeRoutingTest.class, "Cycle
"+cycleNumber+" node "+i+": "+nodes[i].getLocation());
- }
- int newSwaps = LocationManager.swaps;
- int totalStarted = LocationManager.startedSwaps;
- int noSwaps = LocationManager.noSwaps;
- Logger.normal(RealNodeRoutingTest.class, "Swaps:
"+(newSwaps-lastSwaps));
- Logger.normal(RealNodeRoutingTest.class, "\nTotal swaps:
Started*2: "+totalStarted*2+", succeeded: "+newSwaps+", last minute failures:
"+noSwaps+
- ", ratio "+(double)noSwaps/(double)newSwaps+", early
failures: "+((totalStarted*2)-(noSwaps+newSwaps)));
- Logger.normal(RealNodeRoutingTest.class, "This cycle ratio:
"+((double)(noSwaps-lastNoSwaps)) / ((double)(newSwaps - lastSwaps)));
- lastNoSwaps = noSwaps;
- Logger.normal(RealNodeRoutingTest.class, "Swaps rejected (already
locked): "+LocationManager.swapsRejectedAlreadyLocked);
- Logger.normal(RealNodeRoutingTest.class, "Swaps rejected (nowhere
to go): "+LocationManager.swapsRejectedNowhereToGo);
- Logger.normal(RealNodeRoutingTest.class, "Swaps rejected (rate
limit): "+LocationManager.swapsRejectedRateLimit);
- Logger.normal(RealNodeRoutingTest.class, "Swaps rejected (loop):
"+LocationManager.swapsRejectedLoop);
- Logger.normal(RealNodeRoutingTest.class, "Swaps rejected
(recognized ID):" +LocationManager.swapsRejectedRecognizedID);
- Logger.normal(RealNodeRoutingTest.class, "Swaps failed:"
+LocationManager.noSwaps);
- Logger.normal(RealNodeRoutingTest.class, "Swaps succeeded:"
+LocationManager.swaps);
-
- lastSwaps = newSwaps;
- // Do some (routed) test-pings
- for(int i=0;i<10;i++) {
- try {
- Thread.sleep(2000);
- } catch (InterruptedException e1) {
- }
- try {
- Node randomNode = nodes[random.nextInt(NUMBER_OF_NODES)];
- Node randomNode2 = randomNode;
- while(randomNode2 == randomNode)
- randomNode2 = nodes[random.nextInt(NUMBER_OF_NODES)];
- Logger.minor(RealNodeRoutingTest.class, "Pinging
"+randomNode2.getDarknetPortNumber()+" from
"+randomNode.getDarknetPortNumber());
- double loc2 = randomNode2.getLocation();
- int hopsTaken = randomNode.routedPing(loc2);
- pings++;
- if(hopsTaken < 0) {
- failures++;
- avg.report(0.0);
- avg2.report(0.0);
- double ratio = (double)successes /
((double)(failures+successes));
- Logger.normal(RealNodeRoutingTest.class, "Routed ping
"+pings+" FAILED from "+randomNode.getDarknetPortNumber()+" to
"+randomNode2.getDarknetPortNumber()+" (long:"+ratio+",
short:"+avg.currentValue()+", vague:"+avg2.currentValue()+ ')');
- } else {
- successes++;
- avg.report(1.0);
- avg2.report(1.0);
- double ratio = (double)successes /
((double)(failures+successes));
- Logger.normal(RealNodeRoutingTest.class, "Routed ping
"+pings+" success: "+hopsTaken+ ' ' +randomNode.getDarknetPortNumber()+" to
"+randomNode2.getDarknetPortNumber()+" (long:"+ratio+",
short:"+avg.currentValue()+", vague:"+avg2.currentValue()+ ')');
- }
- } catch (Throwable t) {
- Logger.error(RealNodeRoutingTest.class, "Caught "+t, t);
- }
- }
- if(pings > 10 && avg.currentValue() > 0.98 && ((double)successes /
((double)(failures+successes)) > 0.98)) {
- break;
- }
- }
+ waitForPingAverage(0.98, nodes, random);
+
System.out.println();
System.out.println("Ping average > 98%, lets do some
inserts/requests");
System.out.println();
Modified: trunk/freenet/src/freenet/node/simulator/RealNodeRoutingTest.java
===================================================================
--- trunk/freenet/src/freenet/node/simulator/RealNodeRoutingTest.java
2008-02-09 15:59:42 UTC (rev 17764)
+++ trunk/freenet/src/freenet/node/simulator/RealNodeRoutingTest.java
2008-02-09 16:08:10 UTC (rev 17765)
@@ -6,6 +6,7 @@
import java.io.File;
import freenet.crypt.DummyRandomSource;
+import freenet.crypt.RandomSource;
import freenet.io.comm.PeerParseException;
import freenet.io.comm.ReferenceSignatureVerificationException;
import freenet.node.FSParseException;
@@ -37,7 +38,7 @@
static final boolean START_WITH_IDEAL_LOCATIONS = true;
static final boolean FORCE_NEIGHBOUR_CONNECTIONS = true;
- public static void main(String[] args) throws FSParseException,
PeerParseException, InvalidThresholdException, NodeInitException,
ReferenceSignatureVerificationException, InterruptedException {
+ public static void main(String[] args) throws Exception {
System.out.println("Routing test using real nodes:");
System.out.println();
String dir = "realNodeRequestInsertTest";
@@ -73,7 +74,11 @@
waitForAllConnected(nodes);
- // Now sit back and watch the fireworks!
+ waitForPingAverage(0.98, nodes, random);
+
+ }
+
+ static void waitForPingAverage(double accuracy, Node[] nodes,
RandomSource random) {
int cycleNumber = 0;
int lastSwaps = 0;
int lastNoSwaps = 0;
@@ -141,9 +146,9 @@
Logger.error(RealNodeRoutingTest.class, "Caught "+t, t);
}
}
- if(pings > 10 && avg.currentValue() > 0.95 && ((double)successes /
((double)(failures+successes)) > 0.95)) {
+ if(pings > 10 && avg.currentValue() > accuracy &&
((double)successes / ((double)(failures+successes)) > 0.95)) {
System.err.println();
- System.err.println("Reached 95% accuracy.");
+ System.err.println("Reached "+(accuracy*100)+"% accuracy.");
System.err.println();
System.err.println("Network size: "+NUMBER_OF_NODES);
System.err.println("Maximum HTL: "+MAX_HTL);
@@ -155,8 +160,9 @@
System.err.println("Total swaps rejected (recognized ID):"
+LocationManager.swapsRejectedRecognizedID);
System.err.println("Total swaps failed:"
+LocationManager.noSwaps);
System.err.println("Total swaps succeeded:"
+LocationManager.swaps);
- System.exit(0);
+ return;
}
}
- }
+
+ }
}