Loading cmds/dumpstate/DumpstateUtil.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,7 @@ std::string PropertiesHelper::build_type_ = ""; int PropertiesHelper::dry_run_ = -1; int PropertiesHelper::unroot_ = -1; int PropertiesHelper::parallel_run_ = -1; int PropertiesHelper::strict_run_ = -1; bool PropertiesHelper::IsUserBuild() { if (build_type_.empty()) { Loading Loading @@ -237,6 +238,14 @@ bool PropertiesHelper::IsParallelRun() { return parallel_run_ == 1; } bool PropertiesHelper::IsStrictRun() { if (strict_run_ == -1) { // Defaults to using stricter timeouts. strict_run_ = android::base::GetBoolProperty("dumpstate.strict_run", true) ? 1 : 0; } return strict_run_ == 1; } int DumpFileToFd(int out_fd, const std::string& title, const std::string& path) { android::base::unique_fd fd(TEMP_FAILURE_RETRY(open(path.c_str(), O_RDONLY | O_NONBLOCK | O_CLOEXEC))); if (fd.get() < 0) { Loading cmds/dumpstate/DumpstateUtil.h +8 −0 Original line number Diff line number Diff line Loading @@ -193,11 +193,19 @@ class PropertiesHelper { */ static bool IsParallelRun(); /* * Strict-run mode is determined by the `dumpstate.strict_run` sysprop which * will default to true. This results in shortened timeouts for flaky * sections. */ static bool IsStrictRun(); private: static std::string build_type_; static int dry_run_; static int unroot_; static int parallel_run_; static int strict_run_; }; /* Loading cmds/dumpstate/dumpstate.cpp +14 −4 Original line number Diff line number Diff line Loading @@ -820,9 +820,12 @@ void Dumpstate::PrintHeader() const { RunCommandToFd(STDOUT_FILENO, "", {"uptime", "-p"}, CommandOptions::WithTimeout(1).Always().Build()); printf("Bugreport format version: %s\n", version_.c_str()); printf("Dumpstate info: id=%d pid=%d dry_run=%d parallel_run=%d args=%s bugreport_mode=%s\n", printf( "Dumpstate info: id=%d pid=%d dry_run=%d parallel_run=%d strict_run=%d args=%s " "bugreport_mode=%s\n", id_, pid_, PropertiesHelper::IsDryRun(), PropertiesHelper::IsParallelRun(), options_->args.c_str(), options_->bugreport_mode_string.c_str()); PropertiesHelper::IsStrictRun(), options_->args.c_str(), options_->bugreport_mode_string.c_str()); printf("\n"); } Loading Loading @@ -1044,7 +1047,8 @@ static void DumpIncidentReport() { MYLOGE("Could not open %s to dump incident report.\n", path.c_str()); return; } RunCommandToFd(fd, "", {"incident", "-u"}, CommandOptions::WithTimeout(20).Build()); RunCommandToFd(fd, "", {"incident", "-u"}, CommandOptions::WithTimeout(PropertiesHelper::IsStrictRun() ? 20 : 120).Build()); bool empty = 0 == lseek(fd, 0, SEEK_END); if (!empty) { // Use a different name from "incident.proto" Loading Loading @@ -3067,6 +3071,12 @@ Dumpstate::RunStatus Dumpstate::RunInternal(int32_t calling_uid, MYLOGI("Running on dry-run mode (to disable it, call 'setprop dumpstate.dry_run false')\n"); } if (PropertiesHelper::IsStrictRun()) { MYLOGI( "Running on strict-run mode, which has shorter timeouts " "(to disable, call 'setprop dumpstate.strict_run false')\n"); } MYLOGI("dumpstate info: id=%d, args='%s', bugreport_mode= %s bugreport format version: %s\n", id_, options_->args.c_str(), options_->bugreport_mode_string.c_str(), version_.c_str()); Loading Loading
cmds/dumpstate/DumpstateUtil.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,7 @@ std::string PropertiesHelper::build_type_ = ""; int PropertiesHelper::dry_run_ = -1; int PropertiesHelper::unroot_ = -1; int PropertiesHelper::parallel_run_ = -1; int PropertiesHelper::strict_run_ = -1; bool PropertiesHelper::IsUserBuild() { if (build_type_.empty()) { Loading Loading @@ -237,6 +238,14 @@ bool PropertiesHelper::IsParallelRun() { return parallel_run_ == 1; } bool PropertiesHelper::IsStrictRun() { if (strict_run_ == -1) { // Defaults to using stricter timeouts. strict_run_ = android::base::GetBoolProperty("dumpstate.strict_run", true) ? 1 : 0; } return strict_run_ == 1; } int DumpFileToFd(int out_fd, const std::string& title, const std::string& path) { android::base::unique_fd fd(TEMP_FAILURE_RETRY(open(path.c_str(), O_RDONLY | O_NONBLOCK | O_CLOEXEC))); if (fd.get() < 0) { Loading
cmds/dumpstate/DumpstateUtil.h +8 −0 Original line number Diff line number Diff line Loading @@ -193,11 +193,19 @@ class PropertiesHelper { */ static bool IsParallelRun(); /* * Strict-run mode is determined by the `dumpstate.strict_run` sysprop which * will default to true. This results in shortened timeouts for flaky * sections. */ static bool IsStrictRun(); private: static std::string build_type_; static int dry_run_; static int unroot_; static int parallel_run_; static int strict_run_; }; /* Loading
cmds/dumpstate/dumpstate.cpp +14 −4 Original line number Diff line number Diff line Loading @@ -820,9 +820,12 @@ void Dumpstate::PrintHeader() const { RunCommandToFd(STDOUT_FILENO, "", {"uptime", "-p"}, CommandOptions::WithTimeout(1).Always().Build()); printf("Bugreport format version: %s\n", version_.c_str()); printf("Dumpstate info: id=%d pid=%d dry_run=%d parallel_run=%d args=%s bugreport_mode=%s\n", printf( "Dumpstate info: id=%d pid=%d dry_run=%d parallel_run=%d strict_run=%d args=%s " "bugreport_mode=%s\n", id_, pid_, PropertiesHelper::IsDryRun(), PropertiesHelper::IsParallelRun(), options_->args.c_str(), options_->bugreport_mode_string.c_str()); PropertiesHelper::IsStrictRun(), options_->args.c_str(), options_->bugreport_mode_string.c_str()); printf("\n"); } Loading Loading @@ -1044,7 +1047,8 @@ static void DumpIncidentReport() { MYLOGE("Could not open %s to dump incident report.\n", path.c_str()); return; } RunCommandToFd(fd, "", {"incident", "-u"}, CommandOptions::WithTimeout(20).Build()); RunCommandToFd(fd, "", {"incident", "-u"}, CommandOptions::WithTimeout(PropertiesHelper::IsStrictRun() ? 20 : 120).Build()); bool empty = 0 == lseek(fd, 0, SEEK_END); if (!empty) { // Use a different name from "incident.proto" Loading Loading @@ -3067,6 +3071,12 @@ Dumpstate::RunStatus Dumpstate::RunInternal(int32_t calling_uid, MYLOGI("Running on dry-run mode (to disable it, call 'setprop dumpstate.dry_run false')\n"); } if (PropertiesHelper::IsStrictRun()) { MYLOGI( "Running on strict-run mode, which has shorter timeouts " "(to disable, call 'setprop dumpstate.strict_run false')\n"); } MYLOGI("dumpstate info: id=%d, args='%s', bugreport_mode= %s bugreport format version: %s\n", id_, options_->args.c_str(), options_->bugreport_mode_string.c_str(), version_.c_str()); Loading