Index: chrome/android/javatests/src/org/chromium/chrome/browser/crash/CrashFileManagerTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/crash/CrashFileManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/crash/CrashFileManagerTest.java |
index f5b671a2361e53a84ad7aff54ee1b3bfb55526e0..f860305b7cd829f43c17ca924c571a3879f34c0f 100644 |
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/crash/CrashFileManagerTest.java |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/crash/CrashFileManagerTest.java |
@@ -14,6 +14,8 @@ import org.chromium.base.test.util.Feature; |
import java.io.File; |
import java.io.IOException; |
import java.util.Arrays; |
+import java.util.Date; |
+import java.util.concurrent.TimeUnit; |
import java.util.regex.Pattern; |
/** |
@@ -32,6 +34,8 @@ public class CrashFileManagerTest extends CrashTestCase { |
private File mUpFile1; |
private File mUpFile2; |
+ private File mLogfile; |
+ |
@SuppressFBWarnings("RV_RETURN_VALUE_IGNORED_BAD_PRACTICE") |
@Override |
protected void setUp() throws Exception { |
@@ -58,6 +62,9 @@ public class CrashFileManagerTest extends CrashTestCase { |
mUpFile2 = new File(mCrashDir, "chromium-renderer_abcd.up" + TEST_PID); |
mUpFile2.createNewFile(); |
+ |
+ mLogfile = new File(mCrashDir, CrashFileManager.CRASH_DUMP_LOGFILE); |
+ mLogfile.createNewFile(); |
} |
@SmallTest |
@@ -108,6 +115,18 @@ public class CrashFileManagerTest extends CrashTestCase { |
@SmallTest |
@Feature({"Android-AppBase"}) |
+ public void testGetAllFilesSorted() { |
+ CrashFileManager crashFileManager = new CrashFileManager(mCacheDir); |
+ File[] expectedFiles = new File[] {mLogfile, mUpFile2, mUpFile1, mDmpFile2, mDmpFile1, |
+ mTmpFile3, mTmpFile2, mTmpFile1}; |
+ File[] actualFiles = crashFileManager.getAllFilesSorted(); |
+ assertNotNull(actualFiles); |
+ MoreAsserts.assertEquals( |
+ "Failed to sort all files by modification time", expectedFiles, actualFiles); |
+ } |
+ |
+ @SmallTest |
+ @Feature({"Android-AppBase"}) |
public void testGetCrashDirectory() { |
CrashFileManager crashFileManager = new CrashFileManager(mCacheDir); |
File actualFile = crashFileManager.getCrashDirectory(); |
@@ -190,4 +209,73 @@ public class CrashFileManagerTest extends CrashTestCase { |
assertFalse(mDmpFile1.exists()); |
assertTrue(new File(mCrashDir, "123_abc.skipped0").exists()); |
} |
+ |
+ @SuppressFBWarnings("RV_RETURN_VALUE_IGNORED_BAD_PRACTICE") |
+ @SmallTest |
+ @Feature({"Android-AppBase"}) |
+ public void testCleanOutAllNonFreshMinidumpFiles() throws IOException { |
+ // Create some simulated old files. |
+ long oldTimestamp = new Date().getTime() - TimeUnit.MILLISECONDS.convert(31, TimeUnit.DAYS); |
+ File old1 = new File(mCrashDir, "chromium-renderer-minidump-cooo10ff.dmp"); |
+ File old2 = new File(mCrashDir, "chromium-renderer-minidump-cooo10ff.up0"); |
+ File old3 = new File(mCrashDir, "chromium-renderer-minidump-cooo10ff.logcat"); |
+ old1.setLastModified(oldTimestamp); |
+ old2.setLastModified(oldTimestamp - 1); |
+ old3.setLastModified(oldTimestamp - 2); |
+ |
+ // These will be the most recent files in the directory, after all successfully uploaded |
+ // files and all temp files are removed. |
+ File[] recentFiles = new File[3 * CrashFileManager.MAX_CRASH_REPORTS_TO_KEEP]; |
+ for (int i = 0; i < CrashFileManager.MAX_CRASH_REPORTS_TO_KEEP; ++i) { |
+ String prefix = "chromium-renderer-minidump-deadbeef" + i; |
+ // There is no reason why both a minidump and failed upload should exist at the same |
+ // time, but the cleanup code should be robust to it anyway. |
+ File recentMinidump = new File(mCrashDir, prefix + ".dmp"); |
+ File recentFailedUpload = new File(mCrashDir, prefix + ".up0.try0"); |
+ File recentLogcatFile = new File(mCrashDir, prefix + ".logcat"); |
+ recentMinidump.createNewFile(); |
+ recentFailedUpload.createNewFile(); |
+ recentLogcatFile.createNewFile(); |
+ recentFiles[3 * i + 0] = recentMinidump; |
+ recentFiles[3 * i + 1] = recentFailedUpload; |
+ recentFiles[3 * i + 2] = recentLogcatFile; |
+ } |
+ |
+ // Create some additional successful uploads. |
+ File success1 = new File(mCrashDir, "chromium-renderer-minidump-cafebebe1.up0"); |
+ File success2 = new File(mCrashDir, "chromium-renderer-minidump-cafebebe2.up1"); |
+ File success3 = new File(mCrashDir, "chromium-renderer-minidump-cafebebe3.up2"); |
+ success1.createNewFile(); |
+ success2.createNewFile(); |
+ success3.createNewFile(); |
+ |
+ // Create some additional temp files. |
+ File temp1 = new File(mCrashDir, "chromium-renderer-minidump-oooff1ce1.tmp"); |
+ File temp2 = new File(mCrashDir, "chromium-renderer-minidump-oooff1ce2.tmp"); |
+ temp1.createNewFile(); |
+ temp2.createNewFile(); |
+ |
+ CrashFileManager crashFileManager = new CrashFileManager(mCacheDir); |
+ crashFileManager.cleanOutAllNonFreshMinidumpFiles(); |
+ |
+ assertFalse(old1.exists()); |
+ assertFalse(old2.exists()); |
+ assertFalse(old3.exists()); |
+ for (File f : recentFiles) { |
+ assertTrue(f.exists()); |
+ } |
+ assertTrue(mLogfile.exists()); |
+ assertFalse(mTmpFile1.exists()); |
+ assertFalse(mTmpFile2.exists()); |
+ assertFalse(mTmpFile3.exists()); |
+ assertFalse(mDmpFile1.exists()); |
+ assertFalse(mDmpFile2.exists()); |
+ assertFalse(mUpFile1.exists()); |
+ assertFalse(mUpFile2.exists()); |
+ assertFalse(temp1.exists()); |
+ assertFalse(temp2.exists()); |
+ assertFalse(success1.exists()); |
+ assertFalse(success2.exists()); |
+ assertFalse(success3.exists()); |
+ } |
} |