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

Commit 63683437 authored by Pablo Gamito's avatar Pablo Gamito Committed by Android (Google) Code Review
Browse files

Merge "Dump shell side transition trace with bug reports" into udc-dev

parents 8db57bf9 efdc5924
Loading
Loading
Loading
Loading
+12 −10
Original line number Diff line number Diff line
@@ -3362,23 +3362,25 @@ void Dumpstate::MaybeSnapshotUiTraces() {
        return;
    }

    // Include the proto logging from WMShell.
    RunCommand(
        // Empty name because it's not intended to be classified as a bugreport section.
        // Actual logging files can be found as "/data/misc/wmtrace/shell_log.winscope"
        // in the bugreport.
        "", {"dumpsys", "activity", "service", "SystemUIService",
             "WMShell", "protolog", "save-for-bugreport"},
        CommandOptions::WithTimeout(10).Always().DropRoot().RedirectStderr().Build());
    const std::vector<std::vector<std::string>> dumpTracesForBugReportCommands = {
        {"dumpsys", "activity", "service", "SystemUIService", "WMShell", "protolog",
         "save-for-bugreport"},
        {"dumpsys", "activity", "service", "SystemUIService", "WMShell", "transitions", "tracing",
         "save-for-bugreport"},
        {"cmd", "input_method", "tracing", "save-for-bugreport"},
        {"cmd", "window", "tracing", "save-for-bugreport"},
        {"cmd", "window", "shell", "tracing", "save-for-bugreport"},
    };

    for (const auto& service : {"input_method", "window", "window shell"}) {
    for (const auto& command : dumpTracesForBugReportCommands) {
        RunCommand(
            // Empty name because it's not intended to be classified as a bugreport section.
            // Actual tracing files can be found in "/data/misc/wmtrace/" in the bugreport.
            "", {"cmd", service, "tracing", "save-for-bugreport"},
            "", command,
            CommandOptions::WithTimeout(10).Always().DropRoot().RedirectStderr().Build());
    }

    // This command needs to be run as root
    static const auto SURFACEFLINGER_COMMAND_SAVE_ALL_TRACES = std::vector<std::string> {
        "service", "call", "SurfaceFlinger", "1042"
    };
+14 −9
Original line number Diff line number Diff line
@@ -997,17 +997,22 @@ TEST_F(DumpstateTest, DumpPool_withParallelRunDisabled_isNull) {
    EXPECT_FALSE(ds.dump_pool_);
}

TEST_F(DumpstateBaseTest, PreDumpUiData) {
    // SurfaceFlinger's transactions trace is always enabled, i.e. it is always pre-dumped
    static const auto kTransactionsTrace =
            std::filesystem::path {"/data/misc/wmtrace/transactions_trace.winscope"};
TEST_F(DumpstateTest, PreDumpUiData) {
    // These traces are always enabled, i.e. they are always pre-dumped
    const std::vector<std::filesystem::path> uiTraces = {
        std::filesystem::path{"/data/misc/wmtrace/transactions_trace.winscope"},
        std::filesystem::path{"/data/misc/wmtrace/transition_trace.winscope"},
        std::filesystem::path{"/data/misc/wmtrace/shell_transition_trace.winscope"},
    };

    std::system(("rm " + kTransactionsTrace.string()).c_str());
    EXPECT_FALSE(std::filesystem::exists(kTransactionsTrace));
    for (const auto traceFile : uiTraces) {
        std::system(("rm -f " + traceFile.string()).c_str());
        EXPECT_FALSE(std::filesystem::exists(traceFile)) << traceFile << " was not deleted.";

        Dumpstate& ds_ = Dumpstate::GetInstance();
        ds_.PreDumpUiData();
    EXPECT_TRUE(std::filesystem::exists(kTransactionsTrace));
        EXPECT_TRUE(std::filesystem::exists(traceFile)) << traceFile << " was not created.";
    }
}

class ZippedBugReportStreamTest : public DumpstateBaseTest {