Ejemplo n.º 1
0
        /// <returns>
        /// the fsimage file with the most recent transaction ID in the
        /// given 'current/' directory.
        /// </returns>
        /// <exception cref="System.IO.IOException"/>
        public static FilePath FindNewestImageFile(string currentDirPath)
        {
            Storage.StorageDirectory sd = FSImageTestUtil.MockStorageDirectory(new FilePath(currentDirPath
                                                                                            ), NNStorage.NameNodeDirType.Image);
            FSImageTransactionalStorageInspector inspector = new FSImageTransactionalStorageInspector
                                                                 ();

            inspector.InspectDirectory(sd);
            IList <FSImageStorageInspector.FSImageFile> latestImages = inspector.GetLatestImages
                                                                           ();

            return((latestImages.IsEmpty()) ? null : latestImages[0].GetFile());
        }
Ejemplo n.º 2
0
        public virtual void TestCurrentStorageInspector()
        {
            FSImageTransactionalStorageInspector inspector = new FSImageTransactionalStorageInspector
                                                                 ();

            Storage.StorageDirectory mockDir = FSImageTestUtil.MockStorageDirectory(NNStorage.NameNodeDirType
                                                                                    .ImageAndEdits, false, "/foo/current/" + NNStorage.GetImageFileName(123), "/foo/current/"
                                                                                    + NNStorage.GetFinalizedEditsFileName(123, 456), "/foo/current/" + NNStorage.GetImageFileName
                                                                                        (456), "/foo/current/" + NNStorage.GetInProgressEditsFileName(457));
            inspector.InspectDirectory(mockDir);
            NUnit.Framework.Assert.AreEqual(2, inspector.foundImages.Count);
            FSImageStorageInspector.FSImageFile latestImage = inspector.GetLatestImages()[0];
            NUnit.Framework.Assert.AreEqual(456, latestImage.txId);
            NUnit.Framework.Assert.AreSame(mockDir, latestImage.sd);
            NUnit.Framework.Assert.IsTrue(inspector.IsUpgradeFinalized());
            NUnit.Framework.Assert.AreEqual(new FilePath("/foo/current/" + NNStorage.GetImageFileName
                                                             (456)), latestImage.GetFile());
        }
Ejemplo n.º 3
0
        public virtual void TestGetRemoteEditLog()
        {
            Storage.StorageDirectory sd = FSImageTestUtil.MockStorageDirectory(NNStorage.NameNodeDirType
                                                                               .Edits, false, NNStorage.GetFinalizedEditsFileName(1, 100), NNStorage.GetFinalizedEditsFileName
                                                                                   (101, 200), NNStorage.GetInProgressEditsFileName(201), NNStorage.GetFinalizedEditsFileName
                                                                                   (1001, 1100));
            // passing null for NNStorage because this unit test will not use it
            FileJournalManager fjm = new FileJournalManager(conf, sd, null);

            NUnit.Framework.Assert.AreEqual("[1,100],[101,200],[1001,1100]", GetLogsAsString(
                                                fjm, 1));
            NUnit.Framework.Assert.AreEqual("[101,200],[1001,1100]", GetLogsAsString(fjm, 101
                                                                                     ));
            NUnit.Framework.Assert.AreEqual("[101,200],[1001,1100]", GetLogsAsString(fjm, 150
                                                                                     ));
            NUnit.Framework.Assert.AreEqual("[1001,1100]", GetLogsAsString(fjm, 201));
            NUnit.Framework.Assert.AreEqual("Asking for a newer log than exists should return empty list"
                                            , string.Empty, GetLogsAsString(fjm, 9999));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Return a standalone instance of FSEditLog that will log into the given
        /// log directory.
        /// </summary>
        /// <remarks>
        /// Return a standalone instance of FSEditLog that will log into the given
        /// log directory. The returned instance is not yet opened.
        /// </remarks>
        /// <exception cref="System.IO.IOException"/>
        public static FSEditLog CreateStandaloneEditLog(FilePath logDir)
        {
            NUnit.Framework.Assert.IsTrue(logDir.Mkdirs() || logDir.Exists());
            if (!FileUtil.FullyDeleteContents(logDir))
            {
                throw new IOException("Unable to delete contents of " + logDir);
            }
            NNStorage storage = Org.Mockito.Mockito.Mock <NNStorage>();

            Storage.StorageDirectory sd = FSImageTestUtil.MockStorageDirectory(logDir, NNStorage.NameNodeDirType
                                                                               .Edits);
            IList <Storage.StorageDirectory> sds = Lists.NewArrayList(sd);

            Org.Mockito.Mockito.DoReturn(sds).When(storage).DirIterable(NNStorage.NameNodeDirType
                                                                        .Edits);
            Org.Mockito.Mockito.DoReturn(sd).When(storage).GetStorageDirectory(Matchers.AnyObject
                                                                               <URI>());
            FSEditLog editLog = new FSEditLog(new Configuration(), storage, ImmutableList.Of(
                                                  logDir.ToURI()));

            editLog.InitJournalsForWrite();
            return(editLog);
        }
 internal virtual Storage.StorageDirectory MockStorageDir()
 {
     return(FSImageTestUtil.MockStorageDirectory(this.type, false, Sharpen.Collections.ToArray
                                                     (TestNNStorageRetentionManager.FilesToPaths(this.files), new string[0])));
 }