void generateInputs(int[] ignore) throws IOException {
      int nrDatanodes = getNumDatanodes();
      int nrBlocks = (int) Math.ceil((double) blocksPerReport * nrDatanodes / replication);
      int nrFiles = (int) Math.ceil((double) nrBlocks / blocksPerFile);
      datanodes = new TinyDatanode[nrDatanodes];
      // create data-nodes
      String prevDNName = "";
      for (int idx = 0; idx < nrDatanodes; idx++) {
        datanodes[idx] = new TinyDatanode(idx, blocksPerReport);
        datanodes[idx].register();
        assert datanodes[idx].getName().compareTo(prevDNName) > 0
            : "Data-nodes must be sorted lexicographically.";
        datanodes[idx].sendHeartbeat();
        prevDNName = datanodes[idx].getName();
      }

      // create files
      LOG.info("Creating " + nrFiles + " with " + blocksPerFile + " blocks each.");
      FileNameGenerator nameGenerator;
      nameGenerator = new FileNameGenerator(getBaseDir(), 100);
      String clientName = getClientName(007);
      nameNode.setSafeMode(FSConstants.SafeModeAction.SAFEMODE_LEAVE);
      for (int idx = 0; idx < nrFiles; idx++) {
        String fileName = nameGenerator.getNextFileName("ThroughputBench");
        nameNode.create(
            fileName, FsPermission.getDefault(), clientName, true, replication, BLOCK_SIZE);
        addBlocks(fileName, clientName);
        nameNode.complete(fileName, clientName);
      }
      // prepare block reports
      for (int idx = 0; idx < nrDatanodes; idx++) {
        datanodes[idx].formBlockReport();
      }
    }
 void printResults() {
   LOG.info("--- " + getOpName() + " inputs ---");
   LOG.info("nrFiles = " + numOpsRequired);
   LOG.info("nrThreads = " + numThreads);
   LOG.info("nrFilesPerDir = " + nameGenerator.getFilesPerDirectory());
   printStats();
 }
 void generateInputs(int[] opsPerThread) throws IOException {
   assert opsPerThread.length == numThreads : "Error opsPerThread.length";
   nameNode.setSafeMode(FSConstants.SafeModeAction.SAFEMODE_LEAVE);
   // int generatedFileIdx = 0;
   LOG.info("Generate " + numOpsRequired + " intputs for " + getOpName());
   fileNames = new String[numThreads][];
   for (int idx = 0; idx < numThreads; idx++) {
     int threadOps = opsPerThread[idx];
     fileNames[idx] = new String[threadOps];
     for (int jdx = 0; jdx < threadOps; jdx++)
       fileNames[idx][jdx] = nameGenerator.getNextFileName("ThroughputBench");
   }
 }