Author: nextgens
Date: 2008-07-22 14:50:26 +0000 (Tue, 22 Jul 2008)
New Revision: 21304

Added:
   trunk/freenet/src/freenet/node/SeedServerTestPeerNode.java
Modified:
   trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties
   trunk/freenet/src/freenet/node/Announcer.java
   trunk/freenet/src/freenet/node/Node.java
   trunk/freenet/src/freenet/node/NodeStarter.java
   trunk/freenet/src/freenet/node/OpennetManager.java
   trunk/freenet/src/freenet/node/PeerManager.java
   trunk/freenet/src/freenet/node/SeedServerPeerNode.java
   trunk/freenet/src/freenet/node/simulator/RealNodeBusyNetworkTest.java
   trunk/freenet/src/freenet/node/simulator/RealNodeNetworkColoringTest.java
   trunk/freenet/src/freenet/node/simulator/RealNodePingTest.java
   trunk/freenet/src/freenet/node/simulator/RealNodeRequestInsertTest.java
   trunk/freenet/src/freenet/node/simulator/RealNodeRoutingTest.java
   trunk/freenet/src/freenet/node/simulator/RealNodeSecretPingTest.java
   trunk/freenet/src/freenet/node/simulator/RealNodeULPRTest.java
   trunk/freenet/src/freenet/node/simulator/SeednodePingTest.java
Log:
commit an updated version of the seednode-flooder^tester to trunk.

Introduce a new config setting: node.opennet.connectToSeednodes to disable the 
announcer globally

Modified: trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties
===================================================================
--- trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties   2008-07-22 
13:43:24 UTC (rev 21303)
+++ trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties   2008-07-22 
14:50:26 UTC (rev 21304)
@@ -712,6 +712,8 @@
 Node.tooSmallMTU=Too small MTU
 Node.tooSmallMTULong=Your connection's MTU appears to be ${mtu} bytes. Freenet 
will not function well with an MTU of less than ${minMTU} bytes: connections 
will be unreliable and possibly slow. Please fix the problem if possible.
 Node.tooSmallMTUShort=Connection problems: Your connection's MTU is too short 
for Freenet to work well. Expect problems.
+Node.withAnnouncement=Allow the node to bootstrap itself using seednodes?
+Node.withAnnouncementLong=Allow the node to bootstrap itself using seednodes? 
While this has to be the default behaviour, it's insecure by design.
 NodeClientCore.couldNotFindOrCreateDir=Could not find or create directory
 NodeClientCore.downloadAllowedDirs=Directories downloading is allowed to
 NodeClientCore.downloadAllowedDirsLong=Semicolon separated list of directories 
to which downloads are allowed. "downloads" means downloadsDir, empty means no 
downloads to disk allowed, "all" means downloads allowed from anywhere. 
WARNING! If this is set to "all" any user can download any file to anywhere on 
your computer!

Modified: trunk/freenet/src/freenet/node/Announcer.java
===================================================================
--- trunk/freenet/src/freenet/node/Announcer.java       2008-07-22 13:43:24 UTC 
(rev 21303)
+++ trunk/freenet/src/freenet/node/Announcer.java       2008-07-22 14:50:26 UTC 
(rev 21304)
@@ -314,9 +314,7 @@
                                                if(runningAnnouncements > 0) 
