TestUnderReplicatedBlocks.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:2k
源码类别:

网格计算

开发平台:

Java

  1. package org.apache.hadoop.hdfs.server.namenode;
  2. import org.apache.hadoop.conf.Configuration;
  3. import org.apache.hadoop.fs.FileSystem;
  4. import org.apache.hadoop.fs.FsShell;
  5. import org.apache.hadoop.fs.Path;
  6. import org.apache.hadoop.hdfs.DFSTestUtil;
  7. import org.apache.hadoop.hdfs.MiniDFSCluster;
  8. import org.apache.hadoop.hdfs.protocol.Block;
  9. import junit.framework.TestCase;
  10. public class TestUnderReplicatedBlocks extends TestCase {
  11.   public void testSetrepIncWithUnderReplicatedBlocks() throws Exception {
  12.     Configuration conf = new Configuration();
  13.     final short REPLICATION_FACTOR = 2;
  14.     final String FILE_NAME = "/testFile";
  15.     final Path FILE_PATH = new Path(FILE_NAME);
  16.     MiniDFSCluster cluster = new MiniDFSCluster(conf, REPLICATION_FACTOR+1, true, null);
  17.     try {
  18.       // create a file with one block with a replication factor of 2
  19.       final FileSystem fs = cluster.getFileSystem();
  20.       DFSTestUtil.createFile(fs, FILE_PATH, 1L, REPLICATION_FACTOR, 1L);
  21.       DFSTestUtil.waitReplication(fs, FILE_PATH, REPLICATION_FACTOR);
  22.       
  23.       // remove one replica from the blocksMap so block becomes under-replicated
  24.       // but the block does not get put into the under-replicated blocks queue
  25.       FSNamesystem namesystem = cluster.getNameNode().namesystem;
  26.       Block b = DFSTestUtil.getFirstBlock(fs, FILE_PATH);
  27.       DatanodeDescriptor dn = namesystem.blocksMap.nodeIterator(b).next();
  28.       namesystem.addToInvalidates(b, dn);
  29.       namesystem.blocksMap.removeNode(b, dn);
  30.       
  31.       // increment this file's replication factor
  32.       FsShell shell = new FsShell(conf);
  33.       assertEquals(0, shell.run(new String[]{
  34.           "-setrep", "-w", Integer.toString(1+REPLICATION_FACTOR), FILE_NAME}));
  35.     } finally {
  36.       cluster.shutdown();
  37.     }
  38.     
  39.   }
  40. }