Coalesce/simplify all RDB-exoneration code in recipe_modules/test_utils

The previous exoneration code was spread out across multiple methods
with RDB-specific terms like "invocations" and "variants".

This combines all of it into a single method, adds a few clairfying
comments, and simplifies the logic a bit. This hopefully makes it a
bit easier to follow for someone unfamiliar with RDB (ie: me).

No actual logic change here (theoretically). Just refactor.

Ran this on a few LED builds that triggered the exoneration step:
https://luci-milo.appspot.com/raw/build/logs.chromium.org/chromium/led/bpastene_google.com/0371e3b95b3bb06f5df6270615acc08764ae88b12ee7bf1a663a0ce71cbf5889/+/annotations
https://luci-milo.appspot.com/raw/build/logs.chromium.org/chromium/led/bpastene_google.com/3189214952be0ae3a3a4cc0e47b8439705e035a9b1de1048b50f16bd9b45544c/+/annotations

Bug: 1135718, 1137119
Change-Id: Iab6adfed9f65630a53f59a1a546e04c72f8ad3d1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/build/+/2800561
Reviewed-by: Garrett Beaty <gbeaty@chromium.org>
Reviewed-by: Stephen Martinis <martiniss@chromium.org>
Commit-Queue: Ben Pastene <bpastene@chromium.org>
1 file changed
tree: 3a4aed42cf569c2727171b815ec4a46fcad2bc36
  1. infra/
  2. recipes/
  3. scripts/
  4. site_config/
  5. .gitattributes
  6. .gitignore
  7. .style.yapf
  8. .vpython
  9. .yapfignore
  10. codereview.settings
  11. CROS_OWNERS
  12. DEPS
  13. environment.cfg.py
  14. LICENSE
  15. OWNERS
  16. PRESUBMIT.py
  17. README.md
  18. WATCHLISTS
README.md

Recipes

If you're here to make a change to ‘recipes’ (the code located in scripts/slave/recipes*), please take a look at the README for more information pertaining to recipes.

Style

The preferred style is PEP8 with two-space indent; that is, the Chromium Python style. Functions use lowercase_with_underscores, with the exception of the special functions RunSteps and RunTests in recipes. Use yapf (git cl format --no-clang-format) to autoformat new code.