Skip to content

Commit

Permalink
[Fixit] Migrated minidump_uploader tests to Robolectric.
Browse files Browse the repository at this point in the history
As part of this, changed CrashTestRule to not init the browser process, and moved that init to the one test that cared about.
Fixed: 1332331, 1332332, 1332333, 1332334

Change-Id: Ib374f962bdd73ae12d75f97b6bd7f2a50f557f88
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3703465
Commit-Queue: Yaron Friedman <yfriedman@chromium.org>
Reviewed-by: Sam Maier <smaier@chromium.org>
Reviewed-by: Bo Liu <boliu@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1014466}
  • Loading branch information
yfriedman authored and Chromium LUCI CQ committed Jun 15, 2022
1 parent 44ee2be commit be235e8
Show file tree
Hide file tree
Showing 9 changed files with 30 additions and 44 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import androidx.test.filters.MediumTest;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
Expand All @@ -25,6 +26,7 @@
import org.chromium.base.Callback;
import org.chromium.base.FileUtils;
import org.chromium.base.ThreadUtils;
import org.chromium.base.library_loader.LibraryLoader;
import org.chromium.base.library_loader.LibraryProcessType;
import org.chromium.components.minidump_uploader.CrashFileManager;
import org.chromium.components.minidump_uploader.CrashTestRule;
Expand Down Expand Up @@ -54,7 +56,7 @@
@OnlyRunIn(SINGLE_PROCESS)
public class MinidumpUploadJobTest {
@Rule
public CrashTestRule mTestRule = new CrashTestRule(LibraryProcessType.PROCESS_WEBVIEW) {
public CrashTestRule mTestRule = new CrashTestRule() {
@Override
public File getExistingCacheDir() {
return SystemWideCrashDirectories.getOrCreateWebViewCrashDir();
Expand Down Expand Up @@ -100,6 +102,12 @@ public int getRandomSample() {
}
}

@Before
public void setUp() {
LibraryLoader.getInstance().setLibraryProcessType(LibraryProcessType.PROCESS_WEBVIEW);
LibraryLoader.getInstance().ensureInitialized();
}

// randomSampl < CRASH_DUMP_PERCENTAGE_FOR_STABLE to always sample-in crashes.
private static final SamplingDelegate TEST_SAMPLING_DELEGATE =
new TestSamplingDelegate(Channel.UNKNOWN, 0);
Expand Down
3 changes: 2 additions & 1 deletion chrome/android/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -1127,6 +1127,8 @@ junit_binary("chrome_junit_tests") {
"//components/messages/android:java",
"//components/messages/android:manager_java",
"//components/minidump_uploader:minidump_uploader_java",
"//components/minidump_uploader:minidump_uploader_java_test_support",
"//components/minidump_uploader:minidump_uploader_javatests",
"//components/module_installer/android:module_installer_java",
"//components/offline_items_collection/core:core_java",
"//components/omnibox/browser:browser_java",
Expand Down Expand Up @@ -1617,7 +1619,6 @@ android_library("chrome_test_java") {
"//components/metrics:metrics_java",
"//components/minidump_uploader:minidump_uploader_java",
"//components/minidump_uploader:minidump_uploader_java_test_support",
"//components/minidump_uploader:minidump_uploader_javatests",
"//components/navigation_interception/android:navigation_interception_java",
"//components/offline_items_collection/core:core_java",
"//components/offline_pages/core/prefetch:offline_prefetch_proto_java",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -197,20 +197,4 @@ public void testSimpleExtraction_SansJobScheduler() throws IOException {

verifyMinidumpWithLogcat("test.dmp.try0");
}

@Test
@MediumTest
public void testSimpleExtraction_WithJobScheduler() throws IOException {
// The JobScheduler API is only available as of Android M.
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return;

final File minidump = createMinidump("test.dmp");
Context testContext = new TestContext(InstrumentationRegistry.getTargetContext());

LogcatExtractionRunnable runnable =
new LogcatExtractionRunnable(minidump, new TestLogcatCrashExtractor());
runnable.run();

verifyMinidumpWithLogcat("test.dmp.try0");
}
}
4 changes: 2 additions & 2 deletions components/minidump_uploader/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,13 @@ android_library("minidump_uploader_java_test_support") {
]
}

android_library("minidump_uploader_javatests") {
testonly = true
robolectric_library("minidump_uploader_javatests") {
deps = [
":minidump_uploader_java",
":minidump_uploader_java_test_support",
"//base:base_java",
"//base:base_java_test_support",
"//base:base_junit_test_support",
"//third_party/android_support_test_runner:runner_java",
"//third_party/androidx:androidx_test_runner_java",
"//third_party/junit",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.annotation.Config;

import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.base.test.util.Feature;

import java.io.File;
Expand All @@ -31,7 +32,8 @@
/**
* Unittests for {@link CrashFileManager}.
*/
@RunWith(BaseJUnit4ClassRunner.class)
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
public class CrashFileManagerTest {
@Rule
public CrashTestRule mTestRule = new CrashTestRule();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@

import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.base.library_loader.LibraryLoader;
import org.chromium.base.library_loader.LibraryProcessType;
import org.chromium.components.minidump_uploader.util.CrashReportingPermissionManager;

import java.io.File;
Expand All @@ -27,7 +25,6 @@ public class CrashTestRule implements TestRule {

private File mCrashDir;
private File mCacheDir;
private @LibraryProcessType int mLibraryProcessType;

@Override
public Statement apply(final Statement base, final Description desc) {
Expand All @@ -49,17 +46,7 @@ public File getCacheDir() {
return mCacheDir;
}

public CrashTestRule(@LibraryProcessType int libraryProcessType) {
mLibraryProcessType = libraryProcessType;
}

public CrashTestRule() {
this(LibraryProcessType.PROCESS_BROWSER);
}

private void setUp() throws Exception {
LibraryLoader.getInstance().setLibraryProcessType(mLibraryProcessType);
LibraryLoader.getInstance().ensureInitialized();
if (mCacheDir == null) {
mCacheDir = getExistingCacheDir();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@
// found in the LICENSE file.

package org.chromium.components.minidump_uploader;

import androidx.test.filters.SmallTest;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.annotation.Config;

import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.base.test.util.Feature;
import org.chromium.components.minidump_uploader.CrashTestRule.MockCrashReportingPermissionManager;
import org.chromium.components.minidump_uploader.MinidumpUploadCallable.MinidumpUploadStatus;
Expand All @@ -26,7 +26,8 @@
/**
* Unittests for {@link MinidumpUploadCallable}.
*/
@RunWith(BaseJUnit4ClassRunner.class)
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
public class MinidumpUploadCallableTest {
private static final String LOCAL_CRASH_ID = "123_log";
private static final String LOG_FILE_NAME = "chromium_renderer-123_log.dmp224";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@
// found in the LICENSE file.

package org.chromium.components.minidump_uploader;

import androidx.test.filters.MediumTest;

import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.annotation.Config;

import org.chromium.base.ThreadUtils;
import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.components.minidump_uploader.CrashTestRule.MockCrashReportingPermissionManager;
import org.chromium.components.minidump_uploader.util.CrashReportingPermissionManager;
import org.chromium.components.minidump_uploader.util.HttpURLConnectionFactory;
Expand All @@ -29,10 +29,11 @@
import java.util.concurrent.CountDownLatch;

/**
* Instrumentation tests for the common MinidumpUploadJob implementation within the
* Tests for the common MinidumpUploadJob implementation within the
* minidump_uploader component.
*/
@RunWith(BaseJUnit4ClassRunner.class)
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
public class MinidumpUploadJobImplTest {
@Rule
public CrashTestRule mTestRule = new CrashTestRule();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.annotation.Config;

import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.base.test.util.Feature;
import org.chromium.components.minidump_uploader.util.HttpURLConnectionFactory;

Expand All @@ -25,7 +26,8 @@
/**
* Unittests for {@link MinidumpUploadCallable}.
*/
@RunWith(BaseJUnit4ClassRunner.class)
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
public class MinidumpUploaderTest {
@Rule
public CrashTestRule mTestRule = new CrashTestRule();
Expand Down

0 comments on commit be235e8

Please sign in to comment.