Bug 1333003 part 2 - Enable ASan builds and tests on Windows x64. r?dustin draft
authorTing-Yu Chou <janus926@gmail.com>
Fri, 10 Mar 2017 12:03:05 +0800
changeset 503417 4f293f780f960127b8a3c84a4be544767a93d051
parent 503416 2c10d0a94565618d46203d2cfb1275e6002e6e9a
child 503418 edf52dbec742f16fd66ce5dc01bcbe028d8f7615
push id50571
push userbmo:janus926@gmail.com
push dateThu, 23 Mar 2017 06:09:19 +0000
reviewersdustin
bugs1333003
milestone55.0a1
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