Bug 1410911 - back out bug 1403322; r=gbrown
authorDustin J. Mitchell <dustin@mozilla.com>
Fri, 10 Nov 2017 18:19:47 +0000
changeset 391544 c1848b8de242de268de93281ce963599413989c6
parent 391543 676474b0b6b8db9b8a0baa73ff4e6826a69dbcd7
child 391545 d720dddd8e4e22f6470efb35f0b795e3dd899376
push id32892
push userncsoregi@mozilla.com
push dateMon, 13 Nov 2017 22:56:04 +0000
treeherdermozilla-central@3dddb19f2a07 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersgbrown
bugs1410911, 1403322
milestone59.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1410911 - back out bug 1403322; r=gbrown Backed out changesets 37db725b2308 ccc4f12edef0 e3a310b6b896 547109f6eb1d 5c50f100460d MozReview-Commit-ID: 5M6Mevz6LZV
js/moz.build
moz.build
python/mozbuild/mozbuild/schedules.py
taskcluster/ci/test/compiled.yml
taskcluster/ci/test/misc.yml
taskcluster/ci/test/reftest.yml
taskcluster/taskgraph/transforms/tests.py
--- a/js/moz.build
+++ b/js/moz.build
@@ -6,14 +6,8 @@ with Files("**"):
     BUG_COMPONENT = component_engine
 
 for header in ('GCAnnotations.h', 'GCAPI.h', 'HeapAPI.h', 'RootingAPI.h', 'SliceBudget.h', 'SweepingAPI.h', 'TraceKind.h', 'TracingAPI.h', 'WeakMapPtr.h', 'GCHashTable.h', 'GCPolicyAPI.h', 'GCVariant.h', 'GCVector.h'):
     with Files('public/' + header):
         BUG_COMPONENT = component_gc
 
 with Files('public/TrackedOptimizationInfo.h'):
     BUG_COMPONENT = component_jit
-
-with Files("src/**"):
-    SCHEDULES.inclusive += ['jittest', 'jsreftest']
-
-with Files("public/**"):
-    SCHEDULES.inclusive += ['jittest', 'jsreftest']
--- a/moz.build
+++ b/moz.build
@@ -50,28 +50,16 @@ with Files('README.txt'):
 
 with Files("nsprpub/**"):
     BUG_COMPONENT = ("NSPR", "NSPR")
 
 with Files('**/Makefile.in'):
     BUG_COMPONENT = ('Core', 'Build Config')
     FINAL = True
 
-with Files("**/*.js"):
-    SCHEDULES.inclusive += ['test-verify']
-
-with Files("**/*.html"):
-    SCHEDULES.inclusive += ['test-verify']
-
-with Files("**/*.xhtml"):
-    SCHEDULES.inclusive += ['test-verify']
-
-with Files("**/*.xul"):
-    SCHEDULES.inclusive += ['test-verify']
-
 CONFIGURE_SUBST_FILES += [
     'config/autoconf.mk',
     'config/emptyvars.mk',
 ]
 
 if CONFIG['ENABLE_CLANG_PLUGIN']:
     DIRS += ['build/clang-plugin']
 
