public virtual void TestBlockPriorities() { UnderReplicatedBlocks queues = new UnderReplicatedBlocks(); Block block1 = new Block(1); Block block2 = new Block(2); Block block_very_under_replicated = new Block(3); Block block_corrupt = new Block(4); Block block_corrupt_repl_one = new Block(5); //add a block with a single entry AssertAdded(queues, block1, 1, 0, 3); NUnit.Framework.Assert.AreEqual(1, queues.GetUnderReplicatedBlockCount()); NUnit.Framework.Assert.AreEqual(1, queues.Size()); AssertInLevel(queues, block1, UnderReplicatedBlocks.QueueHighestPriority); //repeated additions fail NUnit.Framework.Assert.IsFalse(queues.Add(block1, 1, 0, 3)); //add a second block with two replicas AssertAdded(queues, block2, 2, 0, 3); NUnit.Framework.Assert.AreEqual(2, queues.GetUnderReplicatedBlockCount()); NUnit.Framework.Assert.AreEqual(2, queues.Size()); AssertInLevel(queues, block2, UnderReplicatedBlocks.QueueUnderReplicated); //now try to add a block that is corrupt AssertAdded(queues, block_corrupt, 0, 0, 3); NUnit.Framework.Assert.AreEqual(3, queues.Size()); NUnit.Framework.Assert.AreEqual(2, queues.GetUnderReplicatedBlockCount()); NUnit.Framework.Assert.AreEqual(1, queues.GetCorruptBlockSize()); AssertInLevel(queues, block_corrupt, UnderReplicatedBlocks.QueueWithCorruptBlocks ); //insert a very under-replicated block AssertAdded(queues, block_very_under_replicated, 4, 0, 25); AssertInLevel(queues, block_very_under_replicated, UnderReplicatedBlocks.QueueVeryUnderReplicated ); //insert a corrupt block with replication factor 1 AssertAdded(queues, block_corrupt_repl_one, 0, 0, 1); NUnit.Framework.Assert.AreEqual(2, queues.GetCorruptBlockSize()); NUnit.Framework.Assert.AreEqual(1, queues.GetCorruptReplOneBlockSize()); queues.Update(block_corrupt_repl_one, 0, 0, 3, 0, 2); NUnit.Framework.Assert.AreEqual(0, queues.GetCorruptReplOneBlockSize()); queues.Update(block_corrupt, 0, 0, 1, 0, -2); NUnit.Framework.Assert.AreEqual(1, queues.GetCorruptReplOneBlockSize()); queues.Update(block_very_under_replicated, 0, 0, 1, -4, -24); NUnit.Framework.Assert.AreEqual(2, queues.GetCorruptReplOneBlockSize()); }
private void AssertAdded(UnderReplicatedBlocks queues, Block block, int curReplicas , int decomissionedReplicas, int expectedReplicas) { NUnit.Framework.Assert.IsTrue("Failed to add " + block, queues.Add(block, curReplicas , decomissionedReplicas, expectedReplicas)); }