/// <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(); } }
public static int ComputeInvalidationWork(BlockManager bm) { return(bm.ComputeInvalidateWork(int.MaxValue)); }