/// <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()); }
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()); }
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)); }
/// <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]))); }