--- a/python/mozbuild/mozbuild/schedules.py
+++ b/python/mozbuild/mozbuild/schedules.py
@@ -10,36 +10,32 @@ skip-unless-schedules optimizations in t
 from __future__ import absolute_import, unicode_literals, print_function
 
 # TODO: ideally these lists could be specified in moz.build itself
 
 INCLUSIVE_COMPONENTS = [
     'py-lint',
     'js-lint',
     'yaml-lint',
-    # test suites that only run when certain files have changed
-    'jittest',
-    'test-verify',
-    # test flavors (narrower than suites)
-    'jsreftest',
 ]
 INCLUSIVE_COMPONENTS = sorted(INCLUSIVE_COMPONENTS)
 
 EXCLUSIVE_COMPONENTS = [
     # os families
     'android',
     'linux',
     'macosx',
     'windows',
     # test suites
     'awsy',
     'cppunittest',
     'firefox-ui',
     'geckoview',
     'gtest',
+    'jittest',
     'marionette',
     'mochitest',
     'reftest',
     'robocop',
     'talos',
     'telemetry-tests-client',
     'xpcshell',
     'xpcshell-coverage',
--- a/taskcluster/ci/test/compiled.yml
+++ b/taskcluster/ci/test/compiled.yml
@@ -65,12 +65,16 @@ jittest:
             macosx.*: 1
             default: 6
     mozharness:
         chunked:
           by-test-platform:
             windows.*: false
             macosx.*: false
             default: true
+    when:
+        files-changed:
+            - js/src/**
+            - js/public/**
     tier:
         by-test-platform:
             windows10-64-asan.*: 3
             default: default
--- a/taskcluster/ci/test/misc.yml
+++ b/taskcluster/ci/test/misc.yml
@@ -49,17 +49,17 @@ telemetry-tests-client:
         config:
             by-test-platform:
                 linux.*:
                     - remove_executables.py
                 windows.*: []
 
 test-verify:
     description: "Extra verification of tests modified on this push"
-    suite: test-verify
+    suite: test-verification
     treeherder-symbol: tc(TV)
     loopback-video: true
     max-run-time: 5400
     allow-software-gl-layers: false
     run-on-projects:
         by-test-platform:
             # do not run on ccov; see also the enable_code_coverage transform
             linux64-ccov/.*: []
@@ -84,8 +84,14 @@ test-verify:
                 macosx.*:
                     - remove_executables.py
                     - unittests/mac_unittest.py
                 windows.*:
                     - unittests/win_taskcluster_unittest.py
         no-read-buildbot-config: true
         extra-options:
             - --verify
+    when:
+        files-changed:
+            - '**/*.js'
+            - '**/*.html'
+            - '**/*.xhtml'
+            - '**/*.xul'
--- a/taskcluster/ci/test/reftest.yml
+++ b/taskcluster/ci/test/reftest.yml
@@ -62,17 +62,19 @@ jsreftest:
             linux64-jsdcov/opt: false
             windows10-64/debug: both
             default: true
     max-run-time:
         by-test-platform:
             android.*: 7200
             default: 3600
     when:
-        schedules: ['jsreftest']
+        files-changed:
+            - js/src/**
+            - js/public/**
     tier:
         by-test-platform:
             linux64-qr/.*: 1
             windows10-64-asan.*: 3
             default: default
 
 reftest:
     description: "Reftest run"
--- a/taskcluster/taskgraph/transforms/tests.py
+++ b/taskcluster/taskgraph/transforms/tests.py
@@ -361,21 +361,20 @@ test_description_schema = Schema({
     'test-platform': basestring,
 
     # the name of the test (the key in tests.yml)
     'test-name': basestring,
 
     # the product name, defaults to firefox
     Optional('product'): basestring,
 
-    Optional('when'): {
-        # Run this test when the given SCHEDULES components have changed; the
-        # test suite and platform family are added to this list automatically.
-        Optional('schedules'): [basestring],
-    },
+    # conditional files to determine when these tests should be run
+    Optional('when'): Any({
+        Optional('files-changed'): [basestring],
+    }),
 
     Optional('worker-type'): optionally_keyed_by(
         'test-platform',
         Any(basestring, None),
     ),
 
 }, required=True)
 
@@ -636,17 +635,17 @@ def handle_suite_category(config, tests)
             suite = flavor = test['suite']
 
         test.setdefault('attributes', {})
         test['attributes']['unittest_suite'] = suite
         test['attributes']['unittest_flavor'] = flavor
 
         script = test['mozharness']['script']
         category_arg = None
-        if suite == 'test-verify':
+        if suite == 'test-verification':
             pass
         elif script == 'android_emulator_unittest.py':
             category_arg = '--test-suite'
         elif script == 'desktop_unittest.py':
             category_arg = '--{}-suite'.format(suite)
 
         if category_arg:
             test['mozharness'].setdefault('extra-options', [])
@@ -971,26 +970,26 @@ 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']),
         }
 
-        schedules = [attributes['unittest_suite'], platform_family(test['build-platform'])]
-        when = test.get('when')
-        if when and 'schedules' in when:
-            schedules.extend(when['schedules'])
-        if config.params['project'] != 'try':
-            # for non-try branches, include SETA
-            jobdesc['optimization'] = {'skip-unless-schedules-or-seta': schedules}
+        if test.get('when'):
+            jobdesc['when'] = test['when']
         else:
-            # otherwise just use skip-unless-schedules
-            jobdesc['optimization'] = {'skip-unless-schedules': schedules}
+            schedules = [attributes['unittest_suite'], platform_family(test['build-platform'])]
+            if config.params['project'] != 'try':
+                # for non-try branches, include SETA
+                jobdesc['optimization'] = {'skip-unless-schedules-or-seta': schedules}
+            else:
+                # otherwise just use skip-unless-schedules
+                jobdesc['optimization'] = {'skip-unless-schedules': schedules}
 
         run = jobdesc['run'] = {}
         run['using'] = 'mozharness-test'
         run['test'] = test
 
         jobdesc['worker-type'] = test.pop('worker-type')
 
         yield jobdesc