public virtual void Setup() { dataNodes = new DatanodeDescriptor[] { DFSTestUtil.GetDatanodeDescriptor("1.1.1.1" , "/d1/r1"), DFSTestUtil.GetDatanodeDescriptor("2.2.2.2", "/d1/r1"), DFSTestUtil .GetDatanodeDescriptor("3.3.3.3", "/d1/r2"), DFSTestUtil.GetDatanodeDescriptor("3.3.3.3" , 5021, "/d1/r2") }; foreach (DatanodeDescriptor node in dataNodes) { map.Add(node); } map.Add(null); }
public virtual void TestChooseTargetWithDependencies() { for (int i = 0; i < NumOfDatanodes; i++) { cluster.Remove(dataNodes[i]); } for (int i_1 = 0; i_1 < NumOfDatanodesMoreTargets; i_1++) { DatanodeDescriptor node = dataNodesInMoreTargetsCase[i_1]; if (cluster.Contains(node)) { cluster.Remove(node); } } Host2NodesMap host2DatanodeMap = namenode.GetNamesystem().GetBlockManager().GetDatanodeManager ().GetHost2DatanodeMap(); for (int i_2 = 0; i_2 < NumOfDatanodesForDependencies; i_2++) { cluster.Add(dataNodesForDependencies[i_2]); host2DatanodeMap.Add(dataNodesForDependencies[i_2]); } //add dependencies (node1 <-> node2, and node3<->node4) dataNodesForDependencies[1].AddDependentHostName(dataNodesForDependencies[2].GetHostName ()); dataNodesForDependencies[2].AddDependentHostName(dataNodesForDependencies[1].GetHostName ()); dataNodesForDependencies[3].AddDependentHostName(dataNodesForDependencies[4].GetHostName ()); dataNodesForDependencies[4].AddDependentHostName(dataNodesForDependencies[3].GetHostName ()); //Update heartbeat for (int i_3 = 0; i_3 < NumOfDatanodesForDependencies; i_3++) { UpdateHeartbeatWithUsage(dataNodesForDependencies[i_3], 2 * HdfsConstants.MinBlocksForWrite * BlockSize, 0L, 2 * HdfsConstants.MinBlocksForWrite * BlockSize, 0L, 0L, 0L, 0 , 0); } IList <DatanodeStorageInfo> chosenNodes = new AList <DatanodeStorageInfo>(); DatanodeStorageInfo[] targets; ICollection <Node> excludedNodes = new HashSet <Node>(); excludedNodes.AddItem(dataNodesForDependencies[5]); //try to select three targets as there are three node groups targets = ChooseTarget(3, dataNodesForDependencies[1], chosenNodes, excludedNodes ); //Even there are three node groups, verify that //only two targets are selected due to dependencies NUnit.Framework.Assert.AreEqual(targets.Length, 2); NUnit.Framework.Assert.AreEqual(targets[0], storagesForDependencies[1]); NUnit.Framework.Assert.IsTrue(targets[1].Equals(storagesForDependencies[3]) || targets [1].Equals(storagesForDependencies[4])); //verify that all data nodes are in the excluded list NUnit.Framework.Assert.AreEqual(excludedNodes.Count, NumOfDatanodesForDependencies ); for (int i_4 = 0; i_4 < NumOfDatanodesForDependencies; i_4++) { NUnit.Framework.Assert.IsTrue(excludedNodes.Contains(dataNodesForDependencies[i_4 ])); } }