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

Commit 4e4e4da6 authored by vadimt's avatar vadimt Committed by Vadim Tryshev
Browse files

Support for tests that a leak is detected

Bug: 139137636
Change-Id: Ib4f02d6b3798e3fdf3d8e5758c09d2b642404af5
parent f7e9b051
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -16,8 +16,11 @@
package com.android.launcher3.testing;

import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import static android.graphics.Bitmap.Config.ARGB_8888;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Debug;

@@ -30,6 +33,7 @@ import com.android.launcher3.R;
import com.android.launcher3.allapps.AllAppsStore;
import com.android.launcher3.util.ResourceBasedOverride;

import java.util.LinkedList;
import java.util.concurrent.ExecutionException;

public class TestInformationHandler implements ResourceBasedOverride {
@@ -43,6 +47,7 @@ public class TestInformationHandler implements ResourceBasedOverride {
    protected DeviceProfile mDeviceProfile;
    protected LauncherAppState mLauncherAppState;
    protected Launcher mLauncher;
    private static LinkedList mLeaks;

    public void init(Context context) {
        mContext = context;
@@ -121,6 +126,29 @@ public class TestInformationHandler implements ResourceBasedOverride {
                response.putInt(TestProtocol.TEST_INFO_RESPONSE_FIELD, mem.getTotalPss());
                break;
            }

            case TestProtocol.REQUEST_JAVA_LEAK: {
                if (mLeaks == null) mLeaks = new LinkedList();

                // Allocate and dirty the memory.
                final int leakSize = 1024 * 1024;
                final byte[] bytes = new byte[leakSize];
                for (int i = 0; i < leakSize; i += 239) {
                    bytes[i] = (byte) (i % 256);
                }
                mLeaks.add(bytes);
                break;
            }

            case TestProtocol.REQUEST_NATIVE_LEAK: {
                if (mLeaks == null) mLeaks = new LinkedList();

                // Allocate and dirty a bitmap.
                final Bitmap bitmap = Bitmap.createBitmap(512, 512, ARGB_8888);
                bitmap.eraseColor(Color.RED);
                mLeaks.add(bitmap);
                break;
            }
        }
        return response;
    }
+2 −0
Original line number Diff line number Diff line
@@ -74,6 +74,8 @@ public final class TestProtocol {
    public static final String REQUEST_OVERVIEW_LEFT_GESTURE_MARGIN = "overview-left-margin";
    public static final String REQUEST_OVERVIEW_RIGHT_GESTURE_MARGIN = "overview-right-margin";
    public static final String REQUEST_TOTAL_PSS_KB = "total_pss";
    public static final String REQUEST_JAVA_LEAK = "java-leak";
    public static final String REQUEST_NATIVE_LEAK = "native-leak";

    public static boolean sDebugTracing = false;
    public static final String REQUEST_ENABLE_DEBUG_TRACING = "enable-debug-tracing";
+8 −0
Original line number Diff line number Diff line
@@ -961,4 +961,12 @@ public final class LauncherInstrumentation {
        return getTestInfo(TestProtocol.REQUEST_TOTAL_PSS_KB).
                getInt(TestProtocol.TEST_INFO_RESPONSE_FIELD);
    }

    public void produceJavaLeak() {
        getTestInfo(TestProtocol.REQUEST_JAVA_LEAK);
    }

    public void produceNativeLeak() {
        getTestInfo(TestProtocol.REQUEST_NATIVE_LEAK);
    }
}
 No newline at end of file