Bug 1381577 - Part AG; Rework how test platform variants are calculated for BBB buildernames. r=kmoir draft
authorJustin Wood <Callek@gmail.com>
Wed, 19 Jul 2017 22:21:37 -0400
changeset 613375 d99a7fd0a24bb458f2798c69e00141f4cca785c1
parent 613374 4e3005f35bc6c4ef0951230f344d0fb3b3c101ff
child 613376 d0e59313380330b71db8d494cdb013a6386af4c3
push id69770
push userCallek@gmail.com
push dateFri, 21 Jul 2017 20:09:14 +0000
reviewerskmoir
bugs1381577
milestone56.0a1
Bug 1381577 - Part AG; Rework how test platform variants are calculated for BBB buildernames. r=kmoir Land date changes to support windows nightlies onto central MozReview-Commit-ID: DLfhmUIKZYe
taskcluster/taskgraph/transforms/job/mozharness_test.py
--- a/taskcluster/taskgraph/transforms/job/mozharness_test.py
+++ b/taskcluster/taskgraph/transforms/job/mozharness_test.py
@@ -11,36 +11,62 @@ from taskgraph.util.schema import Schema
 from taskgraph.transforms.tests import (
     test_description_schema,
     normpath
 )
 from taskgraph.transforms.job.common import (
     support_vcs_checkout,
 )
 import os
-import re
 
 BUILDER_NAME_PREFIX = {
     'linux64-pgo': 'Ubuntu VM 12.04 x64',
     'linux64': 'Ubuntu VM 12.04 x64',
     'linux64-nightly': 'Ubuntu VM 12.04 x64',
     'linux64-asan': 'Ubuntu ASAN VM 12.04 x64',
     'linux64-ccov': 'Ubuntu Code Coverage VM 12.04 x64',
     'linux64-jsdcov': 'Ubuntu Code Coverage VM 12.04 x64',
     'linux64-stylo': 'Ubuntu VM 12.04 x64',
+    'linux64-stylo-sequential': 'Ubuntu VM 12.04 x64',
+    'linux64-devedition': 'Ubuntu VM 12.04 x64',
     'linux64-devedition-nightly': 'Ubuntu VM 12.04 x64',
     'macosx64': 'Rev7 MacOSX Yosemite 10.10.5',
     'macosx64-devedition': 'Rev7 MacOSX Yosemite 10.10.5 DevEdition',
     'android-4.3-arm7-api-15': 'Android 4.3 armv7 API 15+',
     'android-4.2-x86': 'Android 4.2 x86 Emulator',
     'android-4.3-arm7-api-15-gradle': 'Android 4.3 armv7 API 15+',
-    'win32': 'Windows 7 x86',
-    'win64': 'Windows 10 x64',
+    'windows10-64': 'Windows 10 64-bit',
+    'windows10-64-nightly': 'Windows 10 64-bit',
+    'windows10-64-pgo': 'Windows 10 64-bit',
+    'windows10-64-asan': 'Windows 10 64-bit',
+    'windows7-32': 'Windows 7 32-bit',
+    'windows7-32-nightly': 'Windows 7 32-bit',
+    'windows7-32-pgo': 'Windows 7 32-bit',
 }
 
+VARIANTS = [
+    'nightly',
+    'devedition',
+    'pgo',
+    'asan',
+    'stylo',
+    'stylo-sequential',
+    'qr',
+    'ccov',
+    'jsdcov',
+]
+
+
+def get_variant(test_platform):
+    for v in VARIANTS:
+        if '-{}/'.format(v) in test_platform:
+            return v
+    return ''
+
+
 test_description_schema = {str(k): v for k, v in test_description_schema.schema.iteritems()}
 
 mozharness_test_run_schema = Schema({
     Required('using'): 'mozharness-test',
     Required('test'): test_description_schema,
 })
 
 
@@ -389,17 +415,18 @@ def mozharness_test_on_native_engine(con
 
 @run_job_using('buildbot-bridge', 'mozharness-test', schema=mozharness_test_run_schema)
 def mozharness_test_buildbot_bridge(config, job, taskdesc):
     test = taskdesc['run']['test']
     mozharness = test['mozharness']
     worker = taskdesc['worker']
 
     branch = config.params['project']
-    platform, build_type = test['build-platform'].split('/')
+    build_platform, build_type = test['build-platform'].split('/')
+    test_platform = test['test-platform'].split('/')[0]
     test_name = test.get('try-name', test['test-name'])
     mozharness = test['mozharness']
 
     # mochitest e10s follows the pattern mochitest-e10s-<suffix>
     # in buildbot, except for these special cases
     buildbot_specials = [
         'mochitest-webgl',
         'mochitest-clipboard',
@@ -427,45 +454,43 @@ def mozharness_test_buildbot_bridge(conf
     # in buildbot, mochitest-webgl is called mochitest-gl
     test_name = test_name.replace('webgl', 'gl')
 
     if mozharness.get('chunked', False):
         this_chunk = test.get('this-chunk')
         test_name = '{}-{}'.format(test_name, this_chunk)
 
     if test.get('suite', '') == 'talos':
-        # on linux64-<variant>/<build>, we add the variant to the buildername
-        m = re.match(r'\w+-([^/]+)/.*', test['test-platform'])
-        variant = m.group(1) if m and m.group(1) else ''
+        variant = get_variant(test['test-platform'])
 
         # On beta and release, we run nightly builds on-push; the talos
         # builders need to run against non-nightly buildernames
         if variant == 'nightly':
             variant = ''
 
         # this variant name has branch after the variant type in BBB bug 1338871
         if variant in ('stylo', 'stylo-sequential', 'devedition'):
             name = '{prefix} {variant} {branch} talos {test_name}'
         elif variant:
             name = '{prefix} {branch} {variant} talos {test_name}'
         else:
             name = '{prefix} {branch} talos {test_name}'
 
         buildername = name.format(
-            prefix=BUILDER_NAME_PREFIX[platform],
+            prefix=BUILDER_NAME_PREFIX[test_platform],
             variant=variant,
             branch=branch,
             test_name=test_name
         )
 
         if buildername.startswith('Ubuntu'):
             buildername = buildername.replace('VM', 'HW')
     else:
         buildername = '{} {} {} test {}'.format(
-            BUILDER_NAME_PREFIX[platform],
+            BUILDER_NAME_PREFIX[test_platform],
             branch,
             build_type,
             test_name
         )
 
     worker.update({
         'buildername': buildername,
         'sourcestamp': {