[ResultDB] Add skeleton for new QueryRunTestVariants RPC.

ListTestResults does not appear suitable for the low-latency
ingestion pipeline as it does not group retries of the same test
on the same page. This makes the LUCI Analysis-side
implementation more complicated, particularly for the
changepoint analysis ingestion which requires the retries
to be grouped together to arrive at the run status.

Modifying it to keep results for the same test verdict on
the same page seems like a hack as it does not lead to
logical pagination behaviour (if my page size is too small
to fit a verdict now I cannot make any progress?) and
violates requirements from AIP-132.

We could modify QueryTestVariants RPC to offer an option to
only query directly included test results and not included
invocations but this would result in an illogical interface
as in no world does not make sense for it to return
exonerations and sources when querying in this way:
- For one, the full set of exonerations would never be
  obtained, even if querying all invocations in a graph
  individually, and
- sources would never have an opportunity to resolve for
  invocations with inherited sources.

This leads us to conclude that making a new fit-for-purpose
RPC is probably the cleanest option from an interface perspective.
This will also allow us to ditch features from QueryTestVariants
that are not useful for LUCI Analysis ingestion, such as the
ordering of unexpected test verdicts before exported test verdicts.

BUG=b:333652213
TEST=Integration tests

Change-Id: If1f91dd3d21b841401b6048d273a3772cd4159d3
Reviewed-on: https://chromium-review.googlesource.com/c/infra/luci/luci-go/+/5492805
Commit-Queue: Patrick Meiring <meiring@google.com>
Reviewed-by: Matthew Warton <mwarton@google.com>
7 files changed
tree: 70ed291ebf87cef36a5e9d45b220e267f0dc2e71
  1. analysis/
  2. appengine/
  3. auth/
  4. auth_service/
  5. bisection/
  6. build/
  7. buildbucket/
  8. casviewer/
  9. cipd/
  10. cipkg/
  11. client/
  12. common/
  13. config/
  14. config_service/
  15. cv/
  16. deploy/
  17. examples/
  18. gae/
  19. gce/
  20. grpc/
  21. hardcoded/
  22. led/
  23. logdog/
  24. luci_notify/
  25. lucicfg/
  26. lucictx/
  27. luciexe/
  28. mailer/
  29. milo/
  30. mmutex/
  31. provenance/
  32. resultdb/
  33. scheduler/
  34. scripts/
  35. server/
  36. standalone/
  37. starlark/
  38. swarming/
  39. teams/
  40. third_party/
  41. tokenserver/
  42. tools/
  43. tree_status/
  44. vpython/
  45. web/
  46. .gitallowed
  47. .gitattributes
  48. .gitignore
  49. .go-lintable
  50. AUTHORS
  51. codereview.settings
  52. CONTRIBUTING.md
  53. CONTRIBUTORS
  54. go.mod
  55. go.sum
  56. LICENSE
  57. OWNERS
  58. PRESUBMIT.py
  59. README.md
  60. tools.go
  61. WATCHLISTS
README.md

luci-go: LUCI services and tools in Go

GoReference

Installing

LUCI Go code is meant to be worked on from an Chromium infra.git checkout, which enforces packages versions and Go toolchain version. First get fetch via depot_tools.git then run:

fetch infra
cd infra/go
eval `./env.py`
cd src/go.chromium.org/luci

It is now possible to directly install tools with go install:

go install go.chromium.org/luci/auth/client/cmd/...@latest
go install go.chromium.org/luci/buildbucket/cmd/...@latest
go install go.chromium.org/luci/cipd/client/cmd/...@latest
go install go.chromium.org/luci/client/cmd/...@latest
go install go.chromium.org/luci/cv/cmd/...@latest
go install go.chromium.org/luci/gce/cmd/...@latest
go install go.chromium.org/luci/grpc/cmd/...@latest
go install go.chromium.org/luci/logdog/client/cmd/...@latest
go install go.chromium.org/luci/luci_notify/cmd/...@latest
go install go.chromium.org/luci/lucicfg/cmd/...@latest
go install go.chromium.org/luci/luciexe/legacy/cmd/...@latest
go install go.chromium.org/luci/mailer/cmd/...@latest
go install go.chromium.org/luci/mmutex/cmd/...@latest
go install go.chromium.org/luci/resultdb/cmd/...@latest
go install go.chromium.org/luci/server/cmd/...@latest
go install go.chromium.org/luci/swarming/cmd/...@latest
go install go.chromium.org/luci/tokenserver/cmd/...@latest
go install go.chromium.org/luci/tools/cmd/...@latest

Contributing

Contributing uses the same flow as Chromium contributions.