Mypal/taskcluster/taskgraph/transforms/tests/desktop_test.py

119 lines
4.2 KiB
Python

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
"""
These transforms are specific to the desktop-test kind, and apply defaults to
the test descriptions appropriate to that kind.
Both the input to and output from these transforms must conform to
`taskgraph.transforms.tests.test:test_schema`.
"""
from __future__ import absolute_import, print_function, unicode_literals
from taskgraph.transforms.base import TransformSequence, get_keyed_by
from taskgraph.util.treeherder import split_symbol, join_symbol
import copy
transforms = TransformSequence()
@transforms.add
def set_defaults(config, tests):
for test in tests:
build_platform = test['build-platform']
if build_platform.startswith('macosx'):
target = 'target.dmg'
else:
target = 'target.tar.bz2'
test['mozharness']['build-artifact-name'] = 'public/build/' + target
# all desktop tests want to run the bits that require node
test['mozharness']['set-moz-node-path'] = True
yield test
@transforms.add
def set_treeherder_machine_platform(config, tests):
"""Set the appropriate task.extra.treeherder.machine.platform"""
# Linux64 build platforms for asan and pgo are specified differently to
# treeherder. This is temporary until we can clean up the handling of
# platforms
translation = {
'linux64-asan/opt': 'linux64/asan',
'linux64-pgo/opt': 'linux64/pgo',
'macosx64/debug': 'osx-10-10/debug',
'macosx64/opt': 'osx-10-10/opt',
}
for test in tests:
build_platform = test['build-platform']
test_platform = test['test-platform']
test['treeherder-machine-platform'] = translation.get(build_platform, test_platform)
yield test
@transforms.add
def set_asan_docker_image(config, tests):
"""Set the appropriate task.extra.treeherder.docker-image"""
# Linux64-asan has many leaks with running mochitest-media jobs
# on Ubuntu 16.04, please remove this when bug 1289209 is resolved
for test in tests:
if test['suite'] == 'mochitest/mochitest-media' and \
test['build-platform'] == 'linux64-asan/opt':
test['docker-image'] = {"in-tree": "desktop-test"}
yield test
@transforms.add
def split_e10s(config, tests):
for test in tests:
e10s = get_keyed_by(item=test, field='e10s',
item_name=test['test-name'])
test.setdefault('attributes', {})
test['e10s'] = False
test['attributes']['e10s'] = False
if e10s == 'both':
yield test
test = copy.deepcopy(test)
e10s = True
if e10s:
test['test-name'] += '-e10s'
test['e10s'] = True
test['attributes']['e10s'] = True
group, symbol = split_symbol(test['treeherder-symbol'])
if group != '?':
group += '-e10s'
test['treeherder-symbol'] = join_symbol(group, symbol)
test['mozharness'].setdefault('extra-options', []).append('--e10s')
yield test
@transforms.add
def allow_software_gl_layers(config, tests):
for test in tests:
# since this value defaults to true, but is not applicable on windows,
# it's overriden for that platform here.
allow = not test['test-platform'].startswith('win') \
and get_keyed_by(item=test, field='allow-software-gl-layers',
item_name=test['test-name'])
if allow:
assert test['instance-size'] != 'legacy',\
'Software GL layers on a legacy instance is disallowed (bug 1296086).'
# This should be set always once bug 1296086 is resolved.
test['mozharness'].setdefault('extra-options', [])\
.append("--allow-software-gl-layers")
yield test
@transforms.add
def add_os_groups(config, tests):
for test in tests:
if test['test-platform'].startswith('win'):
groups = get_keyed_by(item=test, field='os-groups', item_name=test['test-name'])
if groups:
test['os-groups'] = groups
yield test