return;
                                        }
                                        if(enoughPeers()) {
-                                               Vector seeds = 
node.peers.getConnectedSeedServerPeersVector(null);
-                                               for(int i=0;i<seeds.size();i++) 
{
-                                                       SeedServerPeerNode pn = 
(SeedServerPeerNode) seeds.get(i);
+                                               for(SeedServerPeerNode pn : 
node.peers.getConnectedSeedServerPeersVector(null)) {
                                                        
node.peers.disconnect(pn, true, true);
                                                }
                                                // Re-check every minute. 
Something bad might happen (e.g. cpu starvation), causing us to have to reseed.
@@ -373,14 +371,14 @@
                                return;
                        }
                        // Now find a node to announce to
-                       Vector seeds = 
node.peers.getConnectedSeedServerPeersVector(announcedToIdentities);
+                       Vector<SeedServerPeerNode> seeds = 
node.peers.getConnectedSeedServerPeersVector(announcedToIdentities);
                        while(sentAnnouncements < WANT_ANNOUNCEMENTS) {
                                if(seeds.isEmpty()) {
                                        if(logMINOR)
                                                Logger.minor(this, "No more 
seednodes, announcedTo = "+announcedToIdentities.size());
                                        break;
                                }
-                               final SeedServerPeerNode seed = 
(SeedServerPeerNode) seeds.remove(node.random.nextInt(seeds.size()));
+                               final SeedServerPeerNode seed = 
seeds.remove(node.random.nextInt(seeds.size()));
                                InetAddress[] addrs = seed.getInetAddresses();
                                if(!newAnnouncedIPs(addrs)) {
                                        if(logMINOR)

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2008-07-22 13:43:24 UTC (rev 
21303)
+++ trunk/freenet/src/freenet/node/Node.java    2008-07-22 14:50:26 UTC (rev 
21304)
@@ -387,6 +387,7 @@

        private final NodeCryptoConfig opennetCryptoConfig;
        private OpennetManager opennet;
+       private volatile boolean isAllowedToConnectToSeednodes;
        private int maxOpennetPeers;
        private boolean acceptSeedConnections;
        private boolean passOpennetRefsThroughDarknet;
@@ -1129,6 +1130,21 @@
                // Opennet

                final SubConfig opennetConfig = new SubConfig("node.opennet", 
config);
+               opennetConfig.register("connectToSeednodes", true, 0, true, 
false, "Node.withAnnouncement", "Node.withAnnouncementLong", new 
BooleanCallback() {
+                       public boolean get() {
+                               return isAllowedToConnectToSeednodes;
+                       }
+                       public void set(boolean val) throws 
InvalidConfigValueException {
+                               if(val == get()) return;
+                               synchronized(Node.this) {
+                                       if(opennet != null)
+                                               throw new 
InvalidConfigValueException("Can't change that setting on the fly when opennet 
is already active!");
+                                       else
+                                               isAllowedToConnectToSeednodes = 
val;
+                               }
+                       }
+               });
+               isAllowedToConnectToSeednodes = 
opennetConfig.getBoolean("connectToSeednodes");

                // Can be enabled on the fly
                opennetConfig.register("enabled", false, 0, false, true, 
"Node.opennetEnabled", "Node.opennetEnabledLong", new BooleanCallback() {
@@ -1143,7 +1159,7 @@
                                        if(val == (opennet != null)) return;
                                        if(val) {
                                                try {
-                                                       o = opennet = new 
OpennetManager(Node.this, opennetCryptoConfig, System.currentTimeMillis());
+                                                       o = opennet = new 
OpennetManager(Node.this, opennetCryptoConfig, System.currentTimeMillis(), 
isAllowedToConnectToSeednodes);
                                                } catch (NodeInitException e) {
                                                        opennet = null;
                                                        throw new 
InvalidConfigValueException(e.getMessage());
@@ -1157,8 +1173,7 @@
                                else o.stop(true);
                                
ipDetector.ipDetectorManager.notifyPortChange(getPublicInterfacePorts());
                        }
-               });
-               
+               });             
                boolean opennetEnabled = opennetConfig.getBoolean("enabled");

                opennetConfig.register("maxOpennetPeers", "20", 1, true, false, 
"Node.maxOpennetPeers",
@@ -1183,7 +1198,7 @@
                opennetCryptoConfig = new NodeCryptoConfig(opennetConfig, 2 /* 
0 = enabled */, true);

                if(opennetEnabled) {
-                       opennet = new OpennetManager(this, opennetCryptoConfig, 
System.currentTimeMillis());
+                       opennet = new OpennetManager(this, opennetCryptoConfig, 
System.currentTimeMillis(), isAllowedToConnectToSeednodes);
                        // Will be started later
                } else {
                        opennet = null;
@@ -3116,7 +3131,7 @@
         * Connect this node to another node (for purposes of testing) 
         */
        public void connectToSeednode(SeedServerPeerNode node) throws 
OpennetDisabledException, FSParseException, PeerParseException, 
ReferenceSignatureVerificationException {
-               
peers.addPeer(createNewSeedServerPeerNode(node.exportSeedNodeFieldSet()),false,false);
+               
peers.addPeer(createNewSeedServerTestPeerNode(node.exportFieldSet()),false,false);
        }
        public void connect(Node node) throws FSParseException, 
PeerParseException, ReferenceSignatureVerificationException {
                peers.connect(node.darknetCrypto.exportPublicFieldSet(), 
darknetCrypto.packetMangler);
@@ -3175,9 +3190,9 @@
                return new OpennetPeerNode(fs, this, opennet.crypto, opennet, 
peers, false, opennet.crypto.packetMangler);
        }

-       public SeedServerPeerNode createNewSeedServerPeerNode(SimpleFieldSet 
fs) throws FSParseException, OpennetDisabledException, PeerParseException, 
ReferenceSignatureVerificationException {               
+       public SeedServerTestPeerNode 
createNewSeedServerTestPeerNode(SimpleFieldSet fs) throws FSParseException, 
OpennetDisabledException, PeerParseException, 
ReferenceSignatureVerificationException {               
                if(opennet == null) throw new OpennetDisabledException("Opennet 
is not currently enabled");
-               return new SeedServerPeerNode(fs, this, opennet.crypto, peers, 
true, opennet.crypto.packetMangler);
+               return new SeedServerTestPeerNode(fs, this, opennet.crypto, 
peers, true, opennet.crypto.packetMangler);
        }

        public OpennetPeerNode addNewOpennetNode(SimpleFieldSet fs) throws 
FSParseException, PeerParseException, ReferenceSignatureVerificationException {

Modified: trunk/freenet/src/freenet/node/NodeStarter.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeStarter.java     2008-07-22 13:43:24 UTC 
(rev 21303)
+++ trunk/freenet/src/freenet/node/NodeStarter.java     2008-07-22 14:50:26 UTC 
(rev 21304)
@@ -337,7 +337,7 @@
                long storeSize, boolean ramStore, boolean enableSwapping, 
boolean enableARKs,
                boolean enableULPRs, boolean enablePerNodeFailureTables,
                boolean enableSwapQueueing, boolean enablePacketCoalescing,
-               int outputBandwidthLimit, boolean enableFOAF) throws 
NodeInitException {
+               int outputBandwidthLimit, boolean enableFOAF, boolean 
connectToSeednodes) throws NodeInitException {

                File baseDir = new File(testName);
                File portDir = new File(baseDir, Integer.toString(port));
@@ -389,7 +389,11 @@
                configFS.put("node.routeAccordingToOurPeersLocation", 
enableFOAF);
                configFS.put("node.opennet.enabled", opennetPort > 0);
                configFS.put("node.opennet.listenPort", opennetPort);
-
+               configFS.put("node.opennet.alwaysAllowLocalAddresses", true);
+               configFS.put("node.opennet.oneConnectionPerIP", false);
+               configFS.put("node.opennet.assumeNATed", true);
+               configFS.put("node.opennet.connectToSeednodes", 
connectToSeednodes);
+               
                PersistentConfig config = new PersistentConfig(configFS);

                Node node = new Node(config, random, null, null, executor);

Modified: trunk/freenet/src/freenet/node/OpennetManager.java
===================================================================
--- trunk/freenet/src/freenet/node/OpennetManager.java  2008-07-22 13:43:24 UTC 
(rev 21303)
+++ trunk/freenet/src/freenet/node/OpennetManager.java  2008-07-22 14:50:26 UTC 
(rev 21304)
@@ -104,7 +104,7 @@

        private final long creationTime;

-       public OpennetManager(Node node, NodeCryptoConfig opennetConfig, long 
startupTime) throws NodeInitException {
+       public OpennetManager(Node node, NodeCryptoConfig opennetConfig, long 
startupTime, boolean enableAnnouncement) throws NodeInitException {
                logMINOR = Logger.shouldLog(Logger.MINOR, this);
                this.creationTime = System.currentTimeMillis();
                this.node = node;
@@ -154,7 +154,7 @@
                writeFile(nodeFile, backupNodeFile);
                // Read old peers
                node.peers.tryReadPeers(new File(node.nodeDir, 
"openpeers-old-"+crypto.portNumber).toString(), crypto, this, true, true);
-               announcer = new Announcer(this);
+               announcer = (enableAnnouncement ? new Announcer(this) : null);
                if(logMINOR) {
                        Logger.minor(this, "My full compressed ref: 
"+crypto.myCompressedFullRef().length);
                        Logger.minor(this, "My full setup ref: 
"+crypto.myCompressedSetupRef().length);
@@ -223,14 +223,16 @@

        public void start() {
                crypto.start(node.disableHangCheckers);
-               announcer.start();
+               if(announcer!= null)
+                       announcer.start();
        }

        /**
         * Called when opennet is disabled
         */
        public void stop(boolean purge) {
-               announcer.stop();
+               if(announcer != null)
+                       announcer.stop();
                crypto.stop();
                if(purge)
                        node.peers.removeOpennetPeers();

Modified: trunk/freenet/src/freenet/node/PeerManager.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManager.java     2008-07-22 13:43:24 UTC 
(rev 21303)
+++ trunk/freenet/src/freenet/node/PeerManager.java     2008-07-22 14:50:26 UTC 
(rev 21304)
@@ -1575,13 +1575,13 @@
                return (DarknetPeerNode[]) v.toArray(new 
DarknetPeerNode[v.size()]);
        }

-       public Vector getConnectedSeedServerPeersVector(HashSet exclude) {
+       public Vector<SeedServerPeerNode> 
getConnectedSeedServerPeersVector(HashSet exclude) {
                PeerNode[] peers;
                synchronized(this) {
                        peers = myPeers;
                }
                // FIXME optimise! Maybe maintain as a separate list?
-               Vector v = new Vector(myPeers.length);
+               Vector<SeedServerPeerNode> v = new 
Vector<SeedServerPeerNode>(myPeers.length);
                for(int i = 0; i < peers.length; i++) {
                        if(peers[i] instanceof SeedServerPeerNode) {
                                if(exclude != null && 
exclude.contains(peers[i].getIdentity())) {
@@ -1594,7 +1594,7 @@
                                                Logger.minor(this, "Not 
including in getConnectedSeedServerPeersVector() as disconnected: " + 
peers[i].userToString());
                                        continue;
                                }
-                               v.add(peers[i]);
+                               v.add((SeedServerPeerNode)peers[i]);
                        }
                }
                return v;

Modified: trunk/freenet/src/freenet/node/SeedServerPeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/SeedServerPeerNode.java      2008-07-22 
13:43:24 UTC (rev 21303)
+++ trunk/freenet/src/freenet/node/SeedServerPeerNode.java      2008-07-22 
14:50:26 UTC (rev 21304)
@@ -117,10 +117,4 @@
                // Drop the connection once we have consistently had enough 
opennet peers for 5 minutes.
                return System.currentTimeMillis() - 
om.announcer.timeGotEnoughPeers() > 5*60*1000;
        }
-       
-       public SimpleFieldSet exportSeedNodeFieldSet() {
-               SimpleFieldSet sfs = super.exportFieldSet();
-               sfs.putOverwrite("opennet", "true");
-               return sfs;
-       }
 }

Added: trunk/freenet/src/freenet/node/SeedServerTestPeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/SeedServerTestPeerNode.java                  
        (rev 0)
+++ trunk/freenet/src/freenet/node/SeedServerTestPeerNode.java  2008-07-22 
14:50:26 UTC (rev 21304)
@@ -0,0 +1,46 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+package freenet.node;
+
+import freenet.io.comm.PeerParseException;
+import freenet.io.comm.ReferenceSignatureVerificationException;
+import freenet.support.SimpleFieldSet;
+
+/**
+ *
+ * @author nextgens
+ */
+public class SeedServerTestPeerNode extends SeedServerPeerNode {
+
+       public SeedServerTestPeerNode(SimpleFieldSet fs, Node node2, NodeCrypto 
crypto, PeerManager peers, boolean fromLocal, OutgoingPacketMangler mangler) 
throws FSParseException, PeerParseException, 
ReferenceSignatureVerificationException {
+               super(fs, node2, crypto, peers, fromLocal, mangler);
+       }
+       
+       public SimpleFieldSet exportFieldSet() {
+               SimpleFieldSet sfs = super.exportFieldSet();
+               sfs.putOverwrite("opennet", "true");
+               return sfs;
+       }
+
+       public boolean shouldDisconnectAndRemoveNow() {
+               return false;
+       }
+       
+       protected void sendInitialMessages() {}
+       
+       
+}

Modified: trunk/freenet/src/freenet/node/simulator/RealNodeBusyNetworkTest.java
===================================================================
--- trunk/freenet/src/freenet/node/simulator/RealNodeBusyNetworkTest.java       
2008-07-22 13:43:24 UTC (rev 21303)
+++ trunk/freenet/src/freenet/node/simulator/RealNodeBusyNetworkTest.java       
2008-07-22 14:50:26 UTC (rev 21304)
@@ -75,7 +75,7 @@
         Executor executor = new PooledExecutor();
         for(int i=0;i<NUMBER_OF_NODES;i++) {
             nodes[i] = 
-               NodeStarter.createTestNode(5001+i, 0, name, false, true, false, 
MAX_HTL, 20 /* 5% */, random, executor, 500*NUMBER_OF_NODES, 
(CHKBlock.DATA_LENGTH+CHKBlock.TOTAL_HEADERS_LENGTH)*100, true, 
ENABLE_SWAPPING, false, ENABLE_ULPRS, ENABLE_PER_NODE_FAILURE_TABLES, 
ENABLE_SWAP_QUEUEING, ENABLE_PACKET_COALESCING, 8000, ENABLE_FOAF);
+               NodeStarter.createTestNode(5001+i, 0, name, false, true, false, 
MAX_HTL, 20 /* 5% */, random, executor, 500*NUMBER_OF_NODES, 
(CHKBlock.DATA_LENGTH+CHKBlock.TOTAL_HEADERS_LENGTH)*100, true, 
ENABLE_SWAPPING, false, ENABLE_ULPRS, ENABLE_PER_NODE_FAILURE_TABLES, 
ENABLE_SWAP_QUEUEING, ENABLE_PACKET_COALESCING, 8000, ENABLE_FOAF, false);
             Logger.normal(RealNodeRoutingTest.class, "Created node "+i);
         }


Modified: 
trunk/freenet/src/freenet/node/simulator/RealNodeNetworkColoringTest.java
===================================================================
--- trunk/freenet/src/freenet/node/simulator/RealNodeNetworkColoringTest.java   
2008-07-22 13:43:24 UTC (rev 21303)
+++ trunk/freenet/src/freenet/node/simulator/RealNodeNetworkColoringTest.java   
2008-07-22 14:50:26 UTC (rev 21304)
@@ -79,21 +79,21 @@
         for(int i=0;i<NUMBER_OF_NODES;i++) {
                        allNodes[totalNodes] =
             subnetA[i] = 
-               NodeStarter.createTestNode(5001+totalNodes, 0, wd, false, true, 
true, MAX_HTL, 0 /* no dropped packets */, random, executor, 
500*NUMBER_OF_NODES, storeSize, true, true, false, false, false, false, true, 
0, ENABLE_FOAF);
+               NodeStarter.createTestNode(5001+totalNodes, 0, wd, false, true, 
true, MAX_HTL, 0 /* no dropped packets */, random, executor, 
500*NUMBER_OF_NODES, storeSize, true, true, false, false, false, false, true, 
0, ENABLE_FOAF, false);
                        totalNodes++;
             Logger.normal(RealNodeRoutingTest.class, "Created 'A' node 
"+totalNodes);
         }
         for(int i=0;i<NUMBER_OF_NODES;i++) {
                        allNodes[totalNodes] =
             subnetB[i] = 
-                       NodeStarter.createTestNode(5001+totalNodes, 0, wd, 
false, true, true, MAX_HTL, 0 /* no dropped packets */, random, executor, 
500*NUMBER_OF_NODES, storeSize, true, true, false, false, false, false, true, 
0, ENABLE_FOAF);
+                       NodeStarter.createTestNode(5001+totalNodes, 0, wd, 
false, true, true, MAX_HTL, 0 /* no dropped packets */, random, executor, 
500*NUMBER_OF_NODES, storeSize, true, true, false, false, false, false, true, 
0, ENABLE_FOAF, false);
                        totalNodes++;
             Logger.normal(RealNodeRoutingTest.class, "Created 'B' node 
"+totalNodes);
         }
                for(int i=0;i<BRIDGES;i++) {
                        allNodes[totalNodes] =
             bridges[i] = 
-                       NodeStarter.createTestNode(5001+totalNodes, 0, wd, 
false, true, true, MAX_HTL, 0 /* no dropped packets */, random, executor, 
500*NUMBER_OF_NODES, storeSize, true, true, false, false, false, false, true, 
0,ENABLE_FOAF);
+                       NodeStarter.createTestNode(5001+totalNodes, 0, wd, 
false, true, true, MAX_HTL, 0 /* no dropped packets */, random, executor, 
500*NUMBER_OF_NODES, storeSize, true, true, false, false, false, false, true, 
0,ENABLE_FOAF, false);
                        totalNodes++;
             Logger.normal(RealNodeRoutingTest.class, "Created bridge node 
"+totalNodes);
         }

Modified: trunk/freenet/src/freenet/node/simulator/RealNodePingTest.java
===================================================================
--- trunk/freenet/src/freenet/node/simulator/RealNodePingTest.java      
2008-07-22 13:43:24 UTC (rev 21303)
+++ trunk/freenet/src/freenet/node/simulator/RealNodePingTest.java      
2008-07-22 14:50:26 UTC (rev 21304)
@@ -33,8 +33,8 @@
         RandomSource random = NodeStarter.globalTestInit("pingtest", false, 
Logger.ERROR, "");
         // Create 2 nodes
         Executor executor = new PooledExecutor();
-        Node node1 = NodeStarter.createTestNode(5001, 0, "pingtest", false, 
false, true, Node.DEFAULT_MAX_HTL, 0, random, executor, 1000, 65536, true, 
false, false, false, false, false, true, 0, false);
-        Node node2 = NodeStarter.createTestNode(5002, 0, "pingtest", false, 
false, true, Node.DEFAULT_MAX_HTL, 0, random, executor, 1000, 65536, true, 
false, false, false, false, false, true, 0, false);
+        Node node1 = NodeStarter.createTestNode(5001, 0, "pingtest", false, 
false, true, Node.DEFAULT_MAX_HTL, 0, random, executor, 1000, 65536, true, 
false, false, false, false, false, true, 0, false, false);
+        Node node2 = NodeStarter.createTestNode(5002, 0, "pingtest", false, 
false, true, Node.DEFAULT_MAX_HTL, 0, random, executor, 1000, 65536, true, 
false, false, false, false, false, true, 0, false, false);
         // Connect
         node1.connect(node2);
         node2.connect(node1);

Modified: 
trunk/freenet/src/freenet/node/simulator/RealNodeRequestInsertTest.java
===================================================================
--- trunk/freenet/src/freenet/node/simulator/RealNodeRequestInsertTest.java     
2008-07-22 13:43:24 UTC (rev 21303)
+++ trunk/freenet/src/freenet/node/simulator/RealNodeRequestInsertTest.java     
2008-07-22 14:50:26 UTC (rev 21304)
@@ -75,7 +75,7 @@
         Executor executor = new PooledExecutor();
         for(int i=0;i<NUMBER_OF_NODES;i++) {
             nodes[i] = 
-               NodeStarter.createTestNode(5001+i, 0, name, false, true, false, 
MAX_HTL, 20 /* 5% */, random, executor, 500*NUMBER_OF_NODES, 256*1024, true, 
ENABLE_SWAPPING, false, ENABLE_ULPRS, ENABLE_PER_NODE_FAILURE_TABLES, 
ENABLE_SWAP_QUEUEING, ENABLE_PACKET_COALESCING, 12000, ENABLE_FOAF);
+               NodeStarter.createTestNode(5001+i, 0, name, false, true, false, 
MAX_HTL, 20 /* 5% */, random, executor, 500*NUMBER_OF_NODES, 256*1024, true, 
ENABLE_SWAPPING, false, ENABLE_ULPRS, ENABLE_PER_NODE_FAILURE_TABLES, 
ENABLE_SWAP_QUEUEING, ENABLE_PACKET_COALESCING, 12000, ENABLE_FOAF, false);
             Logger.normal(RealNodeRoutingTest.class, "Created node "+i);
         }


Modified: trunk/freenet/src/freenet/node/simulator/RealNodeRoutingTest.java
===================================================================
--- trunk/freenet/src/freenet/node/simulator/RealNodeRoutingTest.java   
2008-07-22 13:43:24 UTC (rev 21303)
+++ trunk/freenet/src/freenet/node/simulator/RealNodeRoutingTest.java   
2008-07-22 14:50:26 UTC (rev 21304)
@@ -56,7 +56,7 @@
                Executor executor = new PooledExecutor();
                for(int i = 0; i < NUMBER_OF_NODES; i++) {
                        System.err.println("Creating node " + i);
-                       nodes[i] = NodeStarter.createTestNode(5001 + i, 0, dir, 
false, true, true, MAX_HTL, 0 /* no dropped packets */, random, executor, 500 * 
NUMBER_OF_NODES, 65536, true, ENABLE_SWAPPING, false, false, false, 
ENABLE_SWAP_QUEUEING, true, 0, ENABLE_FOAF);
+                       nodes[i] = NodeStarter.createTestNode(5001 + i, 0, dir, 
false, true, true, MAX_HTL, 0 /* no dropped packets */, random, executor, 500 * 
NUMBER_OF_NODES, 65536, true, ENABLE_SWAPPING, false, false, false, 
ENABLE_SWAP_QUEUEING, true, 0, ENABLE_FOAF, false);
                        Logger.normal(RealNodeRoutingTest.class, "Created node 
" + i);
                }
                Logger.normal(RealNodeRoutingTest.class, "Created " + 
NUMBER_OF_NODES + " nodes");

Modified: trunk/freenet/src/freenet/node/simulator/RealNodeSecretPingTest.java
===================================================================
--- trunk/freenet/src/freenet/node/simulator/RealNodeSecretPingTest.java        
2008-07-22 13:43:24 UTC (rev 21303)
+++ trunk/freenet/src/freenet/node/simulator/RealNodeSecretPingTest.java        
2008-07-22 14:50:26 UTC (rev 21304)
@@ -66,7 +66,7 @@

         for(int i=0;i<NUMBER_OF_NODES;i++) {
             nodes[i] = 
-               NodeStarter.createTestNode(5001+i, 0, wd, false, true, true, 
MAX_HTL, 0 /* no dropped packets */, random, executor, 500*NUMBER_OF_NODES, 
storeSize, true, true, false, false, false, true, true, 0, true);
+               NodeStarter.createTestNode(5001+i, 0, wd, false, true, true, 
MAX_HTL, 0 /* no dropped packets */, random, executor, 500*NUMBER_OF_NODES, 
storeSize, true, true, false, false, false, true, true, 0, true, false);
             Logger.normal(RealNodeRoutingTest.class, "Created node "+i);
         }
         Logger.normal(RealNodeRoutingTest.class, "Created "+NUMBER_OF_NODES+" 
nodes");

Modified: trunk/freenet/src/freenet/node/simulator/RealNodeULPRTest.java
===================================================================
--- trunk/freenet/src/freenet/node/simulator/RealNodeULPRTest.java      
2008-07-22 13:43:24 UTC (rev 21303)
+++ trunk/freenet/src/freenet/node/simulator/RealNodeULPRTest.java      
2008-07-22 14:50:26 UTC (rev 21304)
@@ -93,7 +93,7 @@
         Executor executor = new PooledExecutor();
         for(int i=0;i<NUMBER_OF_NODES;i++) {
             nodes[i] = 
-               NodeStarter.createTestNode(5000+i, 0, testName, false, true, 
true, MAX_HTL, 20 /* 5% */, random, executor, 500*NUMBER_OF_NODES, 1024*1024, 
true, ENABLE_SWAPPING, false, ENABLE_ULPRS, ENABLE_PER_NODE_FAILURE_TABLES, 
true, true, 0, ENABLE_FOAF);
+               NodeStarter.createTestNode(5000+i, 0, testName, false, true, 
true, MAX_HTL, 20 /* 5% */, random, executor, 500*NUMBER_OF_NODES, 1024*1024, 
true, ENABLE_SWAPPING, false, ENABLE_ULPRS, ENABLE_PER_NODE_FAILURE_TABLES, 
true, true, 0, ENABLE_FOAF, false);
             Logger.normal(RealNodeRoutingTest.class, "Created node "+i);
         }
         SimpleFieldSet refs[] = new SimpleFieldSet[NUMBER_OF_NODES];

Modified: trunk/freenet/src/freenet/node/simulator/SeednodePingTest.java
===================================================================
--- trunk/freenet/src/freenet/node/simulator/SeednodePingTest.java      
2008-07-22 13:43:24 UTC (rev 21303)
+++ trunk/freenet/src/freenet/node/simulator/SeednodePingTest.java      
2008-07-22 14:50:26 UTC (rev 21304)
@@ -14,11 +14,13 @@
 import freenet.node.NodeStarter;
 import freenet.node.OpennetDisabledException;
 import freenet.node.SeedServerPeerNode;
+import freenet.node.SeedServerTestPeerNode;
 import freenet.support.Executor;
 import freenet.support.Logger;
 import freenet.support.PooledExecutor;
 import freenet.support.LoggerHook.InvalidThresholdException;
 import freenet.support.SimpleFieldSet;
+import freenet.support.TimeUtil;
 import java.io.File;
 import java.io.IOException;
 import java.util.Vector;
@@ -32,51 +34,54 @@
         RandomSource random = NodeStarter.globalTestInit("seednode-pingtest", 
false, Logger.ERROR, "");
         // Create one node
         Executor executor = new PooledExecutor();
-       Node node = NodeStarter.createTestNode(5000, 5001, "seednode-pingtest", 
true, false, false, Node.DEFAULT_MAX_HTL, 0, random, executor, 1000, 
5*1024*1024, true, false, false, false, false, false, false, 0, false);         
   
+       Node node = NodeStarter.createTestNode(5000, 5001, "seednode-pingtest", 
true, false, false, Node.DEFAULT_MAX_HTL, 0, random, executor, 1000, 
5*1024*1024, true, false, false, false, false, false, false, 0, false, false);

        // Connect & ping
-       Vector<SeedServerPeerNode> seedNodes = new Vector<SeedServerPeerNode>();
+       Vector<SeedServerTestPeerNode> seedNodes = new 
Vector<SeedServerTestPeerNode>();
        Vector<SimpleFieldSet> seedNodesAsSFS = Announcer.readSeednodes(new 
File("/tmp/"));
        int numberOfNodesInTheFile = 0;
        for(SimpleFieldSet sfs : seedNodesAsSFS) {
                numberOfNodesInTheFile++;
-               SeedServerPeerNode seednode = 
node.createNewSeedServerPeerNode(sfs);
+               SeedServerTestPeerNode seednode = 
node.createNewSeedServerTestPeerNode(sfs);
                try {
                        node.connectToSeednode(seednode);
                        seedNodes.add(seednode);
                } catch (Exception fse) {
                        System.out.println("ERROR adding "+seednode.toString()+ 
" "+fse.getMessage());
                }
-       }
+       }       
+       // Start it
+        node.start(true);
+       //Logger.setupStdoutLogging(Logger.MINOR, 
"freenet:NORMAL,freenet.node.NodeDispatcher:MINOR,freenet.node.FNPPacketMangler:MINOR");
+       Logger.getChain().setThreshold(32); // kill logging
+       Thread.sleep(2000);
        if(seedNodes.size() != numberOfNodesInTheFile)
                    System.out.println("ERROR ADDING SOME OF THE SEEDNODES!!");
        System.out.println("Let some time for the "+ seedNodes.size() +" nodes 
to connect...");
+       Thread.sleep(8000);

-       // Start it
-        node.start(true);
-       //Logger.setupStdoutLogging(Logger.MINOR, 
"freenet:NORMAL,freenet.node.FNPPacketMangler:MINOR");
-       Logger.getChain().setThreshold(32); // kill logging
-       Thread.sleep(10000);
-       
        int pingID = 0;
        while(true) {
                int countConnectedSeednodes = 0;
-               for(SeedServerPeerNode seednode : seedNodes) {
+               for(SeedServerPeerNode seednode : 
node.peers.getConnectedSeedServerPeersVector(null)) {
                        try {
-                               boolean isSigValid = 
seednode.isSignatureVerificationSuccessfull();
-                               boolean isRoutingCompatible = 
seednode.isRoutingCompatible();
                                double pingTime = seednode.averagePingTime();
                                int uptime = seednode.getUptime();
+                               long timeDelta = seednode.getClockDelta();
                                if(seednode.isRealConnection())
                                        continue;
                                countConnectedSeednodes++;
                                boolean ping = seednode.ping(pingID++);
-                               System.out.println(seednode.getIdentityString() 
+ " is sigValid=" + isSigValid + " isRoutingCompat=" + isRoutingCompatible + " 
uptime=" + uptime + " pingTime=" + pingTime+ " uptime="+seednode.getUptime() + 
" ping="+ping);
-                       // sanity check
-//                     if(seednode.isRoutable())
-//                             System.out.println(seednode + " is routable!");
-//                     if(seednode.canAcceptAnnouncements())
-//                             System.out.println(seednode + " can't accept 
announcements!");
+                               if(ping)
+                                       
System.out.println(seednode.getIdentityString()+
+                                               " uptime="+uptime+
+                                               " ping="+ping+
+                                               " pingTime="+pingTime+
+                                               " uptime="+seednode.getUptime()+
+                                               " 
timeDelta="+TimeUtil.formatTime(timeDelta));
+                               // sanity check
+                               if(seednode.isRoutable())
+                                       System.out.println(seednode + " is 
routable!");
                        } catch (NotConnectedException e) {
                                System.out.println(seednode.getIdentityString() 
+ " is not connected "+seednode.getHandshakeCount());
                        }


Reply via email to