From dc25fca90377ee698a7c3f15f5d38e3f11a3ea2b Mon Sep 17 00:00:00 2001 From: Schneider Victor-tulias Date: Mon, 20 Mar 2023 15:50:48 -0700 Subject: [PATCH] Add debug logs to help investigate view and activity leak test failures. Flag: not needed Test: MemoryTests Bug: 260260325 Change-Id: Ie9ed8e607c574e81696a4246f701534c18cf0b7c --- .../launcher3/testing/DebugTestInformationHandler.java | 9 +++++++++ .../android/launcher3/testing/shared/TestProtocol.java | 1 + .../android/launcher3/tapl/LauncherInstrumentation.java | 4 ++++ 3 files changed, 14 insertions(+) diff --git a/ext_tests/src/com/android/launcher3/testing/DebugTestInformationHandler.java b/ext_tests/src/com/android/launcher3/testing/DebugTestInformationHandler.java index cf58198c2c..4f9c32ade5 100644 --- a/ext_tests/src/com/android/launcher3/testing/DebugTestInformationHandler.java +++ b/ext_tests/src/com/android/launcher3/testing/DebugTestInformationHandler.java @@ -16,6 +16,7 @@ package com.android.launcher3.testing; +import static com.android.launcher3.testing.shared.TestProtocol.VIEW_AND_ACTIVITY_LEAKS; import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; import static com.android.launcher3.util.Executors.MODEL_EXECUTOR; @@ -24,7 +25,9 @@ import android.app.Application; import android.content.Context; import android.os.Binder; import android.os.Bundle; +import android.os.Process; import android.system.Os; +import android.util.Log; import android.view.View; import androidx.annotation.Keep; @@ -157,11 +160,17 @@ public class DebugTestInformationHandler extends TestInformationHandler { case TestProtocol.REQUEST_VIEW_LEAK: { if (sLeaks == null) sLeaks = new LinkedList(); + Log.d(VIEW_AND_ACTIVITY_LEAKS, "forcefully leaking 2 views"); sLeaks.add(new View(mContext)); sLeaks.add(new View(mContext)); return response; } + case TestProtocol.PRINT_VIEW_LEAK: { + Log.d(VIEW_AND_ACTIVITY_LEAKS, "(pid=" + Process.myPid() + ") sLeaks=" + sLeaks); + return response; + } + case TestProtocol.REQUEST_START_EVENT_LOGGING: { sEvents = new ArrayList<>(); TestLogging.setEventConsumer( diff --git a/tests/shared/com/android/launcher3/testing/shared/TestProtocol.java b/tests/shared/com/android/launcher3/testing/shared/TestProtocol.java index c7db2ae9f9..a37c3cd3c8 100644 --- a/tests/shared/com/android/launcher3/testing/shared/TestProtocol.java +++ b/tests/shared/com/android/launcher3/testing/shared/TestProtocol.java @@ -99,6 +99,7 @@ public final class TestProtocol { public static final String REQUEST_PID = "pid"; public static final String REQUEST_FORCE_GC = "gc"; public static final String REQUEST_VIEW_LEAK = "view-leak"; + public static final String PRINT_VIEW_LEAK = "print-leak"; public static final String REQUEST_RECENT_TASKS_LIST = "recent-tasks-list"; public static final String REQUEST_START_EVENT_LOGGING = "start-event-logging"; public static final String REQUEST_GET_TEST_EVENTS = "get-test-events"; diff --git a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java index 5c4b707190..08a6423d2c 100644 --- a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java +++ b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java @@ -1830,6 +1830,10 @@ public final class LauncherInstrumentation { getTestInfo(TestProtocol.REQUEST_VIEW_LEAK); } + public void printViewLeak() { + getTestInfo(TestProtocol.PRINT_VIEW_LEAK); + } + public ArrayList getRecentTasks() { ArrayList tasks = new ArrayList<>(); ArrayList components = getTestInfo(TestProtocol.REQUEST_RECENT_TASKS_LIST)