Bug 1333003 part 2 - Enable ASan builds and tests on Windows x64. r=dustin
☠☠ backed out by e116d10d2150 ☠ ☠
authorTing-Yu Chou <janus926@gmail.com>
Fri, 10 Mar 2017 12:03:05 +0800
changeset 349027 911cc14899c8f7d73bcca87c464f2fb04bcd5812
parent 349026 a89806ba0faacc610f697e4f0ccdc162d80c1499
child 349028 40fcebfabb33200a2417bc8c516edc55bccd7c10
push id39387
push usertchou@mozilla.com
push dateThu, 23 Mar 2017 09:06:44 +0000
treeherderautoland@a796423751ce [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdustin
bugs1333003
milestone55.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 1333003 part 2 - Enable ASan builds and tests on Windows x64. r=dustin MozReview-Commit-ID: GEYKhhuTNRD
taskcluster/ci/build/windows.yml
taskcluster/ci/test/test-platforms.yml
taskcluster/taskgraph/transforms/gecko_v2_whitelist.py
taskcluster/taskgraph/transforms/tests.py
--- a/taskcluster/ci/build/windows.yml
+++ b/taskcluster/ci/build/windows.yml
@@ -230,8 +230,48 @@ win32-qr/opt:
         implementation: generic-worker
         max-run-time: 7200
     run:
         using: mozharness
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/taskcluster_firefox_win32_qr_opt.py
     run-on-projects: [ 'graphics' ]
+
+win64-asan/debug:
+    description: "Win64 Debug ASAN"
+    index:
+        product: firefox
+        job-name: win64-asan-debug
+    treeherder:
+        platform: windows2012-64/asan
+        symbol: tc(Bd)
+        tier: 3
+    worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
+    worker:
+        implementation: generic-worker
+        max-run-time: 7200
+    run:
+        using: mozharness
+        script: mozharness/scripts/fx_desktop_build.py
+        config:
+            - builds/taskcluster_firefox_win64_asan_debug.py
+    run-on-projects: []
+
+win64-asan/opt:
+    description: "Win64 Opt ASAN"
+    index:
+        product: firefox
+        job-name: win64-asan-opt
+    treeherder:
+        platform: windows2012-64/asan
+        symbol: tc(Bo)
+        tier: 3
+    worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
+    worker:
+        implementation: generic-worker
+        max-run-time: 7200
+    run:
+        using: mozharness
+        script: mozharness/scripts/fx_desktop_build.py
+        config:
+            - builds/taskcluster_firefox_win64_asan_opt.py
+    run-on-projects: []
\ No newline at end of file
--- a/taskcluster/ci/test/test-platforms.yml
+++ b/taskcluster/ci/test/test-platforms.yml
@@ -145,16 +145,21 @@ windows10-64-vm/opt:
 #    build-platform: win64/debug
 #    test-sets:
 #        - windows-gpu-tests
 #windows10-64/opt:
 #    build-platform: win64/opt
 #    test-sets:
 #        - windows-gpu-tests
 
+windows10-64-asan/opt:
+    build-platform: win64-asan/opt
+    test-sets:
+        - common-tests
+
 ##
 # MacOS X platforms (matching /macosx.*/)
 
 macosx64/debug:
     build-platform: macosx64/debug
     test-sets:
         - macosx64-tests-debug
 
--- a/taskcluster/taskgraph/transforms/gecko_v2_whitelist.py
+++ b/taskcluster/taskgraph/transforms/gecko_v2_whitelist.py
@@ -79,16 +79,18 @@ JOB_NAME_WHITELIST = set([
     'win64-clang-tidy',
     'win64-debug',
     'win64-opt',
     'win64-pgo',
     'win64-st-an-debug',
     'win64-st-an-opt',
     'win64-qr-debug',
     'win64-qr-opt',
+    'win64-asan-debug',
+    'win64-asan-opt',
 ])
 
 JOB_NAME_WHITELIST_ERROR = """\
 The gecko-v2 job name {} is not in the whitelist in gecko_v2_whitelist.py.
 If this job runs on Buildbot, please ensure that the job names match between
 Buildbot and TaskCluster, then add the job name to the whitelist.  If this is a
 new job, there is nothing to check -- just add the job to the whitelist.
 """
--- a/taskcluster/taskgraph/transforms/tests.py
+++ b/taskcluster/taskgraph/transforms/tests.py
@@ -41,17 +41,18 @@ WORKER_TYPE = {
     'large': 'aws-provisioner-v1/gecko-t-linux-large',
     'xlarge': 'aws-provisioner-v1/gecko-t-linux-xlarge',
     'legacy': 'aws-provisioner-v1/gecko-t-linux-medium',
     'default': 'aws-provisioner-v1/gecko-t-linux-large',
     # windows worker types keyed by test-platform
     'windows7-32-vm': 'aws-provisioner-v1/gecko-t-win7-32',
     'windows7-32': 'aws-provisioner-v1/gecko-t-win7-32-gpu',
     'windows10-64-vm': 'aws-provisioner-v1/gecko-t-win10-64',
-    'windows10-64': 'aws-provisioner-v1/gecko-t-win10-64-gpu'
+    'windows10-64': 'aws-provisioner-v1/gecko-t-win10-64-gpu',
+    'windows10-64-asan': 'aws-provisioner-v1/gecko-t-win10-64-gpu'
 }
 
 logger = logging.getLogger(__name__)
 
 transforms = TransformSequence()
 
 # Schema for a test description
 #
@@ -351,16 +352,17 @@ def set_treeherder_machine_platform(conf
     """Set the appropriate task.extra.treeherder.machine.platform"""
     translation = {
         # Linux64 build platforms for asan and pgo are specified differently to
         # treeherder.
         'linux64-asan/opt': 'linux64/asan',
         'linux64-pgo/opt': 'linux64/pgo',
         'macosx64/debug': 'osx-10-10/debug',
         'macosx64/opt': 'osx-10-10/opt',
+        'win64-asan/opt': 'windows10-64/asan',
         # The build names for Android platforms have partially evolved over the
         # years and need to be translated.
         'android-api-15/debug': 'android-4-3-armv7-api15/debug',
         'android-api-15/opt': 'android-4-3-armv7-api15/opt',
         'android-x86/opt': 'android-4-2-x86/opt',
         'android-api-15-gradle/opt': 'android-api-15-gradle/opt',
     }
     for test in tests:
@@ -444,17 +446,18 @@ def set_expires_after(config, tests):
 @transforms.add
 def set_download_symbols(config, tests):
     """In general, we download symbols immediately for debug builds, but only
     on demand for everything else. ASAN builds shouldn't download
     symbols since they don't product symbol zips see bug 1283879"""
     for test in tests:
         if test['test-platform'].split('/')[-1] == 'debug':
             test['mozharness']['download-symbols'] = True
-        elif test['build-platform'] == 'linux64-asan/opt':
+        elif test['build-platform'] == 'linux64-asan/opt' or \
+                test['build-platform'] == 'windows10-64-asan/opt':
             if 'download-symbols' in test['mozharness']:
                 del test['mozharness']['download-symbols']
         else:
             test['mozharness']['download-symbols'] = 'ondemand'
         yield test
 
 
 @transforms.add