Bug 1333003 part 2 - Enable ASan builds and tests on Windows x64. r?dustin
MozReview-Commit-ID: GEYKhhuTNRD
--- 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