Index: testing/buildbot/README.md |
diff --git a/testing/buildbot/README.md b/testing/buildbot/README.md |
new file mode 100644 |
index 0000000000000000000000000000000000000000..af9fa8bab2bb1962f9abefcad9a2edf35975892d |
--- /dev/null |
+++ b/testing/buildbot/README.md |
@@ -0,0 +1,65 @@ |
+# Buildbot Testing Configuration Files |
+ |
+The files in this directory control how tests are run on the |
+[Chromium buildbots](https://www.chromium.org/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot). |
+In addition to specifying what tests run on which builders, they also specify |
+special arguments and constraints for the tests. |
+ |
+## A tour of the directory |
+* <master_name>.json -- buildbot configuration json files. These are used to |
+configure what tests are run on what builders, in addition to specifying |
+builder-specific arguments and parameters. |
+* [gn_isolate_map.pyl](../gn_isolate_map.pyl) -- maps Ninja build target names |
+to GN labels. Allows for certain overrides to get certain tests targets to work |
+with GN (and properly run when isolated). |
+* [trybot_analyze_config.json](../trybot_analyze_config.json) -- used to provide |
+exclusions to |
+[the analyze step](https://www.chromium.org/developers/testing/commit-queue/chromium_trybot-json) |
+on trybots. |
+* [filters/](../filters/) -- filters out tests that shouldn't be |
+run in a particular mode. |
+* [timeouts.py](../timeouts.py) -- calculates acceptable timeouts for tests by |
+analyzing their execution on |
+[swarming](https://github.com/luci/luci-py/tree/master/appengine/swarming). |
+* [manage.py](../manage.py) -- makes sure the buildbot configuration json is in |
+a standardized format. |
+ |
+## How the files are consumed |
+### Buildbot configuration json |
+Logic in the |
+[Chromium recipe](https://chromium.googlesource.com/chromium/tools/build/+/refs/heads/master/scripts/slave/recipes/chromium.py) |
+looks up each builder for each master and test generators in |
+[chromium_tests/steps.py](https://chromium.googlesource.com/chromium/tools/build/+/refs/heads/master/scripts/slave/recipe_modules/chromium_tests/steps.py) |
+parse the data. For example, as of |
+[a6e11220](https://chromium.googlesource.com/chromium/tools/build/+/a6e11220d97d578d6ba091abd68beba28a004722) |
agable
2016/12/01 01:31:54
...4722),
ghost stip (do not use)
2016/12/01 02:26:50
ish, but sure
|
+[generate_gtest](https://chromium.googlesource.com/chromium/tools/build/+/a6e11220d97d578d6ba091abd68beba28a004722/scripts/slave/recipe_modules/chromium_tests/steps.py#416) |
+parses any entry in a builder's |
+['gtest_tests'](https://chromium.googlesource.com/chromium/src/+/5750756522296b2a9a08009d8d2cc90db3b88f56/testing/buildbot/chromium.android.json#1243) |
+entry. |
+ |
+## How to edit ### Making the changes #### Buildbot configuration json After |
agable
2016/12/01 01:31:54
Looks like these got accidentally hoisted onto the
ghost stip (do not use)
2016/12/01 02:26:50
ugh, vim's "gq" isn't markdown aware and I thought
|
+editing any buildbot json, run ``./manage.py -w`` to load and write in the |
agable
2016/12/01 01:31:53
I think you only need single backticks
|
+canonical format. Then commit as normal. |
+ |
+Note that trybots mirror regular waterfall bots, with the mapping defined in |
+[trybots.py](https://chromium.googlesource.com/chromium/tools/build/+/refs/heads/master/scripts/slave/recipe_modules/chromium_tests/trybots.py). |
+This means that, as of |
+[81fcc4bc](https://chromium.googlesource.com/chromium/src/+/81fcc4bc6123ace8dd37db74fd2592e3e15ea46a/testing/buildbot/), |
+if you want to edit |
+[linux_android_rel_ng](https://chromium.googlesource.com/chromium/tools/build/+/59a2653d5f143213f4f166714657808b0c646bd7/scripts/slave/recipe_modules/chromium_tests/trybots.py#142), |
+you actually need to edit |
+[Android Tests](https://chromium.googlesource.com/chromium/src/+/81fcc4bc6123ace8dd37db74fd2592e3e15ea46a/testing/buildbot/chromium.linux.json#23). |
+ |
+### Trying the changes on trybots You should be able to try build changes that |
agable
2016/12/01 01:31:54
Some hoisting here too
|
+affect the trybots directly (for example, adding a test to linux_android_rel_ng |
+should show up immediately in your tryjob). Non-trybot changes have to be |
+landed manually :(. |
+ |
+## Capacity considerations when editing the buildbot configuration json When |
agable
2016/12/01 01:31:54
And here
|
+adding tests or bumping timeouts in the buildbot configuration json, care must |
+be taken to ensure the infrastructure has capacity to handle the extra load. |
+This is especially true for the established |
+[Chromium CQ builders](https://chromium.googlesource.com/chromium/src/+/master/infra/config/cq.cfg), |
+as they operate under strict execution requirements. Make sure to get an |
+infrastructure engineer on the Crossover Team to sign off that there is both |
+buildbot and swarming capacity available. |