Exemple #1
0
        /// <summary>
        /// Test if
        /// <see cref="BlockManager.ComputeInvalidateWork(int)"/>
        /// can schedule invalidate work correctly
        /// </summary>
        /// <exception cref="System.Exception"/>
        public virtual void TestCompInvalidate()
        {
            int blockInvalidateLimit = bm.GetDatanodeManager().blockInvalidateLimit;

            namesystem.WriteLock();
            try
            {
                for (int i = 0; i < nodes.Length; i++)
                {
                    for (int j = 0; j < 3 * blockInvalidateLimit + 1; j++)
                    {
                        Block block = new Block(i * (blockInvalidateLimit + 1) + j, 0, GenerationStamp.LastReservedStamp
                                                );
                        bm.AddToInvalidates(block, nodes[i]);
                    }
                }
                NUnit.Framework.Assert.AreEqual(blockInvalidateLimit * NumOfDatanodes, bm.ComputeInvalidateWork
                                                    (NumOfDatanodes + 1));
                NUnit.Framework.Assert.AreEqual(blockInvalidateLimit * NumOfDatanodes, bm.ComputeInvalidateWork
                                                    (NumOfDatanodes));
                NUnit.Framework.Assert.AreEqual(blockInvalidateLimit * (NumOfDatanodes - 1), bm.ComputeInvalidateWork
                                                    (NumOfDatanodes - 1));
                int workCount = bm.ComputeInvalidateWork(1);
                if (workCount == 1)
                {
                    NUnit.Framework.Assert.AreEqual(blockInvalidateLimit + 1, bm.ComputeInvalidateWork
                                                        (2));
                }
                else
                {
                    NUnit.Framework.Assert.AreEqual(workCount, blockInvalidateLimit);
                    NUnit.Framework.Assert.AreEqual(2, bm.ComputeInvalidateWork(2));
                }
            }
            finally
            {
                namesystem.WriteUnlock();
            }
        }
Exemple #2
0
 public static int ComputeInvalidationWork(BlockManager bm)
 {
     return(bm.ComputeInvalidateWork(int.MaxValue));
 }