diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index f402fafaa9d..d36bff04273 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -168,6 +168,9 @@ Release 0.23.3 - UNRELEASED HDFS-3089. Move FSDatasetInterface and the related classes to a package. (szetszwo) + HDFS-3129. NetworkTopology: add test that getLeaf should check for + invalid topologies. (Colin Patrick McCabe via eli) + OPTIMIZATIONS HDFS-2477. Optimize computing the diff between a block report and the diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/net/TestNetworkTopology.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/net/TestNetworkTopology.java index 9d755a7643a..5a4643f4107 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/net/TestNetworkTopology.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/net/TestNetworkTopology.java @@ -58,6 +58,25 @@ public class TestNetworkTopology extends TestCase { assertEquals(cluster.getNumOfLeaves(), dataNodes.length); } + public void testCreateInvalidTopology() throws Exception { + NetworkTopology invalCluster = new NetworkTopology(); + DatanodeDescriptor invalDataNodes[] = new DatanodeDescriptor[] { + new DatanodeDescriptor(new DatanodeID("h1:5020"), "/d1/r1"), + new DatanodeDescriptor(new DatanodeID("h2:5020"), "/d1/r1"), + new DatanodeDescriptor(new DatanodeID("h3:5020"), "/d1") + }; + invalCluster.add(invalDataNodes[0]); + invalCluster.add(invalDataNodes[1]); + try { + invalCluster.add(invalDataNodes[2]); + fail("expected InvalidTopologyException"); + } catch (NetworkTopology.InvalidTopologyException e) { + assertEquals(e.getMessage(), "Invalid network topology. " + + "You cannot have a rack and a non-rack node at the same " + + "level of the network topology."); + } + } + public void testRacks() throws Exception { assertEquals(cluster.getNumOfRacks(), 3); assertTrue(cluster.isOnSameRack(dataNodes[0], dataNodes[1]));