Package org.apache.hadoop.hdfs.server.namenode

Source Code of org.apache.hadoop.hdfs.server.namenode.TestGetBlockInfo

package org.apache.hadoop.hdfs.server.namenode;

import java.io.IOException;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hdfs.DFSTestUtil;
import org.apache.hadoop.hdfs.MiniDFSCluster;
import org.apache.hadoop.hdfs.protocol.LocatedBlock;
import org.apache.hadoop.hdfs.protocol.LocatedBlockWithFileName;
import org.apache.hadoop.hdfs.protocol.LocatedBlocks;

import junit.framework.TestCase;

public class TestGetBlockInfo extends TestCase {
 
  /**
   * Test the get block info
   *
   * @throws IOException
   */
  public void testGetBlockInfo1() throws IOException {
    Configuration conf = new Configuration();
    MiniDFSCluster cluster =
      new MiniDFSCluster(conf, 5, true, null);
    final String pathStr = "/test/testGetBlockInfo1";
    final int FILE_LEN = 123;

    long nonExistedBlockId = 20120330;
    try {
      FileSystem fs = cluster.getFileSystem();
      Path path = new Path(pathStr);
     
      cluster.waitActive();
     
      DFSTestUtil.createFile(fs, path, FILE_LEN, (short)3, 0);
     
      DFSTestUtil.waitReplication(fs, path, (short)3);
      NameNode nn = cluster.getNameNode();
      LocatedBlocks located = nn.getBlockLocations(pathStr, 0, FILE_LEN);
     
      // Get the original block locations
      List<LocatedBlock> blocks = located.getLocatedBlocks();
      LocatedBlock firstBlock = blocks.get(0);
      long blockId = firstBlock.getBlock().getBlockId();     

      LocatedBlockWithFileName locatedBlockWithFileName =
          nn.getBlockInfo(blockId);
     
      assertEquals(pathStr, locatedBlockWithFileName.getFileName());
      assertEquals(3, locatedBlockWithFileName.getLocations().length);

      // Test the deleted block id
      fs.delete(path, true);
      assertNull(nn.getBlockInfo(blockId));

      // Test a non existed block id
      assertNull(nn.getBlockInfo(nonExistedBlockId));

    } finally {
      cluster.shutdown();
    }
  }
}  
TOP

Related Classes of org.apache.hadoop.hdfs.server.namenode.TestGetBlockInfo

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.