angle/infra
Ben Pastene fefd7ae66a Revert "Enable the chromium recipe RDB results experiment for all builds."
This reverts commit 8e43023684.

Reason for revert: experiment is on by default after crrev.com/c/3321235

Original change's description:
> Enable the chromium recipe RDB results experiment for all builds.
>
> This experiment has been enabled at 100% for all chromium builds
> for months now. And the more builders are on it, the more we're able to
> refactor the chromium recipe. This was attempted in crrev.com/c/3307244,
> but had to be reverted since angle builds re-use much of chromium's
> recipe code but don't have the experiment rolled out to them.
>
> So this rolls it out to angle builds to allow for further clean-up in
> chromium's recipe code. Since all angle tests are wrapped via
> result_adapter, they should already have RDB integration (meaning their
> results are already uploaded to RDB).
>
> A LED run of a build with this experiment applied:
> https://ci.chromium.org/swarming/task/578b98d07382dd10?server=chromium-swarm.appspot.com
>
> Another LED run with that experiment and the recipe CL relanded:
> https://ci.chromium.org/swarming/task/578b9939cfccdb10?server=chromium-swarm.appspot.com
>
> This matches its original build:
> https://ci.chromium.org/ui/p/angle/builders/try/win-test/1026/overview
>
> Bug: chromium:1135718
> Change-Id: Ief4993fa9c027f9c2c6c3c352eb4e65ce74b628c
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3309479
> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>

Bug: chromium:1135718
Change-Id: Ief89cef04ee75a8379a815b213e73c8841c9abb3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3336357
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2021-12-14 13:52:55 +00:00
..
config Revert "Enable the chromium recipe RDB results experiment for all builds." 2021-12-14 13:52:55 +00:00
specs Don't build dEQP tests on MSVC temporarily 2021-11-30 21:10:52 +00:00
ANGLEWrangling.md Point to ANGLE Wrangler schedule website in document 2021-12-06 19:18:13 +00:00
README.md Fix doc to refer to a standalone Mac bot 2021-09-04 17:10:54 +00:00

README.md

ANGLE Testing Infrastructure

ANGLE runs hundreds of thousands of tests on every change before it lands in the tree. We scale our pre-commit and post-commit testing to many machines using Chromium Swarming. Our testing setup heavily leverages existing work in Chromium. We also run compile-only Standalone Testing that does not depend on a Chromium checkout.

Also see the documentation on ANGLE Wrangling for more info.

Pre-Commit Testing

See the pre-commit try waterfall here:

https://ci.chromium.org/p/chromium/g/tryserver.chromium.angle/builders

We currently run pre-commit tests on:

  • Windows 32-bit AMD and Windows 64-bit Intel and NVIDIA GPUs
  • Linux 64-bit NVIDIA and Intel GPUs
  • Mac NVIDIA, Intel and AMD GPUs
  • Pixel 4 and Nexus 5X
  • Fuchsia testing in a VM

Looking at an example build shows how tests are split up between machines. See for example:

https://ci.chromium.org/ui/p/angle/builders/ci/mac-rel/8123/overview

This build ran 68 test steps across 3 GPU families. In some cases (e.g. angle_deqp_gles3_metal_tests) the test is split up between multiple machines to run faster (in this case 2 different machines at once). This build took 23 minutes to complete 72 minutes of real automated testing.

For more details on running and working with our test sets see the docs in Contributing Code.

ANGLE Standalone Testing

In addition to the ANGLE try bots using Chrome, and the GPU.FYI bots, ANGLE has standalone testing on the Chrome infrastructure. Currently these tests are compile-only. This page is for maintaining the configurations that don't use Chromium. Also see the main instructions for ANGLE Wrangling.

It's the ANGLE team's responsibility for maintaining this testing infrastructure. The bot configurations live in four different repos and six branches.

Info Consoles

Continuous builders for every ANGLE revision are found on the CI console:

https://ci.chromium.org/p/angle/g/ci/console

Try jobs from pre-commit builds are found on the builders console:

https://ci.chromium.org/p/angle/g/try/builders

How to add a new build configuration

  1. bugs.chromium.org/p/chromium/issues/entry?template=Build+Infrastructure:

    • If adding a Mac bot, request new slaves by filing an infra issue.
  2. chrome-internal.googlesource.com/infradata/config:

    • Update configs/chromium-swarm/starlark/bots/angle.star with either Mac slaves requested in the previous step or increase the amount of Windows or Linux GCEs.
  3. chromium.googlesource.com/chromium/tools/build:

    • Update scripts/slave/recipes/angle.py with new the config.
    • The recipe code requires 100% code coverage through mock bots, so add mock bot config to GenTests.
    • Maybe run ./scripts/slave/recipes.py test train to update checked-in golden files. This might no longer be necessary.
  4. chromium.googlesource.com/angle/angle:

    • Update infra/config/global/cr-buildbucket.cfg to add the new builder (to ci and try), and set the new config option.
    • Update infra/config/global/luci-milo.cfg to make the builders show up on the ci and try waterfalls.
    • Update infra/config/global/luci-scheduler.cfg to make the builders trigger on new commits or try jobs respectively.
    • Update infra/config/global/commit-queue.cfg to add the builder to the default CQ jobs (if desired).

Other Configuration

There are other places where configuration for ANGLE infra lives. These are files that we shouldn't need to modify very often:

  1. chrome-internal.googlesource.com/infradata/config:

    • configs/luci-token-server/service_accounts.cfg (service account names)
    • configs/chromium-swarm/pools.cfg (swarming pools)
  2. chromium.googlesource.com/chromium/tools/depot_tools:

    • recipes/recipe_modules/gclient/config.py (gclient config)