gecko-dev/build/sparse-profiles/taskgraph
Andrew Halberstadt 26e9db86f8 Bug 1583353 - [taskgraph] Implement test chunking in transforms r=gbrown
We've long handled chunks by defining the total number of chunks in our CI
configuration, and then passing that value down into the test harnesses at task
runtime (via the '--this-chunk' and '--total-chunks' parameters).  The test
harness then runs an algorithm to determine which tests should be run in "this"
chunk.

There are several problems with this approach, but by far the biggest is that
we can't use test information in our scheduling algorithms. The information
simply isn't available yet. This patch switches things around such that we
determine which tests go in which tasks during the taskgraph generation. This
means we have perfect information around which tasks are running which tests,
and if e.g a ccov or machine learning algorithm deems a particular test
important, we can make sure to *only* schedule the tasks that contain that
test.

I'm planning to enable this a couple suites at a time so we don't accidentally
stop running tests. This specifically only enables this mode for
'mochitest-media', 'mochitest-browser-chrome' and 'mochitest-devtools-chrome'.
I chose these suites because they are the ones that are already using the
'chunk_by_runtime' algorithm.

Differential Revision: https://phabricator.services.mozilla.com/D52729

--HG--
extra : moz-landing-system : lando
2019-12-11 21:10:48 +00:00

81 lines
2.1 KiB
Plaintext

%include build/sparse-profiles/mach
# In order to decide which docker images to build, we need all the
# files that docker images depend on as well
%include build/sparse-profiles/docker-image
[include]
# These files are read as part of generating the taskgraph.
path:browser/locales/l10n-changesets.json
path:browser/locales/l10n-onchange-changesets.json
path:mobile/locales/l10n-changesets.json
path:mobile/locales/l10n-onchange-changesets.json
path:browser/locales/shipped-locales
path:browser/config/version_display.txt
path:browser/config/version.txt
path:browser/config/whats_new_page.yml
# Lots of random files in here are read. Just pull in the whole thing.
path:build/
# TODO remove once bug 1402010 is resolved and test manifests aren't
# processed in Files() reading mode in moz.build files.
path:layout/tools/reftest/
path:testing/web-platform/tests/tools/
# The main meat of this profile.
path:taskcluster/
# Various files in these directories are read by taskgraph. Just pull
# them all in.
path:testing/config/tooltool-manifests/
path:testing/mozharness/
path:tools/lint/
# for new-style try pushes
path:try_task_config.json
# Moz.build files are read in filesystem mode
glob:**/moz.build
glob:**/*.mozbuild
# Moz.configure files could trigger changes
glob:**/*.configure
# Tooltool manifests also need to be opened. Assume they
# are all somewhere in "tooltool-manifests" directories.
glob:**/tooltool-manifests/**
# For test chunking
glob:**/*.ini
glob:**/*.list
path:testing/mozbase/manifestparser
path:testing/runtimes
# For scheduling android-gradle-dependencies.
path:mobile/android/config/
glob:**/*.gradle
# for action-task building
path:.taskcluster.yml
path:.cron.yml
# for the wrench-deps toolchain task
path:gfx/wr/Cargo.lock
# for the mar-tools toolchain task
path:mfbt/
path:modules/libmar/
path:other-licenses/bsdiff/
path:other-licenses/nsis/Contrib/CityHash/cityhash/
path:toolkit/mozapps/update/updater
# for the browsertime toolchain task
path:tools/browsertime/mach_commands.py
path:tools/browsertime/package.json
# for the geckodriver toolchain task
path:testing/geckodriver
path:testing/mozbase/rust
path:testing/webdriver