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

Commit 352c0035 authored by vadimt's avatar vadimt
Browse files

Adding Winscope Launcher trace artifact

Bug: 197991109
Test: local runs
Change-Id: I8fe718570e1400e97ea107bc25e169f39257ff43
parent 6c416c69
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@ package com.android.launcher3.util.rule;

import static androidx.test.InstrumentationRegistry.getInstrumentation;

import android.content.Context;
import android.os.FileUtils;
import android.os.ParcelFileDescriptor.AutoCloseInputStream;
import android.util.Log;
@@ -45,11 +46,30 @@ public class FailureWatcher extends TestWatcher {
        return new Statement() {
            @Override
            public void evaluate() throws Throwable {
                boolean success = false;
                try {
                    Log.d("b/196820244", "Before evaluate");
                    mDevice.executeShellCommand("cmd statusbar tracing start");
                    FailureWatcher.super.apply(base, description).evaluate();
                    Log.d("b/196820244", "After evaluate");
                    success = true;
                } finally {
                    // Save artifact for Launcher Winscope trace.
                    mDevice.executeShellCommand("cmd statusbar tracing stop");
                    final Context nexusLauncherContext =
                            getInstrumentation().getTargetContext()
                                    .createPackageContext("com.google.android.apps.nexuslauncher",
                                            0);
                    final File launcherTrace =
                            new File(nexusLauncherContext.getFilesDir(), "launcher_trace.pb");
                    if (success) {
                        mDevice.executeShellCommand("rm " + launcherTrace);
                    } else {
                        mDevice.executeShellCommand("mv " + launcherTrace + " "
                                + diagFile(description, "LauncherWinscope", "pb"));
                    }

                    // Detect touch events coming from physical screen.
                    if (mLauncher.hadNontestEvents()) {
                        throw new AssertionError(
                                "Launcher received events not sent by the test. This may mean "