public virtual void SetupMocks()
        {
            mockNN1 = SetupNNMock(0);
            mockNN2 = SetupNNMock(1);
            // Set up a mock DN with the bare-bones configuration
            // objects, etc.
            mockDn = Org.Mockito.Mockito.Mock <DataNode>();
            Org.Mockito.Mockito.DoReturn(true).When(mockDn).ShouldRun();
            Configuration conf      = new Configuration();
            FilePath      dnDataDir = new FilePath(new FilePath(TestBuildData, "dfs"), "data");

            conf.Set(DFSConfigKeys.DfsDatanodeDataDirKey, dnDataDir.ToURI().ToString());
            Org.Mockito.Mockito.DoReturn(conf).When(mockDn).GetConf();
            Org.Mockito.Mockito.DoReturn(new DNConf(conf)).When(mockDn).GetDnConf();
            Org.Mockito.Mockito.DoReturn(DataNodeMetrics.Create(conf, "fake dn")).When(mockDn
                                                                                       ).GetMetrics();
            // Set up a simulated dataset with our fake BP
            mockFSDataset = Org.Mockito.Mockito.Spy(new SimulatedFSDataset(null, conf));
            mockFSDataset.AddBlockPool(FakeBpid, conf);
            // Wire the dataset to the DN.
            Org.Mockito.Mockito.DoReturn(mockFSDataset).When(mockDn).GetFSDataset();
        }
        public virtual void TestBPInitErrorHandling()
        {
            DataNode mockDn = Org.Mockito.Mockito.Mock <DataNode>();

            Org.Mockito.Mockito.DoReturn(true).When(mockDn).ShouldRun();
            Configuration conf      = new Configuration();
            FilePath      dnDataDir = new FilePath(new FilePath(TestBuildData, "testBPInitErrorHandling"
                                                                ), "data");

            conf.Set(DFSConfigKeys.DfsDatanodeDataDirKey, dnDataDir.ToURI().ToString());
            Org.Mockito.Mockito.DoReturn(conf).When(mockDn).GetConf();
            Org.Mockito.Mockito.DoReturn(new DNConf(conf)).When(mockDn).GetDnConf();
            Org.Mockito.Mockito.DoReturn(DataNodeMetrics.Create(conf, "fake dn")).When(mockDn
                                                                                       ).GetMetrics();
            AtomicInteger count = new AtomicInteger();

            Org.Mockito.Mockito.DoAnswer(new _Answer_328(this, count, mockDn)).When(mockDn).InitBlockPool
                (Org.Mockito.Mockito.Any <BPOfferService>());
            // The initBlockPool is called again. Now mock init is done.
            BPOfferService         bpos   = SetupBPOSForNNs(mockDn, mockNN1, mockNN2);
            IList <BPServiceActor> actors = bpos.GetBPServiceActors();

            NUnit.Framework.Assert.AreEqual(2, actors.Count);
            bpos.Start();
            try
            {
                WaitForInitialization(bpos);
                // even if one of the actor initialization fails, the other one will be
                // finish block report.
                WaitForBlockReport(mockNN1, mockNN2);
            }
            finally
            {
                bpos.Stop();
            }
        }