/// <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);
            }
Exemplo n.º 2
0
 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));
        }