Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f48097f2 authored by vadimt's avatar vadimt
Browse files

Correctly generating heap dumps for OOP tests

Not trying to dump the test process :)

Still using Debug.dumpHprofData for inproc because
using shell command for inproc can deadlock.

Test: manual
Bug: 177065099
Change-Id: I4b581954a01ecc8a1427409baa030aaa3b70d6b5
parent 43182892
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -100,6 +100,7 @@ public abstract class AbstractLauncherUiTest {
    private static final String TAG = "AbstractLauncherUiTest";

    private static String sStrictmodeDetectedActivityLeak;
    private static boolean sDumpWasGenerated = false;
    private static boolean sActivityLeakReported;
    private static final String SYSTEMUI_PACKAGE = "com.android.systemui";
    protected static final ActivityLeakTracker ACTIVITY_LEAK_TRACKER = new ActivityLeakTracker();
@@ -151,10 +152,18 @@ public abstract class AbstractLauncherUiTest {
    }

    public static String dumpHprofData() {
        if (sDumpWasGenerated) return "dump has already been generated by another test";
        try {
            final String fileName = getInstrumentation().getTargetContext().getFilesDir().getPath()
                    + "/ActivityLeakHeapDump.hprof";
            if (TestHelpers.isInLauncherProcess()) {
                Debug.dumpHprofData(fileName);
            } else {
                final UiDevice device = UiDevice.getInstance(getInstrumentation());
                device.executeShellCommand(
                        "am dumpheap " + device.getLauncherPackageName() + " " + fileName);
            }
            sDumpWasGenerated = true;
            return "memory dump filename: " + fileName;
        } catch (Throwable e) {
            Log.e(TAG, "dumpHprofData failed", e);