[roll] Roll infra/recipes [fuchsia/fuchsia] Use test_filterer to handle presubmit retry logic

Use test_filterer to compute the skipped shards and what tasks and tests
should be run on presubmit retries.

Summary of changes:
- Introduce a new recipe module, test_filterer. This module is responsible for calling a test_filterer binary to determine which tests should be run on presubmit retries and what tests/shards should be skipped.
- Move the logic for filtering which shards and tests to run out of `recipe_modules/testing/api.py` and handle it in the external test_filterer tool.
- Update the `fuchsia.py` recipe to call this new `test_filterer` module, passing information about tefmocheck failures to the filterer.
- Remove the logic for filtering out GCE shards as this should be safe
  to remove now (see TODO).

Testing:
Tested this by running the following command
```
led get-build 8685160904322786961 | led edit-system -p 20 | led edit-recipe-bundle | led edit -p 'skip_building_fuchsia_on_cq_retry=true' -p 'skip_test_shards_on_cq_retry=true' -p 'only_run_previously_failed_tests=true' | led launch
```

Upon completion of the build, I ran the following query using the
original build id, 8685533179891827121, and the build id of the
resulting led subbuild (the subbuild that reuses build artifacts).
```
SELECT test_id, status, exported.id, tags
FROM `fuchsia-infra.resultdb.try`
WHERE partition_time > TIMESTAMP_SUB(current_timestamp(), INTERVAL 14 DAY)
and exported.id = "build-<build-id>"
LIMIT 1000
```

The results of the queries are expected to be the same save for the
following exceptions:
- gn gen and ninja results are not expected to be in the led subbuild
  test results
- the tests that passed in the original build are expected to have the
  status SKIP

While tests that failed on the original build could also pass on the led
subbuild, that did not occur during this testing.

Original-Bug: b/446690992
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/infra/recipes/+/1564813
Original-Revision: ebc12876f30fdbcd37be0fc5d93811aa6d031e21
GitOrigin-RevId: 5bcb533ca2c4f914a4dc093f16de7349bb2ce015
Change-Id: Ifa890632b9e7a0580b972a2cc75d24169f2c70c5
1 file changed
tree: 75660fcd867f1ee6def81905563459c611bd5070
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cobalt
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. test_durations
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance in one of the communication channels documented at get involved.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.