[host-target-testing] Support lazily fetching blobs

Some of the OTA test steps do not need all the blobs, like when we pave N-1
onto a device, then validate with sl4f. This introduces a BlobFetchMode,
where if we get a repository with LazilyFetchBlobs, we will only download
blobs when they're requested by the test device. This can half the artifacts
we need to download when getting the old version.

To go even further, we could be even smarter and compare the blobs from
N-1 and N, and only prefetch the blobs that are only in N, but we can address
that optimization down the road.

Change-Id: I4d28694a72fa0b3341cc9fc71e4ec84f1668dd0c
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/512311
Commit-Queue: Erick Tryzelaar <etryzelaar@google.com>
Reviewed-by: John Wittrock <wittrock@google.com>
9 files changed
tree: eab064693836585e0f8f55a426579142756b48ae
  1. .clang-format
  2. .clang-tidy
  3. .git-blame-ignore-revs
  4. .gitattributes
  5. .gitignore
  6. .gn
  7. .style.yapf
  8. AUTHORS
  9. BUILD.gn
  10. CODE_OF_CONDUCT.md
  11. CONTRIBUTING.md
  12. LICENSE
  13. OWNERS
  14. PATENTS
  15. README.md
  16. boards/
  17. build/
  18. buildtools/
  19. bundles/
  20. docs/
  21. examples/
  22. garnet/
  23. products/
  24. rustfmt.toml
  25. scripts/
  26. sdk/
  27. src/
  28. third_party/
  29. tools/
  30. zircon/
README.md

Fuchsia

Pink + Purple == Fuchsia (a new operating system)

What is Fuchsia?

Fuchsia is a modular, capability-based operating system. Fuchsia runs on modern 64-bit Intel and ARM processors.

Fuchsia is an open source project with a code of conduct that we expect everyone who interacts with the project to respect.

Read more about Fuchsia's principles.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.