Bug 1429236: put jsreftests in their own scheduling component; r?jmaher draft
authorDustin J. Mitchell <dustin@mozilla.com>
Fri, 12 Jan 2018 14:17:34 +0000
changeset 722703 2fd9f8c296738569374687a7fccd275bd7e696bc
parent 722672 6ffbba9ce0ef9ec77a63445f068f2e218ed4830f
child 746665 82514d46a3ff540f74a3d619661ff1ec5c02070d
push id96205
push userdmitchell@mozilla.com
push dateFri, 19 Jan 2018 16:29:54 +0000
reviewersjmaher
bugs1429236
milestone59.0a1
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
taskcluster/ci/test/reftest.yml
taskcluster/taskgraph/transforms/tests.py
--- 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'])]