/// <exception cref="System.IO.IOException"/> public virtual FSEditLog MockEditLog(NNStorageRetentionManager.StoragePurger purger ) { IList <JournalManager> jms = Lists.NewArrayList(); JournalSet journalSet = new JournalSet(0); foreach (TestNNStorageRetentionManager.TestCaseDescription.FakeRoot root in this. dirRoots.Values) { if (!root.type.IsOfType(NNStorage.NameNodeDirType.Edits)) { continue; } // passing null NNStorage for unit test because it does not use it FileJournalManager fjm = new FileJournalManager(this._enclosing.conf, root.MockStorageDir (), null); fjm.purger = purger; jms.AddItem(fjm); journalSet.Add(fjm, false); } FSEditLog mockLog = Org.Mockito.Mockito.Mock <FSEditLog>(); Org.Mockito.Mockito.DoAnswer(new _Answer_350(jms)).When(mockLog).PurgeLogsOlderThan (Org.Mockito.Mockito.AnyLong()); Org.Mockito.Mockito.DoAnswer(new _Answer_365(journalSet)).When(mockLog).SelectInputStreams (Org.Mockito.Mockito.AnyCollection(), Org.Mockito.Mockito.AnyLong(), Org.Mockito.Mockito .AnyBoolean()); return(mockLog); }
public NNStorageRetentionManager(Configuration conf, NNStorage storage, LogsPurgeable purgeableLogs, NNStorageRetentionManager.StoragePurger purger) { this.numCheckpointsToRetain = conf.GetInt(DFSConfigKeys.DfsNamenodeNumCheckpointsRetainedKey , DFSConfigKeys.DfsNamenodeNumCheckpointsRetainedDefault); this.numExtraEditsToRetain = conf.GetLong(DFSConfigKeys.DfsNamenodeNumExtraEditsRetainedKey , DFSConfigKeys.DfsNamenodeNumExtraEditsRetainedDefault); this.maxExtraEditsSegmentsToRetain = conf.GetInt(DFSConfigKeys.DfsNamenodeMaxExtraEditsSegmentsRetainedKey , DFSConfigKeys.DfsNamenodeMaxExtraEditsSegmentsRetainedDefault); Preconditions.CheckArgument(numCheckpointsToRetain > 0, "Must retain at least one checkpoint" ); Preconditions.CheckArgument(numExtraEditsToRetain >= 0, DFSConfigKeys.DfsNamenodeNumExtraEditsRetainedKey + " must not be negative"); this.storage = storage; this.purgeableLogs = purgeableLogs; this.purger = purger; }
/// <exception cref="System.IO.IOException"/> private void RunTest(TestNNStorageRetentionManager.TestCaseDescription tc) { NNStorageRetentionManager.StoragePurger mockPurger = Org.Mockito.Mockito.Mock <NNStorageRetentionManager.StoragePurger >(); ArgumentCaptor <FSImageStorageInspector.FSImageFile> imagesPurgedCaptor = ArgumentCaptor .ForClass <FSImageStorageInspector.FSImageFile>(); ArgumentCaptor <FileJournalManager.EditLogFile> logsPurgedCaptor = ArgumentCaptor. ForClass <FileJournalManager.EditLogFile>(); // Ask the manager to purge files we don't need any more new NNStorageRetentionManager(conf, tc.MockStorage(), tc.MockEditLog(mockPurger), mockPurger).PurgeOldStorage(NNStorage.NameNodeFile.Image); // Verify that it asked the purger to remove the correct files Org.Mockito.Mockito.Verify(mockPurger, Org.Mockito.Mockito.AtLeast(0)).PurgeImage (imagesPurgedCaptor.Capture()); Org.Mockito.Mockito.Verify(mockPurger, Org.Mockito.Mockito.AtLeast(0)).PurgeLog(logsPurgedCaptor .Capture()); // Check images ICollection <string> purgedPaths = Sets.NewLinkedHashSet(); foreach (FSImageStorageInspector.FSImageFile purged in imagesPurgedCaptor.GetAllValues ()) { purgedPaths.AddItem(FileToPath(purged.GetFile())); } NUnit.Framework.Assert.AreEqual(Joiner.On(",").Join(FilesToPaths(tc.expectedPurgedImages )), Joiner.On(",").Join(purgedPaths)); // Check images purgedPaths.Clear(); foreach (FileJournalManager.EditLogFile purged_1 in logsPurgedCaptor.GetAllValues ()) { purgedPaths.AddItem(FileToPath(purged_1.GetFile())); } NUnit.Framework.Assert.AreEqual(Joiner.On(",").Join(FilesToPaths(tc.expectedPurgedLogs )), Joiner.On(",").Join(purgedPaths)); }