@Test
public void testBlockECRecoveryCommand() {

  DatanodeInfo[] dnInfos0 = new DatanodeInfo[] {
      DFSTestUtil.getLocalDatanodeInfo(), DFSTestUtil.getLocalDatanodeInfo() };
  DatanodeStorageInfo targetDnInfos_0 = BlockManagerTestUtil
      .newDatanodeStorageInfo(DFSTestUtil.getLocalDatanodeDescriptor(),
          new DatanodeStorage("s00"));
  DatanodeStorageInfo targetDnInfos_1 = BlockManagerTestUtil
      .newDatanodeStorageInfo(DFSTestUtil.getLocalDatanodeDescriptor(),
          new DatanodeStorage("s01"));
  DatanodeStorageInfo[] targetDnInfos0 = new DatanodeStorageInfo[] {
      targetDnInfos_0, targetDnInfos_1 };
  byte[] liveBlkIndices0 = new byte[2];
  BlockECReconstructionInfo blkECRecoveryInfo0 = new BlockECReconstructionInfo(
      new ExtendedBlock("bp1", 1234), dnInfos0, targetDnInfos0,
      liveBlkIndices0, StripedFileTestUtil.getDefaultECPolicy());
  DatanodeInfo[] dnInfos1 = new DatanodeInfo[] {
      DFSTestUtil.getLocalDatanodeInfo(), DFSTestUtil.getLocalDatanodeInfo() };
  DatanodeStorageInfo targetDnInfos_2 = BlockManagerTestUtil
      .newDatanodeStorageInfo(DFSTestUtil.getLocalDatanodeDescriptor(),
          new DatanodeStorage("s02"));
  DatanodeStorageInfo targetDnInfos_3 = BlockManagerTestUtil
      .newDatanodeStorageInfo(DFSTestUtil.getLocalDatanodeDescriptor(),
          new DatanodeStorage("s03"));
  DatanodeStorageInfo[] targetDnInfos1 = new DatanodeStorageInfo[] {
      targetDnInfos_2, targetDnInfos_3 };
  byte[] liveBlkIndices1 = new byte[2];
  BlockECReconstructionInfo blkECRecoveryInfo1 = new BlockECReconstructionInfo(
      new ExtendedBlock("bp2", 3256), dnInfos1, targetDnInfos1,
      liveBlkIndices1, StripedFileTestUtil.getDefaultECPolicy());
  List<BlockECReconstructionInfo> blkRecoveryInfosList = new ArrayList<BlockECReconstructionInfo>();
  blkRecoveryInfosList.add(blkECRecoveryInfo0);
  blkRecoveryInfosList.add(blkECRecoveryInfo1);
  BlockECReconstructionCommand blkECReconstructionCmd = new BlockECReconstructionCommand(
      DatanodeProtocol.DNA_ERASURE_CODING_RECONSTRUCTION, blkRecoveryInfosList);
  BlockECReconstructionCommandProto blkECRecoveryCmdProto = PBHelper
      .convert(blkECReconstructionCmd);
  blkECReconstructionCmd = PBHelper.convert(blkECRecoveryCmdProto);
  Iterator<BlockECReconstructionInfo> iterator = blkECReconstructionCmd.getECTasks()
      .iterator();
  assertBlockECRecoveryInfoEquals(blkECRecoveryInfo0, iterator.next());
  assertBlockECRecoveryInfoEquals(blkECRecoveryInfo1, iterator.next());
}