Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1914)

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/crash/MinidumpUploadCallableTest.java

Issue 2307713002: [Android] Provide an API for manually triggering a crash report upload. (Closed)
Patch Set: More test suppressions Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/javatests/src/org/chromium/chrome/browser/crash/MinidumpUploadCallableTest.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/crash/MinidumpUploadCallableTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/crash/MinidumpUploadCallableTest.java
index e2042e1caa32419c04f5bc60f29102375820ec6b..d1b21cc3f7310d8136196d966ceb8e70834508c0 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/crash/MinidumpUploadCallableTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/crash/MinidumpUploadCallableTest.java
@@ -175,6 +175,14 @@ public class MinidumpUploadCallableTest extends CrashTestCase {
}
@SuppressFBWarnings("RV_RETURN_VALUE_IGNORED_BAD_PRACTICE")
+ private void setForcedUpload() throws Exception {
+ File renamed = new File(mCrashDir, mTestUpload.getName().replace(".dmp", ".forced"));
+ mTestUpload.renameTo(renamed);
+ // Update the filename that tests will refer to.
+ mTestUpload = renamed;
+ }
+
+ @SuppressFBWarnings("RV_RETURN_VALUE_IGNORED_BAD_PRACTICE")
@Override
protected void setUp() throws Exception {
super.setUp();
@@ -182,17 +190,10 @@ public class MinidumpUploadCallableTest extends CrashTestCase {
// Delete all logs from previous runs if possible.
mUploadLog.delete();
+ // Any created files will be cleaned up as part of CrashTestCase::tearDown().
createMinidumpFile();
- mExpectedFileAfterUpload = new File(
- mCrashDir,
- mTestUpload.getName().replaceFirst("\\.dmp", ".up"));
- }
-
- @SuppressFBWarnings("RV_RETURN_VALUE_IGNORED_BAD_PRACTICE")
- @Override
- protected void tearDown() throws Exception {
- if (mTestUpload.exists()) mTestUpload.delete();
- super.tearDown();
+ mExpectedFileAfterUpload =
+ new File(mCrashDir, mTestUpload.getName().replace(".dmp", ".up"));
}
@SmallTest
@@ -243,7 +244,7 @@ public class MinidumpUploadCallableTest extends CrashTestCase {
minidumpUploadCallable.call().intValue());
File expectedSkippedFileAfterUpload =
- new File(mCrashDir, mTestUpload.getName().replaceFirst("\\.dmp", ".skipped"));
+ new File(mCrashDir, mTestUpload.getName().replace(".dmp", ".skipped"));
assertTrue(expectedSkippedFileAfterUpload.exists());
assertFalse(mExpectedFileAfterUpload.exists());
}
@@ -295,7 +296,7 @@ public class MinidumpUploadCallableTest extends CrashTestCase {
minidumpUploadCallable.call().intValue());
File expectedSkippedFileAfterUpload =
- new File(mCrashDir, mTestUpload.getName().replaceFirst("\\.dmp", ".skipped"));
+ new File(mCrashDir, mTestUpload.getName().replace(".dmp", ".skipped"));
assertTrue(expectedSkippedFileAfterUpload.exists());
assertFalse(mExpectedFileAfterUpload.exists());
}
@@ -373,6 +374,173 @@ public class MinidumpUploadCallableTest extends CrashTestCase {
assertValidUploadLogEntry();
}
+ @SmallTest
+ @Feature({"Android-AppBase"})
+ public void testCallWhenCurrentlyPermitted_ForcedUpload() throws Exception {
+ setForcedUpload();
+ CrashReportingPermissionManager testPermManager =
+ new MockCrashReportingPermissionManager() {
+ {
+ mIsInSample = true;
+ mIsPermitted = true;
+ mIsUserPermitted = true;
+ mIsCommandLineDisabled = false;
+ mIsLimited = false;
+ mIsEnabledForTests = false;
+ }
+ };
+
+ HttpURLConnectionFactory httpURLConnectionFactory = new TestHttpURLConnectionFactory();
+
+ MinidumpUploadCallable minidumpUploadCallable =
+ new MockMinidumpUploadCallable(httpURLConnectionFactory, testPermManager);
+ assertEquals(
+ MinidumpUploadCallable.UPLOAD_SUCCESS, minidumpUploadCallable.call().intValue());
+ assertTrue(mExpectedFileAfterUpload.exists());
+ assertValidUploadLogEntry();
+ }
+
+ @SmallTest
+ @Feature({"Android-AppBase"})
+ public void testCallNotPermittedByUser_ForcedUpload() throws Exception {
+ setForcedUpload();
+ CrashReportingPermissionManager testPermManager =
+ new MockCrashReportingPermissionManager() {
+ {
+ mIsInSample = true;
+ mIsPermitted = false;
+ mIsUserPermitted = false;
+ mIsCommandLineDisabled = false;
+ mIsLimited = false;
+ mIsEnabledForTests = false;
+ }
+ };
+
+ HttpURLConnectionFactory httpURLConnectionFactory = new TestHttpURLConnectionFactory();
+
+ MinidumpUploadCallable minidumpUploadCallable =
+ new MockMinidumpUploadCallable(httpURLConnectionFactory, testPermManager);
+ assertEquals(
+ MinidumpUploadCallable.UPLOAD_SUCCESS, minidumpUploadCallable.call().intValue());
+
+ File expectedSkippedFileAfterUpload =
+ new File(mCrashDir, mTestUpload.getName().replace(".forced", ".skipped"));
+ assertFalse(expectedSkippedFileAfterUpload.exists());
+ assertTrue(mExpectedFileAfterUpload.exists());
+ }
+
+ @SmallTest
+ @Feature({"Android-AppBase"})
+ public void testCallNotPermittedByCommandLine_ForcedUpload() throws Exception {
+ setForcedUpload();
+ CrashReportingPermissionManager testPermManager =
+ new MockCrashReportingPermissionManager() {
+ {
+ mIsInSample = true;
+ mIsPermitted = true;
+ mIsUserPermitted = true;
+ mIsCommandLineDisabled = true;
+ mIsLimited = false;
+ mIsEnabledForTests = false;
+ }
+ };
+
+ HttpURLConnectionFactory httpURLConnectionFactory = new FailHttpURLConnectionFactory();
+
+ MinidumpUploadCallable minidumpUploadCallable =
+ new MockMinidumpUploadCallable(httpURLConnectionFactory, testPermManager);
+ assertEquals(MinidumpUploadCallable.UPLOAD_COMMANDLINE_DISABLED,
+ minidumpUploadCallable.call().intValue());
+ assertFalse(mExpectedFileAfterUpload.exists());
+ }
+
+ @SmallTest
+ @Feature({"Android-AppBase"})
+ public void testCallPermittedButNotInSample_ForcedUpload() throws Exception {
+ setForcedUpload();
+ CrashReportingPermissionManager testPermManager =
+ new MockCrashReportingPermissionManager() {
+ {
+ mIsInSample = false;
+ mIsPermitted = true;
+ mIsUserPermitted = true;
+ mIsCommandLineDisabled = false;
+ mIsLimited = false;
+ mIsEnabledForTests = false;
+ }
+ };
+
+ HttpURLConnectionFactory httpURLConnectionFactory = new TestHttpURLConnectionFactory();
+
+ MinidumpUploadCallable minidumpUploadCallable =
+ new MockMinidumpUploadCallable(httpURLConnectionFactory, testPermManager);
+ assertEquals(
+ MinidumpUploadCallable.UPLOAD_SUCCESS, minidumpUploadCallable.call().intValue());
+
+ File expectedSkippedFileAfterUpload =
+ new File(mCrashDir, mTestUpload.getName().replace(".forced", ".skipped"));
+ assertFalse(expectedSkippedFileAfterUpload.exists());
+ assertTrue(mExpectedFileAfterUpload.exists());
+ }
+
+ @SmallTest
+ @Feature({"Android-AppBase"})
+ public void testCallPermittedButNotUnderCurrentCircumstances_ForcedUpload() throws Exception {
+ setForcedUpload();
+ CrashReportingPermissionManager testPermManager =
+ new MockCrashReportingPermissionManager() {
+ {
+ mIsInSample = true;
+ mIsPermitted = false;
+ mIsUserPermitted = true;
+ mIsCommandLineDisabled = false;
+ mIsLimited = false;
+ mIsEnabledForTests = false;
+ }
+ };
+
+ HttpURLConnectionFactory httpURLConnectionFactory = new TestHttpURLConnectionFactory();
+
+ MinidumpUploadCallable minidumpUploadCallable =
+ new MockMinidumpUploadCallable(httpURLConnectionFactory, testPermManager);
+ assertEquals(
+ MinidumpUploadCallable.UPLOAD_SUCCESS, minidumpUploadCallable.call().intValue());
+
+ File expectedSkippedFileAfterUpload =
+ new File(mCrashDir, mTestUpload.getName().replace(".forced", ".skipped"));
+ assertFalse(expectedSkippedFileAfterUpload.exists());
+ assertTrue(mExpectedFileAfterUpload.exists());
+ }
+
+ @SmallTest
+ @Feature({"Android-AppBase"})
+ public void testCrashUploadConstrainted_ForcedUpload() throws Exception {
+ setForcedUpload();
+ CrashReportingPermissionManager testPermManager =
+ new MockCrashReportingPermissionManager() {
+ {
+ mIsInSample = true;
+ mIsPermitted = true;
+ mIsUserPermitted = true;
+ mIsCommandLineDisabled = false;
+ mIsLimited = true;
+ mIsEnabledForTests = false;
+ }
+ };
+
+ HttpURLConnectionFactory httpURLConnectionFactory = new TestHttpURLConnectionFactory();
+
+ MinidumpUploadCallable minidumpUploadCallable =
+ new MockMinidumpUploadCallable(httpURLConnectionFactory, testPermManager);
+ assertEquals(
+ MinidumpUploadCallable.UPLOAD_SUCCESS, minidumpUploadCallable.call().intValue());
+
+ File expectedSkippedFileAfterUpload =
+ new File(mCrashDir, mTestUpload.getName().replace(".forced", ".skipped"));
+ assertFalse(expectedSkippedFileAfterUpload.exists());
+ assertTrue(mExpectedFileAfterUpload.exists());
+ }
+
private void extendUploadFile(int numBytes) throws FileNotFoundException, IOException {
FileOutputStream stream = null;
try {

Powered by Google App Engine
This is Rietveld 408576698