xref: /aosp_15_r20/external/angle/infra/README.md (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker# ANGLE Testing Infrastructure
2*8975f5c5SAndroid Build Coastguard Worker
3*8975f5c5SAndroid Build Coastguard WorkerANGLE runs hundreds of thousands of tests on every change before it lands in
4*8975f5c5SAndroid Build Coastguard Workerthe tree. We scale our pre-commit and post-commit testing to many machines
5*8975f5c5SAndroid Build Coastguard Workerusing [Chromium Swarming][Swarming]. Our testing setup heavily leverages
6*8975f5c5SAndroid Build Coastguard Workerexisting work in Chromium. We also run compile-only
7*8975f5c5SAndroid Build Coastguard Worker[Standalone Testing][Standalone] that does not depend on a Chromium checkout.
8*8975f5c5SAndroid Build Coastguard Worker
9*8975f5c5SAndroid Build Coastguard WorkerAlso see the documentation on [ANGLE Wrangling][Wrangling] for more info.
10*8975f5c5SAndroid Build Coastguard Worker
11*8975f5c5SAndroid Build Coastguard Worker## Pre-Commit Testing
12*8975f5c5SAndroid Build Coastguard Worker
13*8975f5c5SAndroid Build Coastguard WorkerSee the pre-commit try waterfall here:
14*8975f5c5SAndroid Build Coastguard Worker
15*8975f5c5SAndroid Build Coastguard Worker[`https://ci.chromium.org/p/chromium/g/tryserver.chromium.angle/builders`](https://ci.chromium.org/p/chromium/g/tryserver.chromium.angle/builders)
16*8975f5c5SAndroid Build Coastguard Worker
17*8975f5c5SAndroid Build Coastguard WorkerWe currently run pre-commit tests on:
18*8975f5c5SAndroid Build Coastguard Worker
19*8975f5c5SAndroid Build Coastguard Worker * Windows 32-bit AMD and Windows 64-bit Intel and NVIDIA GPUs
20*8975f5c5SAndroid Build Coastguard Worker * Linux 64-bit NVIDIA and Intel GPUs
21*8975f5c5SAndroid Build Coastguard Worker * Mac NVIDIA, Intel and AMD GPUs
22*8975f5c5SAndroid Build Coastguard Worker * Pixel 4 and Nexus 5X
23*8975f5c5SAndroid Build Coastguard Worker * Fuchsia testing in a VM
24*8975f5c5SAndroid Build Coastguard Worker
25*8975f5c5SAndroid Build Coastguard WorkerLooking at an example build shows how tests are split up between machines. See for example:
26*8975f5c5SAndroid Build Coastguard Worker
27*8975f5c5SAndroid Build Coastguard Worker[`https://ci.chromium.org/ui/p/angle/builders/ci/mac-rel/8123/overview`](https://ci.chromium.org/ui/p/angle/builders/ci/mac-rel/8123/overview)
28*8975f5c5SAndroid Build Coastguard Worker
29*8975f5c5SAndroid Build Coastguard WorkerThis build ran 68 test steps across 3 GPU families. In some cases (e.g.
30*8975f5c5SAndroid Build Coastguard Worker`angle_deqp_gles3_metal_tests`) the test is split up between multiple machines to
31*8975f5c5SAndroid Build Coastguard Workerrun faster (in this case 2 different machines at once). This build took 23
32*8975f5c5SAndroid Build Coastguard Workerminutes to complete 72 minutes of real automated testing.
33*8975f5c5SAndroid Build Coastguard Worker
34*8975f5c5SAndroid Build Coastguard WorkerFor more details on running and working with our test sets see the docs in [Contributing Code][Contrib].
35*8975f5c5SAndroid Build Coastguard Worker
36*8975f5c5SAndroid Build Coastguard Worker[Swarming]: https://chromium-swarm.appspot.com/
37*8975f5c5SAndroid Build Coastguard Worker[Standalone]: #ANGLE-Standalone-Testing
38*8975f5c5SAndroid Build Coastguard Worker[Contrib]: ../doc/ContributingCode.md#Testing
39*8975f5c5SAndroid Build Coastguard Worker[Wrangling]: ANGLEWrangling.md
40*8975f5c5SAndroid Build Coastguard Worker
41*8975f5c5SAndroid Build Coastguard Worker## ANGLE Standalone Testing
42*8975f5c5SAndroid Build Coastguard Worker
43*8975f5c5SAndroid Build Coastguard WorkerIn addition to the ANGLE try bots using Chrome, and the GPU.FYI bots, ANGLE
44*8975f5c5SAndroid Build Coastguard Workerhas standalone testing on the Chrome infrastructure. Currently these tests are
45*8975f5c5SAndroid Build Coastguard Workercompile-only. This page is for maintaining the configurations that don't use
46*8975f5c5SAndroid Build Coastguard WorkerChromium. Also see the main instructions for [ANGLE Wrangling](ANGLEWrangling.md).
47*8975f5c5SAndroid Build Coastguard Worker
48*8975f5c5SAndroid Build Coastguard WorkerIt's the ANGLE team's responsibility for maintaining this testing
49*8975f5c5SAndroid Build Coastguard Workerinfrastructure. The bot configurations live in four different repos and six
50*8975f5c5SAndroid Build Coastguard Workerbranches.
51*8975f5c5SAndroid Build Coastguard Worker
52*8975f5c5SAndroid Build Coastguard Worker## Info Consoles
53*8975f5c5SAndroid Build Coastguard Worker
54*8975f5c5SAndroid Build Coastguard WorkerContinuous builders for every ANGLE revision are found on the CI console:
55*8975f5c5SAndroid Build Coastguard Worker
56*8975f5c5SAndroid Build Coastguard Worker[https://ci.chromium.org/p/angle/g/ci/console](https://ci.chromium.org/p/angle/g/ci/console)
57*8975f5c5SAndroid Build Coastguard Worker
58*8975f5c5SAndroid Build Coastguard WorkerTry jobs from pre-commit builds are found on the builders console:
59*8975f5c5SAndroid Build Coastguard Worker
60*8975f5c5SAndroid Build Coastguard Worker[https://ci.chromium.org/p/angle/g/try/builders](https://ci.chromium.org/p/angle/g/try/builders)
61*8975f5c5SAndroid Build Coastguard Worker
62*8975f5c5SAndroid Build Coastguard Worker## How to add a new build configuration
63*8975f5c5SAndroid Build Coastguard Worker
64*8975f5c5SAndroid Build Coastguard Worker 1. [`bugs.chromium.org/p/chromium/issues/entry?template=Build+Infrastructure`](http://bugs.chromium.org/p/chromium/issues/entry?template=Build+Infrastructure):
65*8975f5c5SAndroid Build Coastguard Worker
66*8975f5c5SAndroid Build Coastguard Worker    * If adding a Mac bot, request new slaves by filing an infra issue.
67*8975f5c5SAndroid Build Coastguard Worker
68*8975f5c5SAndroid Build Coastguard Worker 1. [`chrome-internal.googlesource.com/infradata/config`](http://chrome-internal.googlesource.com/infradata/config):
69*8975f5c5SAndroid Build Coastguard Worker
70*8975f5c5SAndroid Build Coastguard Worker    * 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.
71*8975f5c5SAndroid Build Coastguard Worker
72*8975f5c5SAndroid Build Coastguard Worker 1. [`chromium.googlesource.com/chromium/tools/build`](https://chromium.googlesource.com/chromium/tools/build):
73*8975f5c5SAndroid Build Coastguard Worker
74*8975f5c5SAndroid Build Coastguard Worker    * Update **`scripts/slave/recipes/angle.py`** with new the config.
75*8975f5c5SAndroid Build Coastguard Worker    * The recipe code requires 100% code coverage through mock bots, so add mock bot config to GenTests.
76*8975f5c5SAndroid Build Coastguard Worker    * Maybe run `./scripts/slave/recipes.py test train` to update checked-in golden files. This might no longer be necessary.
77*8975f5c5SAndroid Build Coastguard Worker
78*8975f5c5SAndroid Build Coastguard Worker 1. [`chromium.googlesource.com/angle/angle`](http://chromium.googlesource.com/angle/angle):
79*8975f5c5SAndroid Build Coastguard Worker
80*8975f5c5SAndroid Build Coastguard Worker    * Update **`infra/config/global/cr-buildbucket.cfg`** to add the new builder (to ci and try), and set the new config option.
81*8975f5c5SAndroid Build Coastguard Worker    * Update **`infra/config/global/luci-milo.cfg`** to make the builders show up on the ci and try waterfalls.
82*8975f5c5SAndroid Build Coastguard Worker    * Update **`infra/config/global/luci-scheduler.cfg`** to make the builders trigger on new commits or try jobs respectively.
83*8975f5c5SAndroid Build Coastguard Worker    * Update **`infra/config/global/commit-queue.cfg`** to add the builder to the default CQ jobs (if desired).
84*8975f5c5SAndroid Build Coastguard Worker
85*8975f5c5SAndroid Build Coastguard Worker## Other Configuration
86*8975f5c5SAndroid Build Coastguard Worker
87*8975f5c5SAndroid Build Coastguard WorkerThere are other places where configuration for ANGLE infra lives. These are files that we shouldn't need to modify very often:
88*8975f5c5SAndroid Build Coastguard Worker
89*8975f5c5SAndroid Build Coastguard Worker 1. [`chrome-internal.googlesource.com/infradata/config`](http://chrome-internal.googlesource.com/infradata/config):
90*8975f5c5SAndroid Build Coastguard Worker
91*8975f5c5SAndroid Build Coastguard Worker    * **`configs/luci-token-server/service_accounts.cfg`** (service account names)
92*8975f5c5SAndroid Build Coastguard Worker    * **`configs/chromium-swarm/pools.cfg`** (swarming pools)
93*8975f5c5SAndroid Build Coastguard Worker
94*8975f5c5SAndroid Build Coastguard Worker 1. [`chromium.googlesource.com/chromium/tools/depot_tools`](http://chromium.googlesource.com/chromium/tools/depot_tools):
95*8975f5c5SAndroid Build Coastguard Worker
96*8975f5c5SAndroid Build Coastguard Worker    * **`recipes/recipe_modules/gclient/config.py`** (gclient config)
97