Package freenet.client

Examples of freenet.client.HighLevelSimpleClient


    if(TMCIEnabled)
      server = new TextModeClientInterfaceServer(node, core, port, bind_ip, allowedHosts);

    if(direct) {
          HighLevelSimpleClient client = core.makeClient(RequestStarter.INTERACTIVE_PRIORITY_CLASS, true, false);
      TextModeClientInterface directTMCI =
        new TextModeClientInterface(node, core, client, core.getDownloadsDir(), System.in, System.out);
      node.executor.execute(directTMCI, "Direct text mode interface");
      core.setDirectTMCI(directTMCI);
    }
View Full Code Here


  public static void maybeCreateFProxyEtc(NodeClientCore core, Node node, Config config,
          SimpleToadletServer server) throws IOException {

    // FIXME how to change these on the fly when the interface language is changed?

    HighLevelSimpleClient client = core.makeClient(RequestStarter.INTERACTIVE_PRIORITY_CLASS, true, true);

    random = new byte[32];
    core.random.nextBytes(random);

    FProxyFetchTracker fetchTracker = new FProxyFetchTracker(core.clientContext, client.getFetchContext(),
            new RequestClient() {

      @Override
      public boolean persistent() {
        return false;
View Full Code Here

      csvLine.add(String.valueOf(t2 - t1));

      // Push one block only.
     
      RandomAccessBucket data = randomData(node);
      HighLevelSimpleClient client = node.clientCore.makeClient((short) 0, false, false);
      FreenetURI uri = new FreenetURI("KSK@" + uid + "-" + dateFormat.format(today.getTime()));
      System.out.println("PUSHING " + uri);
     
      try {
        InsertBlock block = new InsertBlock(data, new ClientMetadata(), uri);
        t1 = System.currentTimeMillis();
        client.insert(block, false, null);
        t2 = System.currentTimeMillis();
       
        System.out.println("PUSH-TIME-" + ":" + (t2 - t1));
        csvLine.add(String.valueOf(t2 - t1));
      } catch (InsertException e) {
        e.printStackTrace();
        csvLine.add("N/A");
      }

      data.free();

      node.park();

      // Node 2
      File innerDir2 = new File(dir, Integer.toString(DARKNET_PORT2));
      innerDir2.mkdir();
      fis = new FileInputStream(seednodes);
      FileUtil.writeTo(fis, new File(innerDir2, "seednodes.fref"));
      fis.close();
      node2 = NodeStarter.createTestNode(DARKNET_PORT2, OPENNET_PORT2, dir.getPath(), false,
              Node.DEFAULT_MAX_HTL, 0, random, new PooledExecutor(), 1000, 5 * 1024 * 1024, true, true, true,
              true, true, true, true, 12 * 1024, false, true, false, false, null);
      node2.start(true);

      t1 = System.currentTimeMillis();
      if (!TestUtil.waitForNodes(node2)) {
        exitCode = EXIT_FAILED_TARGET;
        return;
      }
      t2 = System.currentTimeMillis();
      System.out.println("SEED-TIME:" + (t2 - t1));
      csvLine.add(String.valueOf(t2 - t1));

      // PULL N+1 BLOCKS
      for (int i = 0; i <= MAX_N; i++) {
        client = node2.clientCore.makeClient((short) 0, false, false);
        Calendar targetDate = (Calendar) today.clone();
        targetDate.add(Calendar.DAY_OF_MONTH, -((1 << i) - 1));

        uri = new FreenetURI("KSK@" + uid + "-" + dateFormat.format(targetDate.getTime()));
        System.out.println("PULLING " + uri);

        try {
          t1 = System.currentTimeMillis();
          client.fetch(uri);
          t2 = System.currentTimeMillis();

          System.out.println("PULL-TIME-" + i + ":" + (t2 - t1));
          csvLine.add(String.valueOf(t2 - t1));
        } catch (FetchException e) {
View Full Code Here

    Node node2 = null;
    FileInputStream fis = null;
    File file = new File("mhk-test-"+uid + ".csv");
    long t1, t2;

    HighLevelSimpleClient client = null;
   
    try {
     
      // INSERT STUFF
     
      final File dir = new File("longterm-mhk-test-" + uid);
      if(!dumpOnly) {
      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);
      }

      final File innerDir = new File(dir, Integer.toString(DARKNET_PORT1));
      innerDir.mkdir();
      fis = new FileInputStream(seednodes);
      FileUtil.writeTo(fis, new File(innerDir, "seednodes.fref"));
      fis.close();

      // Create one node
      node = NodeStarter.createTestNode(DARKNET_PORT1, OPENNET_PORT1, dir.getPath(), false, Node.DEFAULT_MAX_HTL,
              0, random, new PooledExecutor(), 1000, 4 * 1024 * 1024, true, true, true, true, true, true, true,
              12 * 1024, true, true, false, false, null);
      Logger.getChain().setThreshold(LogLevel.ERROR);

      // Start it
      node.start(true);
      t1 = System.currentTimeMillis();
      if (!TestUtil.waitForNodes(node)) {
        exitCode = EXIT_FAILED_TARGET;
        return;
      }
       
      t2 = System.currentTimeMillis();
      System.out.println("SEED-TIME:" + (t2 - t1));
      csvLine.add(String.valueOf(t2 - t1));

      // Create four CHKs
     
      RandomAccessBucket single = randomData(node);
      RandomAccessBucket[] mhks = new RandomAccessBucket[3];
     
      for(int i=0;i<mhks.length;i++) mhks[i] = randomData(node);
     
      client = node.clientCore.makeClient((short) 0, false, false);

      System.err.println("Inserting single block 3 times");
     
      InsertBlock block = new InsertBlock(single, new ClientMetadata(), FreenetURI.EMPTY_CHK_URI);
     
      FreenetURI uri = null;
     
      int successes = 0;
     
      for(int i=0;i<3;i++) {
        System.err.println("Inserting single block, try #"+i);
        try {
          t1 = System.currentTimeMillis();
          FreenetURI thisURI = client.insert(block, false, null);
          if(uri != null && !thisURI.equals(uri)) {
            System.err.println("URI "+i+" is "+thisURI+" but previous is "+uri);
            System.exit(EXIT_DIFFERENT_URI);
          }
          uri = thisURI;
          t2 = System.currentTimeMillis();
         
          System.out.println("PUSH-TIME-" + i + ":" + (t2 - t1)+" for "+uri+" for single block");
          csvLine.add(String.valueOf(t2 - t1));
          csvLine.add(uri.toASCIIString());
          successes++;
        } catch (InsertException e) {
          e.printStackTrace();
          csvLine.add(InsertException.getShortMessage(e.getMode()));
          csvLine.add("N/A");
          System.out.println("INSERT FAILED: "+e+" for insert "+i+" for single block");
        }
      }
     
      if(successes == 3)
        System.err.println("All inserts succeeded for single block: "+successes);
      else if(successes != 0)
        System.err.println("Some inserts succeeded for single block: "+successes);
      else
        System.err.println("NO INSERTS SUCCEEDED FOR SINGLE BLOCK: "+successes);
     
      uri = null;
     
      // Insert 3 blocks
     
      for(int i=0;i<3;i++) {
        System.err.println("Inserting MHK #"+i);
        uri = null;
        block = new InsertBlock(mhks[i], new ClientMetadata(), FreenetURI.EMPTY_CHK_URI);
        try {
          t1 = System.currentTimeMillis();
          FreenetURI thisURI = client.insert(block, false, null);
          uri = thisURI;
          t2 = System.currentTimeMillis();
         
          System.out.println("PUSH-TIME-" + i + ":" + (t2 - t1)+" for "+uri+" for MHK #"+i);
          csvLine.add(String.valueOf(t2 - t1));
          csvLine.add(uri.toASCIIString());
          successes++;
        } catch (InsertException e) {
          e.printStackTrace();
          csvLine.add(InsertException.getShortMessage(e.getMode()));
          csvLine.add("N/A");
          System.out.println("INSERT FAILED: "+e+" for MHK #"+i);
        }
      }
     
      if(successes == 3)
        System.err.println("All inserts succeeded for MHK: "+successes);
      else if(successes != 0)
        System.err.println("Some inserts succeeded for MHK: "+successes);
      else
        System.err.println("NO INSERTS SUCCEEDED FOR MHK: "+successes);
     
      uri = null;
      }
     
      // PARSE FILE AND FETCH OLD STUFF IF APPROPRIATE
     
      boolean match = false;
     
      FreenetURI singleURI = null;
      FreenetURI[] mhkURIs = new FreenetURI[3];
      fis = new FileInputStream(file);
      BufferedReader br = new BufferedReader(new InputStreamReader(fis, ENCODING));
      String line = null;
      int linesTooShort = 0, linesBroken = 0, linesNoNumber = 0, linesNoURL = 0, linesNoFetch = 0;
      int total = 0, singleKeysSucceeded = 0, mhkSucceeded = 0;
      int totalSingleKeyFetches = 0, totalSingleKeySuccesses = 0;
      while((line = br.readLine()) != null) {
       
        singleURI = null;
        for(int i=0;i<mhkURIs.length;i++) mhkURIs[i] = null;
        //System.out.println("LINE: "+line);
        String[] split = line.split("!");
        Date date = dateFormat.parse(split[0]);
        GregorianCalendar calendar = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
        calendar.setTime(date);
        System.out.println("Date: "+dateFormat.format(calendar.getTime()));
        GregorianCalendar target = (GregorianCalendar) today.clone();
        target.set(Calendar.HOUR_OF_DAY, 0);
        target.set(Calendar.MINUTE, 0);
        target.set(Calendar.MILLISECOND, 0);
        target.set(Calendar.SECOND, 0);
        target.add(Calendar.DAY_OF_MONTH, -DELTA);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.getTime();
        target.getTime();
        try {
          if(split.length < 3) {
            linesTooShort++;
            continue;
          }
          int seedTime = Integer.parseInt(split[2]);
          System.out.println("Seed time: "+seedTime);
         
          int token = 3;
          if(split.length < 4) {
            linesTooShort++;
            continue;
          }
         
          for(int i=0;i<3;i++) {
            int insertTime = Integer.parseInt(split[token]);
            System.out.println("Single key insert "+i+" : "+insertTime);
            token++;
            FreenetURI thisURI = new FreenetURI(split[token]);
            if(singleURI == null)
              singleURI = thisURI;
            else {
              if(!singleURI.equals(thisURI)) {
                System.err.println("URI is not the same for all 3 inserts: was "+singleURI+" but "+i+" is "+thisURI);
                linesBroken++;
                continue;
              }
            }
            token++;
          }
          System.out.println("Single key URI: "+singleURI);
         
          for(int i=0;i<3;i++) {
            int insertTime = Integer.parseInt(split[token]);
            token++;
            mhkURIs[i] = new FreenetURI(split[token]);
            token++;
            System.out.println("MHK #"+i+" URI: "+mhkURIs[i]+" insert time "+insertTime);
          }
         
        } catch (NumberFormatException e) {
          System.err.println("Failed to parse row: "+e);
          linesNoNumber++;
          continue;
        } catch (MalformedURLException e) {
          System.err.println("Failed to parse row: "+e);
          linesNoURL++;
          continue;
        }
        if(Math.abs(target.getTimeInMillis() - calendar.getTimeInMillis()) < HOURS.toMillis(12)) {
          System.out.println("Found row for target date "+dateFormat.format(target.getTime())+" : "+dateFormat.format(calendar.getTime()));
          System.out.println("Version: "+split[1]);
          match = true;
          break;
        } else if(split.length > 3+6+6) {
          int token = 3 + 6 + 6;
          int singleKeyFetchTime = -1;
          boolean singleKeySuccess = false;
          for(int i=0;i<3;i++) {
            // Fetched 3 times
            if(!singleKeySuccess) {
              try {
                singleKeyFetchTime = Integer.parseInt(split[token]);
                singleKeySuccess = true;
                System.out.println("Fetched single key on try "+i+" on "+date+" in "+singleKeyFetchTime+"ms");
              } catch (NumberFormatException e) {
                System.out.println("Failed fetch single key on "+date+" try "+i+" : "+split[token]);
                singleKeyFetchTime = -1;
              }
            } // Else will be empty.
            token++;
          }
          boolean mhkSuccess = false;
          for(int i=0;i<3;i++) {
            totalSingleKeyFetches++;
            int mhkFetchTime = -1;
            try {
              mhkFetchTime = Integer.parseInt(split[token]);
              mhkSuccess = true;
              totalSingleKeySuccesses++;
              System.out.println("Fetched MHK #"+i+" on "+date+" in "+mhkFetchTime+"ms");
            } catch (NumberFormatException e) {
              System.out.println("Failed fetch MHK #"+i+" on "+date+" : "+split[token]);
            }
            token++;
          }
          total++;
          if(singleKeySuccess)
            singleKeysSucceeded++;
          if(mhkSuccess)
            mhkSucceeded++;
        } else linesNoFetch++;
      }
      System.out.println("Lines where insert failed or no fetch: too short: "+linesTooShort+" broken: "+linesBroken+" no number: "+linesNoNumber+" no url: "+linesNoURL+" no fetch "+linesNoFetch);
      System.out.println("Total attempts where insert succeeded and fetch executed: "+total);
      System.out.println("Single keys succeeded: "+singleKeysSucceeded);
      System.out.println("MHKs succeeded: "+mhkSucceeded);
      System.out.println("Single key individual fetches: "+totalSingleKeyFetches);
      System.out.println("Single key individual fetches succeeded: "+totalSingleKeySuccesses);
      System.out.println("Success rate for individual keys (from MHK inserts): "+((double)totalSingleKeySuccesses)/((double)totalSingleKeyFetches));
      System.out.println("Success rate for the single key triple inserted: "+((double)singleKeysSucceeded)/((double)total));
      System.out.println("Success rate for the MHK (success = any of the 3 different keys worked): "+((double)mhkSucceeded)/((double)total));
      fis.close();
      fis = null;
     
      // FETCH STUFF
     
     
      if((!dumpOnly) && match) {
       
        // FETCH SINGLE URI
       
        // Fetch the first one 3 times, since the MHK is 3 fetches also.
        // Technically this is 9 fetches because we multiply by 3 fetches per high-level fetch by default.
       
        boolean fetched = false;
        for(int i=0;i<3;i++) {
          if(fetched) {
            csvLine.add("");
            continue;
          }
          try {
            t1 = System.currentTimeMillis();
            client.fetch(singleURI);
            t2 = System.currentTimeMillis();
           
            System.out.println("PULL-TIME FOR SINGLE URI:" + (t2 - t1));
            csvLine.add(String.valueOf(t2 - t1));
            fetched = true;
          } catch (FetchException e) {
            if (e.getMode() != FetchExceptionMode.ALL_DATA_NOT_FOUND
                && e.getMode() != FetchExceptionMode.DATA_NOT_FOUND)
              e.printStackTrace();
            csvLine.add(FetchException.getShortMessage(e.getMode()));
            System.err.println("FAILED PULL FOR SINGLE URI: "+e);
          }
        }
       
        for(int i=0;i<mhkURIs.length;i++) {
          try {
            t1 = System.currentTimeMillis();
            client.fetch(mhkURIs[i]);
            t2 = System.currentTimeMillis();
           
            System.out.println("PULL-TIME FOR MHK #"+i+":" + (t2 - t1));
            csvLine.add(String.valueOf(t2 - t1));
          } catch (FetchException e) {
View Full Code Here

      csvLine.add(String.valueOf(t2 - t1));

      // PUSH N+1 BLOCKS
      for (int i = 0; i <= MAX_N; i++) {
          RandomAccessBucket data = randomData(node);
        HighLevelSimpleClient client = node.clientCore.makeClient((short) 0, false, false);
        FreenetURI uri = new FreenetURI("KSK@" + uid + "-" + dateFormat.format(today.getTime()) + "-" + i);
        System.out.println("PUSHING " + uri);
        client.addEventHook(new ClientEventListener() {

          @Override
          public void receive(ClientEvent ce, ClientContext context) {
            System.out.println(ce.getDescription());
          }
         
        });

        try {
          InsertBlock block = new InsertBlock(data, new ClientMetadata(), uri);
          t1 = System.currentTimeMillis();
          client.insert(block, false, null);
          t2 = System.currentTimeMillis();

          System.out.println("PUSH-TIME-" + i + ":" + (t2 - t1));
          csvLine.add(String.valueOf(t2 - t1));
        } catch (InsertException e) {
          e.printStackTrace();
          csvLine.add("N/A");
        }

        data.free();
      }

      node.park();

      // Node 2
      File innerDir2 = new File(dir, Integer.toString(DARKNET_PORT2));
      innerDir2.mkdir();
      fis = new FileInputStream(seednodes);
      FileUtil.writeTo(fis, new File(innerDir2, "seednodes.fref"));
      fis.close();
      node2 = NodeStarter.createTestNode(DARKNET_PORT2, OPENNET_PORT2, dir.getPath(), false,
              Node.DEFAULT_MAX_HTL, 0, random, new PooledExecutor(), 1000, 5 * 1024 * 1024, true, true, true,
              true, true, true, true, 12 * 1024, false, true, false, false, null);
      node2.start(true);

      t1 = System.currentTimeMillis();
      if (!TestUtil.waitForNodes(node2)) {
        exitCode = EXIT_FAILED_TARGET;
        return;
      }
      t2 = System.currentTimeMillis();
      System.out.println("SEED-TIME:" + (t2 - t1));
      csvLine.add(String.valueOf(t2 - t1));

      // PULL N+1 BLOCKS
      for (int i = 0; i <= MAX_N; i++) {
        HighLevelSimpleClient client = node2.clientCore.makeClient((short) 0, false, false);
        Calendar targetDate = (Calendar) today.clone();
        targetDate.add(Calendar.DAY_OF_MONTH, -((1 << i) - 1));

        FreenetURI uri = new FreenetURI("KSK@" + uid + "-" + dateFormat.format(targetDate.getTime()) + "-" + i);
        System.out.println("PULLING " + uri);

        try {
          t1 = System.currentTimeMillis();
          client.fetch(uri);
          t2 = System.currentTimeMillis();

          System.out.println("PULL-TIME-" + i + ":" + (t2 - t1));
          csvLine.add(String.valueOf(t2 - t1));
        } catch (FetchException e) {
View Full Code Here

    persistentDiskChecker =
        new DiskSpaceCheckingRandomAccessBufferFactory(raff, persistentTempDir.dir(),
                minDiskFreeLongTerm + tempBucketFactory.getMaxRamUsed());
    persistentRAFFactory = new MaybeEncryptedRandomAccessBufferFactory(persistentDiskChecker, nodeConfig.getBoolean("encryptPersistentTempBuckets"));
    persistentTempBucketFactory.setDiskSpaceChecker(persistentDiskChecker);
    HighLevelSimpleClient client = makeClient((short)0, false, false);
    FetchContext defaultFetchContext = client.getFetchContext();
    InsertContext defaultInsertContext = client.getInsertContext(false);
    int maxMemoryLimitedJobThreads = Runtime.getRuntime().availableProcessors() / 2; // Some disk I/O ... tunable REDFLAG
    maxMemoryLimitedJobThreads = Math.min(maxMemoryLimitedJobThreads, node.nodeStats.getThreadLimit()/20);
    maxMemoryLimitedJobThreads = Math.max(1, maxMemoryLimitedJobThreads);
        // FIXME review thread limits. This isn't just memory, it's CPU and disk as well, so we don't want it too big??
        // FIXME l10n the errors?
View Full Code Here

        }
    } finally {
        os.close();
    }
        System.err.println("Inserting test data.");
        HighLevelSimpleClient client = node.clientCore.makeClient((short)0, false, false);
        InsertBlock block = new InsertBlock(data, new ClientMetadata(), FreenetURI.EMPTY_CHK_URI);
        long startInsertTime = System.currentTimeMillis();
        FreenetURI uri;
        try {
      uri = client.insert(block, false, null);
    } catch (InsertException e) {
      System.err.println("INSERT FAILED: "+e);
      e.printStackTrace();
      System.exit(EXIT_INSERT_FAILED);
      return;
    }
        long endInsertTime = System.currentTimeMillis();
        System.err.println("RESULT: Insert took "+(endInsertTime-startInsertTime)+"ms ("+TimeUtil.formatTime(endInsertTime-startInsertTime)+") to "+uri+" .");
        node.park();
   
        // Bootstrap a second node.
        File secondInnerDir = new File(dir, Integer.toString(DARKNET_PORT2));
        secondInnerDir.mkdir();
        fis = new FileInputStream(seednodes);
        FileUtil.writeTo(fis, new File(secondInnerDir, "seednodes.fref"));
        fis.close();
        executor = new PooledExecutor();
        secondNode = NodeStarter.createTestNode(DARKNET_PORT2, OPENNET_PORT2, dir.getPath(), 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);       
        secondNode.start(true);
    if (!TestUtil.waitForNodes(secondNode)) {
      secondNode.park();
      System.exit(EXIT_FAILED_TARGET);
    }
       
        // Fetch the data
        long startFetchTime = System.currentTimeMillis();
        client = secondNode.clientCore.makeClient((short)0, false, false);
        try {
      client.fetch(uri);
    } catch (FetchException e) {
      System.err.println("FETCH FAILED: "+e);
      e.printStackTrace();
      System.exit(EXIT_FETCH_FAILED);
      return;
View Full Code Here

       
      t2 = System.currentTimeMillis();
      System.out.println("SEED-TIME:" + (t2 - t1));
      csvLine.add(String.valueOf(t2 - t1));

      HighLevelSimpleClient client = node.clientCore.makeClient((short) 0, false, false);

      int successes = 0;
     
      long startInsertsTime = System.currentTimeMillis();
     
      InsertBatch batch = new InsertBatch(client);
     
      // Inserts are sloooooow so do them in parallel.
     
      for(int i=0;i<INSERTED_BLOCKS;i++) {
       
        System.err.println("Inserting block "+i);
       
        RandomAccessBucket single = randomData(node);
       
        InsertBlock block = new InsertBlock(single, new ClientMetadata(), FreenetURI.EMPTY_CHK_URI);
       
        batch.startInsert(block);
       
      }
     
      batch.waitUntilFinished();
      FreenetURI[] uris = batch.getURIs();
      long[] times = batch.getTimes();
      InsertException[] errors = batch.getErrors();
     
      for(int i=0;i<INSERTED_BLOCKS;i++) {
        if(uris[i] != null) {
          csvLine.add(String.valueOf(times[i]));
          csvLine.add(uris[i].toASCIIString());
          System.out.println("Pushed block "+i+" : "+uris[i]+" in "+times[i]);
          successes++;
        } else {
          csvLine.add(InsertException.getShortMessage(errors[i].getMode()));
          csvLine.add("N/A");
          System.out.println("Failed to push block "+i+" : "+errors[i]);
        }
      }
     
      long endInsertsTime = System.currentTimeMillis();
     
      System.err.println("Succeeded inserts: "+successes+" of "+INSERTED_BLOCKS+" in "+(endInsertsTime-startInsertsTime)+"ms");
     
      FetchContext fctx = client.getFetchContext();
      fctx.maxNonSplitfileRetries = 0;
      fctx.maxSplitfileBlockRetries = 0;
      RequestClient requestContext = new RequestClient() {

        @Override
        public boolean persistent() {
          return false;
        }

        @Override
        public boolean realTimeFlag() {
          return false;
        }
       
      };
     
      // PARSE FILE AND FETCH OLD STUFF IF APPROPRIATE
     
      FreenetURI[] mhkURIs = new FreenetURI[3];
      fis = new FileInputStream(file);
      BufferedReader br = new BufferedReader(new InputStreamReader(fis, ENCODING));
      String line = null;
      GregorianCalendar target = (GregorianCalendar) today.clone();
      target.set(Calendar.HOUR_OF_DAY, 0);
      target.set(Calendar.MINUTE, 0);
      target.set(Calendar.MILLISECOND, 0);
      target.set(Calendar.SECOND, 0);
      GregorianCalendar[] targets = new GregorianCalendar[MAX_N+1];
      for(int i=0;i<targets.length;i++) {
        targets[i] = ((GregorianCalendar)target.clone());
        targets[i].add(Calendar.DAY_OF_MONTH, -((1<<i)-1));
        targets[i].getTime();
      }
      int[] totalFetchesByDelta = new int[MAX_N+1];
      int[] totalSuccessfulFetchesByDelta = new int[MAX_N+1];
      long[] totalFetchTimeByDelta = new long[MAX_N+1];
     
loopOverLines:
      while((line = br.readLine()) != null) {
       
        for(int i=0;i<mhkURIs.length;i++) mhkURIs[i] = null;
        //System.out.println("LINE: "+line);
        String[] split = line.split("!");
        Date date = dateFormat.parse(split[0]);
        GregorianCalendar calendar = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
        calendar.setTime(date);
        System.out.println("Date: "+dateFormat.format(calendar.getTime()));
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.getTime();
        FreenetURI[] insertedURIs = new FreenetURI[INSERTED_BLOCKS];
        int[] insertTimes = new int[INSERTED_BLOCKS];
        if(split.length < 3) continue;
        int seedTime = Integer.parseInt(split[2]);
        System.out.println("Seed time: "+seedTime);
        if(split.length < 4) continue;
       
        int token = 3;
       
        if(split.length < token + INSERTED_BLOCKS * 2) continue;
     
        for(int i=0;i<INSERTED_BLOCKS;i++) {
          try {
            insertTimes[i] = Integer.parseInt(split[token]);
          } catch (NumberFormatException e) {
            insertTimes[i] = -1;
          }
          token++;
          try {
            insertedURIs[i] = new FreenetURI(split[token]);
          } catch (MalformedURLException e) {
            insertedURIs[i] = null;
          }
          token++;
          System.out.println("Key insert "+i+" : "+insertedURIs[i]+" in "+insertTimes[i]);
        }
        for(int i=0;i<targets.length;i++) {
          if(Math.abs(targets[i].getTimeInMillis() - calendar.getTimeInMillis()) < HOURS.toMillis(12)) {
            System.out.println("Found row for target date "+((1<<i)-1)+" days ago.");
            System.out.println("Version: "+split[1]);
            csvLine.add(Integer.toString(i));
            int pulled = 0;
            int inserted = 0;
            for(int j=0;j<INSERTED_BLOCKS;j++) {
              if(insertedURIs[j] == null) {
                csvLine.add("INSERT FAILED");
                continue;
              }
              inserted++;
              try {
                t1 = System.currentTimeMillis();
                FetchWaiter fw = new FetchWaiter(requestContext);
                client.fetch(insertedURIs[j], 32768, fw, fctx);
                fw.waitForCompletion();
                t2 = System.currentTimeMillis();
               
                System.out.println("PULL-TIME FOR BLOCK "+j+": " + (t2 - t1));
                csvLine.add(String.valueOf(t2 - t1));
View Full Code Here

      FreenetURI todaysInsert = null;

      // PUSH N+1 BLOCKS
      for (int i = 0; i <= MAX_N; i++) {
          RandomAccessBucket data = randomData(node);
        HighLevelSimpleClient client = node.clientCore.makeClient((short) 0, false, false);
        System.out.println("PUSHING " + i);

        try {
          InsertBlock block = new InsertBlock(data, new ClientMetadata(), FreenetURI.EMPTY_CHK_URI);
          t1 = System.currentTimeMillis();
          FreenetURI uri = client.insert(block, false, null);
          if(i == 0) todaysInsert = uri;
          t2 = System.currentTimeMillis();

          System.out.println("PUSH-TIME-" + i + ":" + (t2 - t1)+" for "+uri);
          csvLine.add(String.valueOf(t2 - t1));
          csvLine.add(uri.toASCIIString());
        } catch (InsertException e) {
          e.printStackTrace();
          csvLine.add("N/A");
          csvLine.add("N/A");
        }

        data.free();
      }

      node.park();

      // Node 2
      File innerDir2 = new File(dir, Integer.toString(DARKNET_PORT2));
      innerDir2.mkdir();
      fis = new FileInputStream(seednodes);
      FileUtil.writeTo(fis, new File(innerDir2, "seednodes.fref"));
      fis.close();
      node2 = NodeStarter.createTestNode(DARKNET_PORT2, OPENNET_PORT2, dir.getPath(), false,
              Node.DEFAULT_MAX_HTL, 0, random, new PooledExecutor(), 1000, 5 * 1024 * 1024, true, true, true,
              true, true, true, true, 12 * 1024, false, true, false, false, null);
      node2.start(true);

      t1 = System.currentTimeMillis();
      if (!TestUtil.waitForNodes(node2)) {
        exitCode = EXIT_FAILED_TARGET;
        return;
      }
      t2 = System.currentTimeMillis();
      System.out.println("SEED-TIME:" + (t2 - t1));
      csvLine.add(String.valueOf(t2 - t1));

      // PULL N+1 BLOCKS
      for (int i = 0; i <= MAX_N; i++) {
        HighLevelSimpleClient client = node2.clientCore.makeClient((short) 0, false, false);
        Calendar targetDate = (Calendar) today.clone();
        targetDate.add(Calendar.DAY_OF_MONTH, -((1 << i) - 1));

        FreenetURI uri = null;
       
        if(i == 0) uri = todaysInsert;
        else {
          uri = getHistoricURI(uid, i, targetDate);
        }
       
        if(uri == null) {
          System.out.println("SKIPPING PULL FOR "+i);
          continue;
        }
       
        System.out.println("PULLING " + uri);

        try {
          t1 = System.currentTimeMillis();
          client.fetch(uri);
          t2 = System.currentTimeMillis();

          System.out.println("PULL-TIME-" + i + ":" + (t2 - t1));
          csvLine.add(String.valueOf(t2 - t1));
        } catch (FetchException e) {
View Full Code Here

      System.exit(EXIT_FAILED_TARGET);
    }

        // Fetch the data
        long startFetchTime = System.currentTimeMillis();
        HighLevelSimpleClient client = secondNode.clientCore.makeClient((short)0, false, false);
        try {
      client.fetch(uri);
    } catch (FetchException e) {
      System.err.println("FETCH FAILED: "+e);
      e.printStackTrace();
      System.exit(EXIT_FETCH_FAILED);
      return;
View Full Code Here

TOP

Related Classes of freenet.client.HighLevelSimpleClient

Copyright © 2018 www.massapicom. 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.