Package freenet.node.simulator

Source Code of freenet.node.simulator.BootstrapSeedTest

package freenet.node.simulator;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import freenet.crypt.RandomSource;
import freenet.node.Node;
import freenet.node.NodeInitException;
import freenet.node.NodeStarter;
import freenet.support.Executor;
import freenet.support.Logger;
import freenet.support.PooledExecutor;
import freenet.support.TimeUtil;
import freenet.support.Logger.LogLevel;
import freenet.support.LoggerHook.InvalidThresholdException;
import freenet.support.io.FileUtil;

public class BootstrapSeedTest {

  public static int EXIT_NO_SEEDNODES = 257;
  public static int EXIT_FAILED_TARGET = 258;
  public static int EXIT_THREW_SOMETHING = 259;
 
  public static int DARKNET_PORT = 5006;
  public static int OPENNET_PORT = 5007;
 
  /**
   * @param args
   * @throws InvalidThresholdException
   * @throws NodeInitException
   * @throws InterruptedException
   * @throws IOException
   */
  public static void main(String[] args) throws InvalidThresholdException, NodeInitException, InterruptedException, IOException {
    Node node = null;
    try {
    String ipOverride = null;
    if(args.length > 0)
      ipOverride = args[0];
        File dir = new File("bootstrap-test");
        FileUtil.removeAll(dir);
        RandomSource random = NodeStarter.globalTestInit(dir.getPath(), false, LogLevel.ERROR, "", false);
        File seednodes = new File("seednodes.fref");
        if(!seednodes.exists() || seednodes.length() == 0 || !seednodes.canRead()) {
          System.err.println("Unable to read seednodes.fref, it doesn't exist, or is empty");
          System.exit(EXIT_NO_SEEDNODES);
        }
        File innerDir = new File(dir, Integer.toString(DARKNET_PORT));
        innerDir.mkdir();
        FileInputStream fis = new FileInputStream(seednodes);
        FileUtil.writeTo(fis, new File(innerDir, "seednodes.fref"));
        fis.close();
        // Create one node
        Executor executor = new PooledExecutor();
        node = NodeStarter.createTestNode(DARKNET_PORT, OPENNET_PORT, "bootstrap-test", false, Node.DEFAULT_MAX_HTL, 0, random, executor, 1000, 5*1024*1024, true, true, true, true, true, true, true, 12*1024, false, true, false, false, ipOverride);
        //NodeCrypto.DISABLE_GROUP_STRIP = true;
      //Logger.setupStdoutLogging(LogLevel.MINOR, "freenet:NORMAL,freenet.node.NodeDispatcher:MINOR,freenet.node.FNPPacketMangler:MINOR");
      Logger.getChain().setThreshold(LogLevel.ERROR); // kill logging
      long startTime = System.currentTimeMillis();
      // Start it
        node.start(true);
        // Wait until we have 10 connected nodes...
        int seconds = 0;
    int targetPeers = node.getOpennet().getAnnouncementThreshold();
        while(seconds < 600) {
          Thread.sleep(1000);
          int seeds = node.peers.countSeednodes();
          int seedConns = node.peers.getConnectedSeedServerPeersVector(null).size();
          int opennetPeers = node.peers.countValidPeers();
          int opennetConns = node.peers.countConnectedOpennetPeers();
          System.err.println(""+seconds+" : seeds: "+seeds+", connected: "+seedConns
              +" opennet: peers: "+opennetPeers+", connected: "+opennetConns);
          seconds++;
          if(opennetConns >= targetPeers) {
            long timeTaken = System.currentTimeMillis()-startTime;
            System.out.println("Completed bootstrap ("+targetPeers+" peers) in "+timeTaken+"ms ("+TimeUtil.formatTime(timeTaken)+")");
            node.park();
            System.exit(0);
          }
        }
        System.err.println("Failed to reach target peers count "+targetPeers+" in 5 minutes.");
    node.park();
        System.exit(EXIT_FAILED_TARGET);
      } catch (Throwable t) {
        System.err.println("CAUGHT: "+t);
        t.printStackTrace();
        try {
          if(node != null)
            node.park();
        } catch (Throwable t1) {}
        System.exit(EXIT_THREW_SOMETHING);
      }
  }

}
TOP

Related Classes of freenet.node.simulator.BootstrapSeedTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.