Commit a4b2f229 authored by Joshua Peraza's avatar Joshua Peraza Committed by Commit Bot

Add CrashFileManager.getMinidumpSansLogcatForPid()

Bug: crashpad:30
Change-Id: Iff2d508ae265882e6187cdc418a8074b7b6203fd
Reviewed-on: https://chromium-review.googlesource.com/1118910
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: default avatarIlya Sherman <isherman@chromium.org>
Reviewed-by: default avatarPeter Wen <wnwen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#581935}
parent 7816ed92
...@@ -349,6 +349,16 @@ public class CrashFileManager { ...@@ -349,6 +349,16 @@ public class CrashFileManager {
} }
} }
/**
* Returns the most recent minidump without a logcat for a given pid, or null if no such
* minidump exists.
*/
public File getMinidumpSansLogcatForPid(int pid) {
File[] foundFiles = listCrashFiles(
Pattern.compile("\\.dmp" + Integer.toString(pid) + "\\z"));
return foundFiles.length > 0 ? foundFiles[0] : null;
}
/** /**
* Returns all minidump files that definitely do not have logcat output, sorted by modification * Returns all minidump files that definitely do not have logcat output, sorted by modification
* time stamp. Note: This method does not provide an "if and only if" test: it may return omit * time stamp. Note: This method does not provide an "if and only if" test: it may return omit
......
...@@ -36,6 +36,7 @@ public class CrashFileManagerTest { ...@@ -36,6 +36,7 @@ public class CrashFileManagerTest {
public CrashTestRule mTestRule = new CrashTestRule(); public CrashTestRule mTestRule = new CrashTestRule();
private static final int TEST_PID = 23; private static final int TEST_PID = 23;
private static final int TEST_PID2 = 24;
private long mInitialModificationTimestamp; private long mInitialModificationTimestamp;
private long mModificationTimestamp; private long mModificationTimestamp;
...@@ -49,6 +50,7 @@ public class CrashFileManagerTest { ...@@ -49,6 +50,7 @@ public class CrashFileManagerTest {
private File mDmpSansLogcatFile1; private File mDmpSansLogcatFile1;
private File mDmpSansLogcatFile2; private File mDmpSansLogcatFile2;
private File mDmpSansLogcatFileForPid2;
private File mDmpFile1; private File mDmpFile1;
private File mDmpFile2; private File mDmpFile2;
...@@ -96,6 +98,11 @@ public class CrashFileManagerTest { ...@@ -96,6 +98,11 @@ public class CrashFileManagerTest {
mDmpSansLogcatFile2.setLastModified(mModificationTimestamp); mDmpSansLogcatFile2.setLastModified(mModificationTimestamp);
mModificationTimestamp += 1000; mModificationTimestamp += 1000;
mDmpSansLogcatFileForPid2 = new File(mTestRule.getCrashDir(), "321_cba.dmp" + TEST_PID2);
mDmpSansLogcatFileForPid2.createNewFile();
mDmpSansLogcatFileForPid2.setLastModified(mModificationTimestamp);
mModificationTimestamp += 1000;
mDmpFile1 = new File(mTestRule.getCrashDir(), "123_abc.dmp.try0"); mDmpFile1 = new File(mTestRule.getCrashDir(), "123_abc.dmp.try0");
mDmpFile1.createNewFile(); mDmpFile1.createNewFile();
mDmpFile1.setLastModified(mModificationTimestamp); mDmpFile1.setLastModified(mModificationTimestamp);
...@@ -193,8 +200,8 @@ public class CrashFileManagerTest { ...@@ -193,8 +200,8 @@ public class CrashFileManagerTest {
CrashFileManager crashFileManager = new CrashFileManager(mTestRule.getCacheDir()); CrashFileManager crashFileManager = new CrashFileManager(mTestRule.getCacheDir());
File[] expectedFiles = new File[] {mLogfile, mUpFile2, mUpFile1, mMultiDigitMaxTriesFile, File[] expectedFiles = new File[] {mLogfile, mUpFile2, mUpFile1, mMultiDigitMaxTriesFile,
mOneBelowMultiDigitMaxTriesFile, mMaxTriesFile, mOneBelowMaxTriesFile, mDmpFile2, mOneBelowMultiDigitMaxTriesFile, mMaxTriesFile, mOneBelowMaxTriesFile, mDmpFile2,
mDmpFile1, mDmpSansLogcatFile2, mDmpSansLogcatFile1, mTmpFile3, mTmpFile2, mDmpFile1, mDmpSansLogcatFileForPid2, mDmpSansLogcatFile2, mDmpSansLogcatFile1,
mTmpFile1}; mTmpFile3, mTmpFile2, mTmpFile1};
File[] actualFiles = crashFileManager.listCrashFiles(null); File[] actualFiles = crashFileManager.listCrashFiles(null);
Assert.assertNotNull(actualFiles); Assert.assertNotNull(actualFiles);
assertArrayEquals( assertArrayEquals(
...@@ -263,12 +270,24 @@ public class CrashFileManagerTest { ...@@ -263,12 +270,24 @@ public class CrashFileManagerTest {
Assert.assertTrue(result.exists()); Assert.assertTrue(result.exists());
} }
@Test
@SmallTest
@Feature({"Android-AppBase"})
public void testGetMinidumpSansLogcatForPid() {
CrashFileManager crashFileManager = new CrashFileManager(mTestRule.getCacheDir());
File expectedFile = mDmpSansLogcatFileForPid2;
File actualFile = crashFileManager.getMinidumpSansLogcatForPid(TEST_PID2);
Assert.assertNotNull(actualFile);
Assert.assertEquals(expectedFile, actualFile);
}
@Test @Test
@SmallTest @SmallTest
@Feature({"Android-AppBase"}) @Feature({"Android-AppBase"})
public void testGetMinidumpsSansLogcat() { public void testGetMinidumpsSansLogcat() {
CrashFileManager crashFileManager = new CrashFileManager(mTestRule.getCacheDir()); CrashFileManager crashFileManager = new CrashFileManager(mTestRule.getCacheDir());
File[] expectedFiles = new File[] {mDmpSansLogcatFile2, mDmpSansLogcatFile1}; File[] expectedFiles =
new File[] {mDmpSansLogcatFileForPid2, mDmpSansLogcatFile2, mDmpSansLogcatFile1};
File[] actualFiles = crashFileManager.getMinidumpsSansLogcat(); File[] actualFiles = crashFileManager.getMinidumpsSansLogcat();
Assert.assertNotNull(actualFiles); Assert.assertNotNull(actualFiles);
assertArrayEquals("Failed to get the correct minidump files in directory", expectedFiles, assertArrayEquals("Failed to get the correct minidump files in directory", expectedFiles,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment