void generateInputs(int[] ignore) throws IOException {
   // start data-nodes; create a bunch of files; generate block reports.
   blockReportObject.generateInputs(ignore);
   // stop replication monitor
   nameNode.namesystem.replthread.interrupt();
   try {
     nameNode.namesystem.replthread.join();
   } catch (InterruptedException ei) {
     return;
   }
   // report blocks once
   int nrDatanodes = blockReportObject.getNumDatanodes();
   for (int idx = 0; idx < nrDatanodes; idx++) {
     blockReportObject.executeOp(idx, 0, null);
   }
   // decommission data-nodes
   decommissionNodes();
   // set node replication limit
   nameNode.namesystem.setNodeReplicationLimit(nodeReplicationLimit);
 }
 private void decommissionNodes() throws IOException {
   String excludeFN = config.get("dfs.hosts.exclude", "exclude");
   FileOutputStream excludeFile = new FileOutputStream(excludeFN);
   excludeFile.getChannel().truncate(0L);
   int nrDatanodes = blockReportObject.getNumDatanodes();
   numDecommissionedBlocks = 0;
   for (int i = 0; i < nodesToDecommission; i++) {
     TinyDatanode dn = blockReportObject.datanodes[nrDatanodes - 1 - i];
     numDecommissionedBlocks += dn.nrBlocks;
     excludeFile.write(dn.getName().getBytes());
     excludeFile.write('\n');
     LOG.info("Datanode " + dn.getName() + " is decommissioned.");
   }
   excludeFile.close();
   nameNode.refreshNodes();
 }
 void printResults() {
   String blockDistribution = "";
   String delim = "(";
   int totalReplicas = 0;
   for (int idx = 0; idx < blockReportObject.getNumDatanodes(); idx++) {
     totalReplicas += blockReportObject.datanodes[idx].nrBlocks;
     blockDistribution += delim + blockReportObject.datanodes[idx].nrBlocks;
     delim = ", ";
   }
   blockDistribution += ")";
   LOG.info("--- " + getOpName() + " inputs ---");
   LOG.info("numOpsRequired = " + numOpsRequired);
   LOG.info("datanodes = " + numDatanodes + " " + blockDistribution);
   LOG.info("decommissioned datanodes = " + nodesToDecommission);
   LOG.info("datanode replication limit = " + nodeReplicationLimit);
   LOG.info("total blocks = " + totalBlocks);
   printStats();
   LOG.info("decommissioned blocks = " + numDecommissionedBlocks);
   LOG.info("pending replications = " + numPendingBlocks);
   LOG.info("replications per sec: " + getBlocksPerSecond());
 }