diff --git a/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/FSImageTestUtil.java b/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/FSImageTestUtil.java
index af3097b..e0c00ad 100644
--- a/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/FSImageTestUtil.java
+++ b/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/FSImageTestUtil.java
@@ -35,6 +35,7 @@
 import java.util.Set;
 
 import org.apache.hadoop.hdfs.server.common.Storage.StorageDirectory;
+import org.apache.hadoop.hdfs.server.namenode.FSImageTransactionalStorageInspector.FoundEditLog;
 import org.apache.hadoop.hdfs.server.namenode.FSImageTransactionalStorageInspector.FoundFSImage;
 import org.apache.hadoop.hdfs.server.namenode.NNStorage.NameNodeDirType;
 import org.apache.hadoop.hdfs.util.MD5FileUtils;
@@ -236,6 +237,19 @@
   }
 
   /**
+   * @return the latest edits log, finalized or otherwise, from the given
+   * storage directory.
+   */
+  public static FoundEditLog findLatestEditsLog(StorageDirectory sd)
+  throws IOException {
+    FSImageTransactionalStorageInspector inspector =
+      new FSImageTransactionalStorageInspector();
+    inspector.inspectDirectory(sd);
+    
+    return inspector.foundEditLogs.get(inspector.foundEditLogs.size() - 1);
+  }
+
+  /**
    * Corrupt the given VERSION file by replacing a given
    * key with a new value and re-writing the file.
    * 
diff --git a/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestFSEditLogLoader.java b/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestFSEditLogLoader.java
index 5af9062..2a0c18b 100644
--- a/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestFSEditLogLoader.java
+++ b/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestFSEditLogLoader.java
@@ -57,9 +57,11 @@
       fileSys.mkdirs(new Path("/tmp/tmp" + i));
     }
     StorageDirectory sd = fsimage.getStorage().dirIterator(NameNodeDirType.EDITS).next();
-    File editFile = NNStorage.getStorageFile(sd, NameNodeFile.EDITS);
     cluster.shutdown();
-    
+
+    File editFile = FSImageTestUtil.findLatestEditsLog(sd).getFile();
+    assertTrue("Should exist: " + editFile, editFile.exists());
+
     // Corrupt the edits file.
     long fileLen = editFile.length();
     RandomAccessFile rwf = new RandomAccessFile(editFile, "rw");
