Make CheckWprShaFiles ~60x faster

CheckWprShaFiles is the slowest presubmit on the presubmit --all bot:
  https://ci.chromium.org/p/chromium/builders/ci/linux-presubmit

It takes 420+ s whereas the second slowest takes more like 90 s. The
slowness is because of calling cloud_storage.Exists() individually for
500+ files. The network and CPU latency is non-trivial (including the
cost of starting vpython3 for each request). It turns out that most of
these files are all in the same storage bucket and checking their status
can be optimized by calling cloud_storage.ListFiles() once and then
checking to see if the names are in the results. However this doesn't
work for all files because some buckets have enough files that calling
cloud_storage.ListFiles() literally takes hours to run.

With a little special casing of faster versus slow buckets the number
of cloud_storage calls drops by over 500, thus giving a speedup of
roughly 60x (from ~1,000 s to ~16 s on my Linux development machine).

This also updates a comment that was missed when landing
crrev.com/c/4058427.

Bug: 1393724
Change-Id: I9b26bf722628012a109a3111c376f2593d8b8e77
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4060580
Commit-Queue: Bruce Dawson <brucedawson@chromium.org>
Reviewed-by: Brian Sheedy <bsheedy@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1076674}
2 files changed
tree: bfed0ea59e64ee084e21b1a8e8bc00c7eb5bd94b
  1. android_webview/
  2. apps/
  3. ash/
  4. base/
  5. build/
  6. build_overrides/
  7. buildtools/
  8. cc/
  9. chrome/
  10. chromecast/
  11. chromeos/
  12. codelabs/
  13. components/
  14. content/
  15. courgette/
  16. crypto/
  17. dbus/
  18. device/
  19. docs/
  20. extensions/
  21. fuchsia_web/
  22. gin/
  23. google_apis/
  24. google_update/
  25. gpu/
  26. headless/
  27. infra/
  28. ios/
  29. ipc/
  30. media/
  31. mojo/
  32. native_client_sdk/
  33. net/
  34. pdf/
  35. ppapi/
  36. printing/
  37. remoting/
  38. rlz/
  39. sandbox/
  40. services/
  41. skia/
  42. sql/
  43. storage/
  44. styleguide/
  45. testing/
  46. third_party/
  47. tools/
  48. ui/
  49. url/
  50. weblayer/
  51. .clang-format
  52. .clang-tidy
  53. .eslintrc.js
  54. .git-blame-ignore-revs
  55. .gitattributes
  56. .gitignore
  57. .gn
  58. .mailmap
  59. .rustfmt.toml
  60. .vpython3
  61. .yapfignore
  62. AUTHORS
  63. BUILD.gn
  64. CODE_OF_CONDUCT.md
  65. codereview.settings
  66. DEPS
  67. DIR_METADATA
  68. ENG_REVIEW_OWNERS
  69. LICENSE
  70. LICENSE.chromium_os
  71. OWNERS
  72. PRESUBMIT.py
  73. PRESUBMIT_test.py
  74. PRESUBMIT_test_mocks.py
  75. README.md
  76. WATCHLISTS
README.md

Logo Chromium

Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.

The project's web site is https://www.chromium.org.

To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.

Documentation in the source is rooted in docs/README.md.

Learn how to Get Around the Chromium Source Code Directory Structure .

For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.

If you found a bug, please file it at https://crbug.com/new.