| Index: components/minidump_uploader/android/javatests/src/org/chromium/components/minidump_uploader/CrashFileManagerTest.java
|
| diff --git a/components/minidump_uploader/android/javatests/src/org/chromium/components/minidump_uploader/CrashFileManagerTest.java b/components/minidump_uploader/android/javatests/src/org/chromium/components/minidump_uploader/CrashFileManagerTest.java
|
| index cd3a3af52d2ad121f73656a681d55f6f6a091708..31c8dab302530611d8b322a6c6247292e6feb8ed 100644
|
| --- a/components/minidump_uploader/android/javatests/src/org/chromium/components/minidump_uploader/CrashFileManagerTest.java
|
| +++ b/components/minidump_uploader/android/javatests/src/org/chromium/components/minidump_uploader/CrashFileManagerTest.java
|
| @@ -38,6 +38,9 @@ public class CrashFileManagerTest extends CrashTestCase {
|
| private File mTmpFile2;
|
| private File mTmpFile3;
|
|
|
| + private File mDmpSansLogcatFile1;
|
| + private File mDmpSansLogcatFile2;
|
| +
|
| private File mDmpFile1;
|
| private File mDmpFile2;
|
|
|
| @@ -76,7 +79,17 @@ public class CrashFileManagerTest extends CrashTestCase {
|
| mTmpFile3.setLastModified(mModificationTimestamp);
|
| mModificationTimestamp += 1000;
|
|
|
| - mDmpFile1 = new File(mCrashDir, "123_abc.dmp0");
|
| + mDmpSansLogcatFile1 = new File(mCrashDir, "123_abc.dmp");
|
| + mDmpSansLogcatFile1.createNewFile();
|
| + mDmpSansLogcatFile1.setLastModified(mModificationTimestamp);
|
| + mModificationTimestamp += 1000;
|
| +
|
| + mDmpSansLogcatFile2 = new File(mCrashDir, "chromium-renderer_abc.dmp" + TEST_PID);
|
| + mDmpSansLogcatFile2.createNewFile();
|
| + mDmpSansLogcatFile2.setLastModified(mModificationTimestamp);
|
| + mModificationTimestamp += 1000;
|
| +
|
| + mDmpFile1 = new File(mCrashDir, "123_abc.dmp.try0");
|
| mDmpFile1.createNewFile();
|
| mDmpFile1.setLastModified(mModificationTimestamp);
|
| mModificationTimestamp += 1000;
|
| @@ -110,7 +123,7 @@ public class CrashFileManagerTest extends CrashTestCase {
|
| mMultiDigitMaxTriesFile.setLastModified(mModificationTimestamp);
|
| mModificationTimestamp += 1000;
|
|
|
| - mUpFile1 = new File(mCrashDir, "123_abcd.up0");
|
| + mUpFile1 = new File(mCrashDir, "123_abcd.up.try0");
|
| mUpFile1.createNewFile();
|
| mUpFile1.setLastModified(mModificationTimestamp);
|
| mModificationTimestamp += 1000;
|
| @@ -142,7 +155,7 @@ public class CrashFileManagerTest extends CrashTestCase {
|
| public void testGetMatchingFiles() {
|
| CrashFileManager crashFileManager = new CrashFileManager(mCacheDir);
|
| // Three files begin with 123.
|
| - File[] expectedFiles = new File[] { mUpFile1, mDmpFile1, mTmpFile1 };
|
| + File[] expectedFiles = new File[] {mUpFile1, mDmpFile1, mDmpSansLogcatFile1, mTmpFile1};
|
| Pattern testPattern = Pattern.compile("^123");
|
| File[] actualFiles = crashFileManager.listCrashFiles(testPattern);
|
| assertNotNull(actualFiles);
|
| @@ -167,7 +180,8 @@ public class CrashFileManagerTest extends CrashTestCase {
|
| CrashFileManager crashFileManager = new CrashFileManager(mCacheDir);
|
| File[] expectedFiles = new File[] {mLogfile, mUpFile2, mUpFile1, mMultiDigitMaxTriesFile,
|
| mOneBelowMultiDigitMaxTriesFile, mMaxTriesFile, mOneBelowMaxTriesFile, mDmpFile2,
|
| - mDmpFile1, mTmpFile3, mTmpFile2, mTmpFile1};
|
| + mDmpFile1, mDmpSansLogcatFile2, mDmpSansLogcatFile1, mTmpFile3, mTmpFile2,
|
| + mTmpFile1};
|
| File[] actualFiles = crashFileManager.listCrashFiles(null);
|
| assertNotNull(actualFiles);
|
| MoreAsserts.assertEquals(
|
| @@ -193,8 +207,61 @@ public class CrashFileManagerTest extends CrashTestCase {
|
|
|
| @SmallTest
|
| @Feature({"Android-AppBase"})
|
| + public void testIsMinidumpSansLogcat() {
|
| + assertTrue(CrashFileManager.isMinidumpSansLogcat("foo.dmp"));
|
| + assertTrue(CrashFileManager.isMinidumpSansLogcat("foo.dmp" + TEST_PID));
|
| +
|
| + assertFalse(CrashFileManager.isMinidumpSansLogcat("foo"));
|
| + assertFalse(CrashFileManager.isMinidumpSansLogcat("foo.other"));
|
| + assertFalse(CrashFileManager.isMinidumpSansLogcat("foo.dmp.try0"));
|
| + assertFalse(CrashFileManager.isMinidumpSansLogcat("foo.dmp.try2"));
|
| + assertFalse(CrashFileManager.isMinidumpSansLogcat("foo.dmpblah"));
|
| + assertFalse(CrashFileManager.isMinidumpSansLogcat("foo.dmp.other"));
|
| + assertFalse(CrashFileManager.isMinidumpSansLogcat("foo.dmp" + TEST_PID + ".try0"));
|
| + assertFalse(CrashFileManager.isMinidumpSansLogcat("foo.dmp" + TEST_PID + ".try2"));
|
| + assertFalse(CrashFileManager.isMinidumpSansLogcat("foo.dmpblah" + TEST_PID));
|
| + assertFalse(CrashFileManager.isMinidumpSansLogcat("foo.dmp" + TEST_PID + ".other"));
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Android-AppBase"})
|
| + @SuppressFBWarnings("RV_RETURN_VALUE_IGNORED_BAD_PRACTICE")
|
| + public void testSetReadyForUpload_MinidumpWithoutPid() throws IOException {
|
| + File minidumpWithoutLogcat = new File(mCrashDir, "foo.dmp");
|
| + minidumpWithoutLogcat.createNewFile();
|
| +
|
| + File result = CrashFileManager.trySetReadyForUpload(minidumpWithoutLogcat);
|
| + assertEquals("foo.dmp.try0", result.getName());
|
| + assertTrue(result.exists());
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Android-AppBase"})
|
| @SuppressFBWarnings("RV_RETURN_VALUE_IGNORED_BAD_PRACTICE")
|
| - public void testGetAllMinidumpFiles() throws IOException {
|
| + public void testSetReadyForUpload_MinidumpWithPid() throws IOException {
|
| + File minidumpWithoutLogcat = new File(mCrashDir, "foo.dmp" + TEST_PID);
|
| + minidumpWithoutLogcat.createNewFile();
|
| +
|
| + File result = CrashFileManager.trySetReadyForUpload(minidumpWithoutLogcat);
|
| + assertEquals("foo.dmp" + TEST_PID + ".try0", result.getName());
|
| + assertTrue(result.exists());
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Android-AppBase"})
|
| + public void testGetMinidumpsSansLogcat() throws IOException {
|
| + CrashFileManager crashFileManager = new CrashFileManager(mCacheDir);
|
| + File[] expectedFiles = new File[] {mDmpSansLogcatFile2, mDmpSansLogcatFile1};
|
| + File[] actualFiles = crashFileManager.getMinidumpsSansLogcat();
|
| + assertNotNull(actualFiles);
|
| + MoreAsserts.assertEquals("Failed to get the correct minidump files in directory",
|
| + expectedFiles, actualFiles);
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Android-AppBase"})
|
| + @SuppressFBWarnings("RV_RETURN_VALUE_IGNORED_BAD_PRACTICE")
|
| + public void testGetMinidumpsReadyForUpload() throws IOException {
|
| File forcedFile = new File(mCrashDir, "456_def.forced" + TEST_PID + ".try2");
|
| forcedFile.createNewFile();
|
| forcedFile.setLastModified(mModificationTimestamp);
|
| @@ -202,7 +269,7 @@ public class CrashFileManagerTest extends CrashTestCase {
|
|
|
| CrashFileManager crashFileManager = new CrashFileManager(mCacheDir);
|
| File[] expectedFiles = new File[] {forcedFile, mOneBelowMaxTriesFile, mDmpFile2, mDmpFile1};
|
| - File[] actualFiles = crashFileManager.getAllMinidumpFiles(MAX_TRIES_ALLOWED);
|
| + File[] actualFiles = crashFileManager.getMinidumpsReadyForUpload(MAX_TRIES_ALLOWED);
|
| assertNotNull(actualFiles);
|
| MoreAsserts.assertEquals("Failed to get the correct minidump files in directory",
|
| expectedFiles, actualFiles);
|
| @@ -210,11 +277,12 @@ public class CrashFileManagerTest extends CrashTestCase {
|
|
|
| @SmallTest
|
| @Feature({"Android-AppBase"})
|
| - public void testGetAllMinidumpFilesMultiDigitMaxTries() {
|
| + public void testGetMinidumpsReadyForUpload_MultiDigitMaxTries() {
|
| CrashFileManager crashFileManager = new CrashFileManager(mCacheDir);
|
| File[] expectedFiles = new File[] {mOneBelowMultiDigitMaxTriesFile, mMaxTriesFile,
|
| mOneBelowMaxTriesFile, mDmpFile2, mDmpFile1};
|
| - File[] actualFiles = crashFileManager.getAllMinidumpFiles(MULTI_DIGIT_MAX_TRIES_ALLOWED);
|
| + File[] actualFiles =
|
| + crashFileManager.getMinidumpsReadyForUpload(MULTI_DIGIT_MAX_TRIES_ALLOWED);
|
| assertNotNull(actualFiles);
|
| MoreAsserts.assertEquals("Failed to get the correct minidump files in directory",
|
| expectedFiles, actualFiles);
|
| @@ -366,7 +434,7 @@ public class CrashFileManagerTest extends CrashTestCase {
|
| public void testMarkUploadSuccess() {
|
| CrashFileManager.markUploadSuccess(mDmpFile1);
|
| assertFalse(mDmpFile1.exists());
|
| - assertTrue(new File(mCrashDir, "123_abc.up0").exists());
|
| + assertTrue(new File(mCrashDir, "123_abc.up.try0").exists());
|
|
|
| CrashFileManager.markUploadSuccess(mDmpFile2);
|
| assertFalse(mDmpFile2.exists());
|
| @@ -389,7 +457,7 @@ public class CrashFileManagerTest extends CrashTestCase {
|
| public void testMarkUploadSkipped() {
|
| CrashFileManager.markUploadSkipped(mDmpFile1);
|
| assertFalse(mDmpFile1.exists());
|
| - assertTrue(new File(mCrashDir, "123_abc.skipped0").exists());
|
| + assertTrue(new File(mCrashDir, "123_abc.skipped.try0").exists());
|
|
|
| CrashFileManager.markUploadSkipped(mDmpFile2);
|
| assertFalse(mDmpFile2.exists());
|
| @@ -400,43 +468,44 @@ public class CrashFileManagerTest extends CrashTestCase {
|
| @SmallTest
|
| @Feature({"Android-AppBase"})
|
| public void testFilterMinidumpFilesOnUid() {
|
| - assertArrayEquals(new File[] {new File("1_md.dmp")},
|
| - CrashFileManager.filterMinidumpFilesOnUid(
|
| - new File[] {new File("1_md.dmp")}, 1).toArray());
|
| + assertArrayEquals(new File[] {new File("1_md.dmp.try0")},
|
| + CrashFileManager.filterMinidumpFilesOnUid(new File[] {new File("1_md.dmp.try0")}, 1)
|
| + .toArray());
|
| + assertArrayEquals(new File[0],
|
| + CrashFileManager
|
| + .filterMinidumpFilesOnUid(new File[] {new File("1_md.dmp.try0")}, 12)
|
| + .toArray());
|
| assertArrayEquals(new File[0],
|
| - CrashFileManager.filterMinidumpFilesOnUid(
|
| - new File[] {new File("1_md.dmp")}, 12).toArray());
|
| + CrashFileManager
|
| + .filterMinidumpFilesOnUid(new File[] {new File("12_md.dmp.try0")}, 1)
|
| + .toArray());
|
| + assertArrayEquals(new File[] {new File("1000_md.dmp.try0")},
|
| + CrashFileManager
|
| + .filterMinidumpFilesOnUid(new File[] {new File("1000_md.dmp.try0")}, 1000)
|
| + .toArray());
|
| assertArrayEquals(new File[0],
|
| - CrashFileManager.filterMinidumpFilesOnUid(
|
| - new File[] {new File("12_md.dmp")}, 1).toArray());
|
| - assertArrayEquals(new File[] {new File("1000_md.dmp")},
|
| - CrashFileManager.filterMinidumpFilesOnUid(
|
| - new File[] {new File("1000_md.dmp")}, 1000).toArray());
|
| - assertArrayEquals(new File[0], CrashFileManager.filterMinidumpFilesOnUid(
|
| - new File[] {new File("-1000_md.dmp")}, -10).toArray());
|
| - assertArrayEquals(new File[] {new File("-10_md.dmp")},
|
| - CrashFileManager.filterMinidumpFilesOnUid(
|
| - new File[] {new File("-10_md.dmp")}, -10).toArray());
|
| - assertArrayEquals(new File[] {
|
| - new File("12_md.dmp"),
|
| - new File("12_.dmp"),
|
| - new File("12_minidump.dmp"),
|
| - new File("12_1_md.dmp")},
|
| - CrashFileManager.filterMinidumpFilesOnUid(new File[] {
|
| - new File("12_md.dmp"),
|
| - new File("100_.dmp"),
|
| - new File("4000_.dmp"),
|
| - new File("12_.dmp"),
|
| - new File("12_minidump.dmp"),
|
| - new File("23_.dmp"),
|
| - new File("12-.dmp"),
|
| - new File("12*.dmp"),
|
| - new File("12<.dmp"),
|
| - new File("12=.dmp"),
|
| - new File("12+.dmp"),
|
| - new File("12_1_md.dmp"),
|
| - new File("1_12_md.dmp")},
|
| - 12 /* uid */).toArray());
|
| + CrashFileManager
|
| + .filterMinidumpFilesOnUid(new File[] {new File("-1000_md.dmp.try0")}, -10)
|
| + .toArray());
|
| + assertArrayEquals(new File[] {new File("-10_md.dmp.try0")},
|
| + CrashFileManager
|
| + .filterMinidumpFilesOnUid(new File[] {new File("-10_md.dmp.try0")}, -10)
|
| + .toArray());
|
| +
|
| + File[] expected = new File[] {new File("12_md.dmp.try0"), new File("12_.dmp.try0"),
|
| + new File("12_minidump.dmp.try0"), new File("12_1_md.dmp.try0")};
|
| + assertArrayEquals(expected,
|
| + CrashFileManager
|
| + .filterMinidumpFilesOnUid(
|
| + new File[] {new File("12_md.dmp.try0"), new File("100_.dmp.try0"),
|
| + new File("4000_.dmp.try0"), new File("12_.dmp.try0"),
|
| + new File("12_minidump.dmp.try0"), new File("23_.dmp.try0"),
|
| + new File("12-.dmp.try0"), new File("12*.dmp.try0"),
|
| + new File("12<.dmp.try0"), new File("12=.dmp.try0"),
|
| + new File("12+.dmp.try0"), new File("12_1_md.dmp.try0"),
|
| + new File("1_12_md.dmp.try0")},
|
| + 12 /* uid */)
|
| + .toArray());
|
| }
|
|
|
| /**
|
| @@ -477,16 +546,16 @@ public class CrashFileManagerTest extends CrashTestCase {
|
| CrashFileManager fileManager = new CrashFileManager(mCacheDir);
|
| // Delete existing minidumps to ensure they don't interfere with this test.
|
| deleteFilesInDirIfExists(fileManager.getCrashDirectory());
|
| - assertEquals(0, fileManager.getAllMinidumpFiles(10000 /* maxTries */).length);
|
| + assertEquals(0, fileManager.getMinidumpsReadyForUpload(10000 /* maxTries */).length);
|
| File tmpCopyDir = new File(getExistingCacheDir(), "tmpDir");
|
|
|
| // Note that these minidump files are set up directly in the cache dir - not in the crash
|
| // dir. This is to ensure the CrashFileManager doesn't see these minidumps without us first
|
| // copying them.
|
| - File minidumpToCopy = new File(getExistingCacheDir(), "toCopy.dmp");
|
| + File minidumpToCopy = new File(getExistingCacheDir(), "toCopy.dmp.try0");
|
| setUpMinidumpFile(minidumpToCopy, "BOUNDARY");
|
| // Ensure we didn't add any new minidumps to the crash directory.
|
| - assertEquals(0, fileManager.getAllMinidumpFiles(10000 /* maxTries */).length);
|
| + assertEquals(0, fileManager.getMinidumpsReadyForUpload(10000 /* maxTries */).length);
|
|
|
| int minidumpLimit = perUid ? CrashFileManager.MAX_CRASH_REPORTS_TO_UPLOAD_PER_UID
|
| : CrashFileManager.MAX_CRASH_REPORTS_TO_UPLOAD;
|
| @@ -499,7 +568,7 @@ public class CrashFileManagerTest extends CrashTestCase {
|
|
|
| // Update time-stamps of copied files.
|
| long initialTimestamp = new Date().getTime();
|
| - File[] minidumps = fileManager.getAllMinidumpFiles(10000 /* maxTries */);
|
| + File[] minidumps = fileManager.getMinidumpsReadyForUpload(10000 /* maxTries */);
|
| for (int n = 0; n < minidumps.length; n++) {
|
| if (!minidumps[n].setLastModified(initialTimestamp + n * 1000)) {
|
| throw new RuntimeException(
|
| @@ -507,7 +576,7 @@ public class CrashFileManagerTest extends CrashTestCase {
|
| }
|
| }
|
|
|
| - File[] allMinidumps = fileManager.getAllMinidumpFiles(10000 /* maxTries */);
|
| + File[] allMinidumps = fileManager.getMinidumpsReadyForUpload(10000 /* maxTries */);
|
| assertEquals(minidumpLimit, allMinidumps.length);
|
|
|
| File oldestMinidump = getOldestFile(allMinidumps);
|
| @@ -516,8 +585,8 @@ public class CrashFileManagerTest extends CrashTestCase {
|
| // existing minidump to be deleted.
|
| createFdForandCopyFile(fileManager, minidumpToCopy, tmpCopyDir, 1 /* uid */,
|
| true /* shouldSucceed */);
|
| - assertEquals(minidumpLimit,
|
| - fileManager.getAllMinidumpFiles(10000 /* maxTries */).length);
|
| + assertEquals(
|
| + minidumpLimit, fileManager.getMinidumpsReadyForUpload(10000 /* maxTries */).length);
|
| // Ensure we removed the oldest file.
|
| assertFalse(oldestMinidump.exists());
|
| }
|
| @@ -566,13 +635,13 @@ public class CrashFileManagerTest extends CrashTestCase {
|
| CrashFileManager fileManager = new CrashFileManager(mCacheDir);
|
| // Delete existing minidumps to ensure they don't interfere with this test.
|
| deleteFilesInDirIfExists(fileManager.getCrashDirectory());
|
| - assertEquals(0, fileManager.getAllMinidumpFiles(10000 /* maxTries */).length);
|
| + assertEquals(0, fileManager.getMinidumpsReadyForUpload(10000 /* maxTries */).length);
|
| File tmpCopyDir = new File(getExistingCacheDir(), "tmpDir");
|
|
|
| // Note that these minidump files are set up directly in the cache dir - not in the crash
|
| // dir. This is to ensure the CrashFileManager doesn't see these minidumps without us first
|
| // copying them.
|
| - File minidumpToCopy = new File(getExistingCacheDir(), "toCopy.dmp");
|
| + File minidumpToCopy = new File(getExistingCacheDir(), "toCopy.dmp.try0");
|
| setUpMinidumpFile(minidumpToCopy, "BOUNDARY");
|
| // Write ~1MB data into the minidump file.
|
| final int kilo = 1024;
|
| @@ -589,7 +658,7 @@ public class CrashFileManagerTest extends CrashTestCase {
|
| createFdForandCopyFile(fileManager, minidumpToCopy, tmpCopyDir, 0 /* uid */,
|
| false /* shouldSucceed */);
|
| assertEquals(0, tmpCopyDir.listFiles().length);
|
| - assertEquals(0, fileManager.getAllMinidumpFiles(10000 /* maxTries */).length);
|
| + assertEquals(0, fileManager.getMinidumpsReadyForUpload(10000 /* maxTries */).length);
|
| }
|
|
|
| @SuppressFBWarnings("RV_RETURN_VALUE_IGNORED_BAD_PRACTICE")
|
| @@ -619,7 +688,7 @@ public class CrashFileManagerTest extends CrashTestCase {
|
| }
|
|
|
| // Create some additional successful uploads.
|
| - File success1 = new File(mCrashDir, "chromium-renderer-minidump-cafebebe1.up0");
|
| + File success1 = new File(mCrashDir, "chromium-renderer-minidump-cafebebe1.up.try0");
|
| File success2 =
|
| new File(mCrashDir, "chromium-renderer-minidump-cafebebe2.up" + TEST_PID + ".try1");
|
| File success3 =
|
|
|