private SimulatedFSDataset GetSimulatedFSDataset() { SimulatedFSDataset fsdataset = new SimulatedFSDataset(null, conf); fsdataset.AddBlockPool(bpid, conf); return(fsdataset); }
public virtual void TestInjectionNonEmpty() { SimulatedFSDataset fsdataset = GetSimulatedFSDataset(); BlockListAsLongs blockReport = fsdataset.GetBlockReport(bpid); NUnit.Framework.Assert.AreEqual(0, blockReport.GetNumberOfBlocks()); int bytesAdded = AddSomeBlocks(fsdataset); blockReport = fsdataset.GetBlockReport(bpid); NUnit.Framework.Assert.AreEqual(Numblocks, blockReport.GetNumberOfBlocks()); foreach (Block b in blockReport) { NUnit.Framework.Assert.IsNotNull(b); NUnit.Framework.Assert.AreEqual(BlockIdToLen(b.GetBlockId()), b.GetNumBytes()); } fsdataset = null; // Inject blocks into an non-empty fsdataset // - injecting the blocks we got above. SimulatedFSDataset sfsdataset = GetSimulatedFSDataset(); // Add come blocks whose block ids do not conflict with // the ones we are going to inject. bytesAdded += AddSomeBlocks(sfsdataset, Numblocks + 1); sfsdataset.GetBlockReport(bpid); NUnit.Framework.Assert.AreEqual(Numblocks, blockReport.GetNumberOfBlocks()); sfsdataset.GetBlockReport(bpid); NUnit.Framework.Assert.AreEqual(Numblocks, blockReport.GetNumberOfBlocks()); sfsdataset.InjectBlocks(bpid, blockReport); blockReport = sfsdataset.GetBlockReport(bpid); NUnit.Framework.Assert.AreEqual(Numblocks * 2, blockReport.GetNumberOfBlocks()); foreach (Block b_1 in blockReport) { NUnit.Framework.Assert.IsNotNull(b_1); NUnit.Framework.Assert.AreEqual(BlockIdToLen(b_1.GetBlockId()), b_1.GetNumBytes() ); NUnit.Framework.Assert.AreEqual(BlockIdToLen(b_1.GetBlockId()), sfsdataset.GetLength (new ExtendedBlock(bpid, b_1))); } NUnit.Framework.Assert.AreEqual(bytesAdded, sfsdataset.GetDfsUsed()); NUnit.Framework.Assert.AreEqual(sfsdataset.GetCapacity() - bytesAdded, sfsdataset .GetRemaining()); // Now test that the dataset cannot be created if it does not have sufficient cap conf.SetLong(SimulatedFSDataset.ConfigPropertyCapacity, 10); try { sfsdataset = GetSimulatedFSDataset(); sfsdataset.AddBlockPool(bpid, conf); sfsdataset.InjectBlocks(bpid, blockReport); NUnit.Framework.Assert.IsTrue("Expected an IO exception", false); } catch (IOException) { } }