Bug 1429236: put jsreftests in their own scheduling component; r?jmaher
This adds an 'override' for the default scheduling component for tests, which
is based on their suite.
MozReview-Commit-ID: 6vd8sb2zeuU
--- a/taskcluster/ci/test/reftest.yml
+++ b/taskcluster/ci/test/reftest.yml
@@ -47,16 +47,17 @@ crashtest:
by-test-platform:
linux64-qr/.*: 1
windows10-64-asan.*: 3
default: default
jsreftest:
description: "JS Reftest run"
suite: reftest/jsreftest
+ schedules-component: jsreftest # scheduling for this reftest is different from the others..
treeherder-symbol: R(J)
instance-size:
by-test-platform:
android.*: xlarge
default: default
chunks:
by-test-platform:
android-4.3-arm7-api-16/debug: 100
--- a/taskcluster/taskgraph/transforms/tests.py
+++ b/taskcluster/taskgraph/transforms/tests.py
@@ -29,16 +29,17 @@ from taskgraph.util.schema import (
Schema,
)
from mozbuild.schedules import INCLUSIVE_COMPONENTS
from voluptuous import (
Any,
Optional,
Required,
+ Exclusive,
)
import copy
import logging
# default worker types keyed by instance-size
LINUX_WORKER_TYPES = {
'large': 'aws-provisioner-v1/gecko-t-linux-large',
@@ -374,20 +375,24 @@ test_description_schema = Schema({
# the name of the test (the key in tests.yml)
'test-name': basestring,
# the product name, defaults to firefox
Optional('product'): basestring,
# conditional files to determine when these tests should be run
- Optional('when'): Any({
+ Exclusive(Optional('when'), 'optimization'): Any({
Optional('files-changed'): [basestring],
}),
+ # The SCHEDULES component for this task; this defaults to the suite
+ # (not including the flavor) but can be overridden here.
+ Exclusive(Optional('schedules-component'), 'optimization'): basestring,
+
Optional('worker-type'): optionally_keyed_by(
'test-platform',
Any(basestring, None),
),
}, required=True)
@@ -1003,17 +1008,17 @@ def make_job_description(config, tests):
}
jobdesc['treeherder'] = {
'symbol': test['treeherder-symbol'],
'kind': 'test',
'tier': test['tier'],
'platform': test.get('treeherder-machine-platform', test['build-platform']),
}
- suite = attributes['unittest_suite']
+ suite = test.get('schedules-component', attributes['unittest_suite'])
if suite in INCLUSIVE_COMPONENTS:
# if this is an "inclusive" test, then all files which might
# cause it to run are annotated with SCHEDULES in moz.build,
# so do not include the platform or any other components here
schedules = [suite]
else:
schedules = [suite, platform_family(test['build-platform'])]