瀏覽代碼

HDFS-16345. Fix test case fail in TestBlockStoragePolicy (#3696). Contributed by guophilipse.

Reviewed-by: Akira Ajisaka <aajisaka@apache.org>
Signed-off-by: Ayush Saxena <ayushsaxena@apache.org>
GuoPhilipse 3 年之前
父節點
當前提交
25849ff7b7

+ 62 - 44
hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestBlockStoragePolicy.java

@@ -1274,23 +1274,29 @@ public class TestBlockStoragePolicy {
     DFSTestUtil.formatNameNode(conf);
     NameNode namenode = new NameNode(conf);
 
-    final BlockManager bm = namenode.getNamesystem().getBlockManager();
-    BlockPlacementPolicy replicator = bm.getBlockPlacementPolicy();
-    NetworkTopology cluster = bm.getDatanodeManager().getNetworkTopology();
-    for (DatanodeDescriptor datanode : dataNodes) {
-      cluster.add(datanode);
-    }
-
-    DatanodeStorageInfo[] targets = replicator.chooseTarget("/foo", 3,
-        dataNodes[0], Collections.<DatanodeStorageInfo>emptyList(), false,
-        new HashSet<Node>(), 0, policy1, null);
-    System.out.println(Arrays.asList(targets));
-    Assert.assertEquals(3, targets.length);
-    targets = replicator.chooseTarget("/foo", 3,
-        dataNodes[0], Collections.<DatanodeStorageInfo>emptyList(), false,
-        new HashSet<Node>(), 0, policy2, null);
-    System.out.println(Arrays.asList(targets));
-    Assert.assertEquals(3, targets.length);
+    try {
+      final BlockManager bm = namenode.getNamesystem().getBlockManager();
+      BlockPlacementPolicy replicator = bm.getBlockPlacementPolicy();
+      NetworkTopology cluster = bm.getDatanodeManager().getNetworkTopology();
+      for (DatanodeDescriptor datanode : dataNodes) {
+        cluster.add(datanode);
+      }
+
+      DatanodeStorageInfo[] targets = replicator.chooseTarget("/foo", 3,
+              dataNodes[0], Collections.<DatanodeStorageInfo>emptyList(), false,
+              new HashSet<Node>(), 0, policy1, null);
+      System.out.println(Arrays.asList(targets));
+      Assert.assertEquals(3, targets.length);
+      targets = replicator.chooseTarget("/foo", 3,
+              dataNodes[0], Collections.<DatanodeStorageInfo>emptyList(), false,
+              new HashSet<Node>(), 0, policy2, null);
+      System.out.println(Arrays.asList(targets));
+      Assert.assertEquals(3, targets.length);
+    } finally {
+      if (namenode != null) {
+        namenode.stop();
+      }
+    }
   }
 
   @Test
@@ -1321,20 +1327,26 @@ public class TestBlockStoragePolicy {
     DFSTestUtil.formatNameNode(conf);
     NameNode namenode = new NameNode(conf);
 
-    final BlockManager bm = namenode.getNamesystem().getBlockManager();
-    BlockPlacementPolicy replicator = bm.getBlockPlacementPolicy();
-    NetworkTopology cluster = bm.getDatanodeManager().getNetworkTopology();
-    for (DatanodeDescriptor datanode : dataNodes) {
-      cluster.add(datanode);
-    }
+    try {
+      final BlockManager bm = namenode.getNamesystem().getBlockManager();
+      BlockPlacementPolicy replicator = bm.getBlockPlacementPolicy();
+      NetworkTopology cluster = bm.getDatanodeManager().getNetworkTopology();
+      for (DatanodeDescriptor datanode : dataNodes) {
+        cluster.add(datanode);
+      }
 
-    DatanodeStorageInfo[] targets = replicator.chooseTarget("/foo", 3,
-        dataNodes[0], Collections.<DatanodeStorageInfo>emptyList(), false,
-        new HashSet<Node>(), 0, policy, null);
-    System.out.println(policy.getName() + ": " + Arrays.asList(targets));
-    Assert.assertEquals(2, targets.length);
-    Assert.assertEquals(StorageType.SSD, targets[0].getStorageType());
-    Assert.assertEquals(StorageType.DISK, targets[1].getStorageType());
+      DatanodeStorageInfo[] targets = replicator.chooseTarget("/foo", 3,
+              dataNodes[0], Collections.<DatanodeStorageInfo>emptyList(), false,
+              new HashSet<Node>(), 0, policy, null);
+      System.out.println(policy.getName() + ": " + Arrays.asList(targets));
+      Assert.assertEquals(2, targets.length);
+      Assert.assertEquals(StorageType.SSD, targets[0].getStorageType());
+      Assert.assertEquals(StorageType.DISK, targets[1].getStorageType());
+    } finally {
+      if (namenode != null) {
+        namenode.stop();
+      }
+    }
   }
 
   /**
@@ -1374,20 +1386,26 @@ public class TestBlockStoragePolicy {
     DFSTestUtil.formatNameNode(conf);
     NameNode namenode = new NameNode(conf);
 
-    final BlockManager bm = namenode.getNamesystem().getBlockManager();
-    BlockPlacementPolicy replicator = bm.getBlockPlacementPolicy();
-    NetworkTopology cluster = bm.getDatanodeManager().getNetworkTopology();
-    for (DatanodeDescriptor datanode : dataNodes) {
-      cluster.add(datanode);
-    }
-    // chsenDs are DISK StorageType to simulate not enough SDD Storage
-    List<DatanodeStorageInfo> chsenDs = new ArrayList<>();
-    chsenDs.add(diskStorages[0]);
-    chsenDs.add(diskStorages[1]);
-    DatanodeStorageInfo[] targets = replicator.chooseTarget("/foo", 1,
-        null, chsenDs, true,
-        new HashSet<Node>(), 0, policy, null);
-    Assert.assertEquals(3, targets.length);
+    try {
+      final BlockManager bm = namenode.getNamesystem().getBlockManager();
+      BlockPlacementPolicy replicator = bm.getBlockPlacementPolicy();
+      NetworkTopology cluster = bm.getDatanodeManager().getNetworkTopology();
+      for (DatanodeDescriptor datanode : dataNodes) {
+        cluster.add(datanode);
+      }
+      // chsenDs are DISK StorageType to simulate not enough SDD Storage
+      List<DatanodeStorageInfo> chsenDs = new ArrayList<>();
+      chsenDs.add(diskStorages[0]);
+      chsenDs.add(diskStorages[1]);
+      DatanodeStorageInfo[] targets = replicator.chooseTarget("/foo", 1,
+              null, chsenDs, true,
+              new HashSet<Node>(), 0, policy, null);
+      Assert.assertEquals(3, targets.length);
+    } finally {
+      if (namenode != null) {
+        namenode.stop();
+      }
+    }
   }
 
   @Test