コード例 #1
0
        private SimulatedFSDataset GetSimulatedFSDataset()
        {
            SimulatedFSDataset fsdataset = new SimulatedFSDataset(null, conf);

            fsdataset.AddBlockPool(bpid, conf);
            return(fsdataset);
        }
コード例 #2
0
        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)
            {
            }
        }