diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-08-04 02:08:45 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-08-04 02:08:45 +0000 |
commit | e41666dfe32be38b3ca7130fd96c04e5c773fc8e (patch) | |
tree | c9cd27a61c61777c110d72f7a4ced15a4c18ef2b | |
parent | 3f83737e64ad89fb13db3d39fe57d4bbb7d641b4 (diff) | |
parent | bff918000ee88fdd376d9a9b5c60924047c262c1 (diff) | |
download | native-e41666dfe32be38b3ca7130fd96c04e5c773fc8e.tar.gz |
Merge cherrypicks of ['googleplex-android-review.googlesource.com/24241899', 'googleplex-android-review.googlesource.com/24286326'] into udc-d1-release.
Change-Id: Iaca15c1b98b879645ecdb799f0f3c590b856dc05
-rw-r--r-- | cmds/dumpstate/DumpstateUtil.cpp | 13 | ||||
-rw-r--r-- | cmds/dumpstate/DumpstateUtil.h | 12 | ||||
-rw-r--r-- | cmds/dumpstate/dumpstate.cpp | 18 |
3 files changed, 39 insertions, 4 deletions
diff --git a/cmds/dumpstate/DumpstateUtil.cpp b/cmds/dumpstate/DumpstateUtil.cpp index aa42541a66..484231225d 100644 --- a/cmds/dumpstate/DumpstateUtil.cpp +++ b/cmds/dumpstate/DumpstateUtil.cpp @@ -207,6 +207,9 @@ std::string PropertiesHelper::build_type_ = ""; int PropertiesHelper::dry_run_ = -1; int PropertiesHelper::unroot_ = -1; int PropertiesHelper::parallel_run_ = -1; +#if !defined(__ANDROID_VNDK__) +int PropertiesHelper::strict_run_ = -1; +#endif bool PropertiesHelper::IsUserBuild() { if (build_type_.empty()) { @@ -237,6 +240,16 @@ bool PropertiesHelper::IsParallelRun() { return parallel_run_ == 1; } +#if !defined(__ANDROID_VNDK__) +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; +} +#endif + 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) { diff --git a/cmds/dumpstate/DumpstateUtil.h b/cmds/dumpstate/DumpstateUtil.h index b00c46e0db..6049e3e19d 100644 --- a/cmds/dumpstate/DumpstateUtil.h +++ b/cmds/dumpstate/DumpstateUtil.h @@ -193,11 +193,23 @@ 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. + */ +#if !defined(__ANDROID_VNDK__) + static bool IsStrictRun(); +#endif + private: static std::string build_type_; static int dry_run_; static int unroot_; static int parallel_run_; +#if !defined(__ANDROID_VNDK__) + static int strict_run_; +#endif }; /* diff --git a/cmds/dumpstate/dumpstate.cpp b/cmds/dumpstate/dumpstate.cpp index 8a337569c4..e93b46c666 100644 --- a/cmds/dumpstate/dumpstate.cpp +++ b/cmds/dumpstate/dumpstate.cpp @@ -822,9 +822,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", - id_, pid_, PropertiesHelper::IsDryRun(), PropertiesHelper::IsParallelRun(), - options_->args.c_str(), options_->bugreport_mode_string.c_str()); + 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(), + PropertiesHelper::IsStrictRun(), options_->args.c_str(), + options_->bugreport_mode_string.c_str()); printf("\n"); } @@ -1046,7 +1049,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" @@ -3127,6 +3131,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()); |