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