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

Commit f53c3e8b authored by Pablo Gamito's avatar Pablo Gamito Committed by Automerger Merge Worker
Browse files

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

parents 46e23626 63683437
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 {