コード例 #1
0
        public virtual void TestChooseTarget2()
        {
            DatanodeStorageInfo[]       targets;
            BlockPlacementPolicyDefault repl          = (BlockPlacementPolicyDefault)replicator;
            IList <DatanodeStorageInfo> chosenNodes   = new AList <DatanodeStorageInfo>();
            ICollection <Node>          excludedNodes = new HashSet <Node>();

            excludedNodes.AddItem(dataNodes[1]);
            targets = repl.ChooseTarget(filename, 4, dataNodes[0], chosenNodes, false, excludedNodes
                                        , BlockSize, TestBlockStoragePolicy.DefaultStoragePolicy);
            NUnit.Framework.Assert.AreEqual(targets.Length, 4);
            NUnit.Framework.Assert.AreEqual(storages[0], targets[0]);
            NUnit.Framework.Assert.IsTrue(cluster.IsNodeGroupAware());
            // Make sure no replicas are on the same nodegroup
            for (int i = 1; i < 4; i++)
            {
                NUnit.Framework.Assert.IsFalse(IsOnSameNodeGroup(targets[0], targets[i]));
            }
            NUnit.Framework.Assert.IsTrue(IsOnSameRack(targets[1], targets[2]) || IsOnSameRack
                                              (targets[2], targets[3]));
            NUnit.Framework.Assert.IsFalse(IsOnSameRack(targets[1], targets[3]));
            excludedNodes.Clear();
            chosenNodes.Clear();
            excludedNodes.AddItem(dataNodes[1]);
            chosenNodes.AddItem(storages[2]);
            targets = repl.ChooseTarget(filename, 1, dataNodes[0], chosenNodes, true, excludedNodes
                                        , BlockSize, TestBlockStoragePolicy.DefaultStoragePolicy);
            System.Console.Out.WriteLine("targets=" + Arrays.AsList(targets));
            NUnit.Framework.Assert.AreEqual(2, targets.Length);
            //make sure that the chosen node is in the target.
            int i_1 = 0;

            for (; i_1 < targets.Length && !storages[2].Equals(targets[i_1]); i_1++)
            {
            }
            NUnit.Framework.Assert.IsTrue(i_1 < targets.Length);
        }