Bug 1302192: combine the android-test and desktop-test kinds into the test kind; r=wcosta r=jmaher

This makes heavy use of by-test-platform to distinguish the various platforms, since Android
mozharness invocations differ substantially from desktop.

MozReview-Commit-ID: GsZFij6VPTf

--HG--
rename : taskcluster/ci/desktop-test/test-platforms.yml => taskcluster/ci/test/test-platforms.yml
rename : taskcluster/ci/desktop-test/test-sets.yml => taskcluster/ci/test/test-sets.yml
rename : taskcluster/ci/desktop-test/tests.yml => taskcluster/ci/test/tests.yml
extra : rebase_source : f1e98bfa3cdf53db7a5348534875f84cccb24397
This commit is contained in:
Dustin J. Mitchell 2016-12-23 22:12:17 +00:00
Родитель 955d1df32a
Коммит cb6dd785e8
11 изменённых файлов: 629 добавлений и 692 удалений

Просмотреть файл

@ -1,29 +0,0 @@
# This file maps build platforms to test platforms. In some cases, a
# single build may be tested on multiple test platforms, but a single test
# platform can only link to one build platform. Both build and test platforms
# are represented as <platform>/<type>, where <type> is what Treeherder calls a
# collection.
#
# Each test platform further specifies the set of tests that will be scheduled
# for the platform, referring to tests defined in test-sets.yml.
#
# Note that set does not depend on the tree; tree-dependent job selection
# should be performed in the target task selection phase of task-graph
# generation.
android-4.3-arm7-api-15/debug:
build-platform: android-api-15/debug
test-sets:
- debug-tests
android-4.3-arm7-api-15/opt:
build-platform: android-api-15/opt
test-sets:
- opt-tests
android-4.2-x86/opt:
build-platform: android-x86/opt
test-sets:
- x86-tests
android-4.3-arm7-api-15-gradle/opt:
build-platform: android-api-15-gradle/opt
test-sets:
- gradle-tests

Просмотреть файл

@ -1,47 +0,0 @@
# Each key in this file specifies a set of tests to run. Different test sets
# may, for example, be bound to different test platforms.
#
# Note that set does not depend on the tree; tree-dependent job selection
# should be performed in the target task selection phase of task-graph
# generation.
#
# A test set has a name, and a list of tests that it contains.
#
# Test names given here reference tests.yml.
debug-tests:
- cppunit
- crashtest
- jsreftest
# Marionette only available on Fennec debug builds as a security precaution
- marionette
- mochitest
- mochitest-chrome
- mochitest-clipboard
- mochitest-gpu
- mochitest-media
- mochitest-webgl
- reftest
- xpcshell
opt-tests:
- cppunit
- crashtest
- jsreftest
- mochitest
- mochitest-chrome
- mochitest-clipboard
- mochitest-gpu
- mochitest-media
- mochitest-webgl
- reftest
- robocop
- xpcshell
gradle-tests:
- robocop
- mochitest-chrome
x86-tests:
- xpcshell
- mochitest-chrome

Просмотреть файл

@ -1,281 +0,0 @@
# Each stanza here describes a particular test suite or sub-suite. These are
# processed through the transformations described in kind.yml to produce a
# bunch of tasks. See the schema in `test-descriptions.py` for a description
# of the fields used here.
# The Android tests have separate test definitions from desktop because,
# despite sharing test names, the invocation of these test suites differ
# substantially from desktop.
# Note that these are in lexical order
cppunit:
description: "CPP Unit Tests"
suite: cppunittest
treeherder-symbol: tc(Cpp)
e10s: false
loopback-video: true
mozharness:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- android/androidarm_4_3-tc.py
extra-options:
- --test-suite=cppunittest
crashtest:
description: "Crashtest run"
suite: reftest/crashtest
treeherder-symbol: tc-R(C)
instance-size: xlarge
chunks:
by-test-platform:
android-4.3-arm7-api-15/debug: 10
default: 4
loopback-video: true
e10s: false
mozharness:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- android/androidarm_4_3-tc.py
extra-options:
- --test-suite=crashtest
jsreftest:
description: "JS Reftest run"
suite: reftest/jsreftest
treeherder-symbol: tc-R(J)
instance-size: xlarge
chunks:
by-test-platform:
android-4.3-arm7-api-15/debug: 20
default: 6
loopback-video: true
max-run-time: 7200
e10s: false
mozharness:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- android/androidarm_4_3-tc.py
extra-options:
- --test-suite=jsreftest
marionette:
description: "Marionette unittest run"
suite: marionette
treeherder-symbol: tc(Mn)
chunks: 10
instance-size: xlarge
loopback-video: true
e10s: false
tier: 3
max-run-time: 3600
mozharness:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- android/androidarm_4_3-tc.py
extra-options:
- --test-suite=marionette
mochitest:
description: "Mochitest plain run"
suite: mochitest/plain-chunked
treeherder-symbol: tc-M()
instance-size: xlarge
chunks:
by-test-platform:
android-4.3-arm7-api-15/debug: 32
default: 20
loopback-video: true
e10s: false
max-run-time:
by-test-platform:
android-4.3-arm7-api-15/debug: 10800
default: 5400
mozharness:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- android/androidarm_4_3-tc.py
extra-options:
- --test-suite=mochitest
mochitest-chrome:
description: "Mochitest chrome run"
suite: mochitest/chrome
treeherder-symbol: tc-M(c)
instance-size: xlarge
chunks:
by-test-platform:
android-4.3-arm7-api-15/debug: 2
default: 1
loopback-video: true
e10s: false
max-run-time: 5400
mozharness:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
by-test-platform:
default:
- android/androidarm_4_3.py
- remove_executables.py
- android/androidarm_4_3-tc.py
android-4.2-x86/opt:
- android/androidx86-tc.py
extra-options:
- --test-suite=mochitest-chrome
mochitest-clipboard:
description: "Mochitest clipboard run"
suite: mochitest/clipboard
treeherder-symbol: tc-M(cl)
instance-size: xlarge
loopback-video: true
e10s: false
mozharness:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- android/androidarm_4_3-tc.py
extra-options:
- --test-suite=mochitest-plain-clipboard
mochitest-gpu:
description: "Mochitest gpu run"
suite: mochitest/gpu
treeherder-symbol: tc-M(gpu)
loopback-video: true
e10s: false
mozharness:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- android/androidarm_4_3-tc.py
extra-options:
- --test-suite=mochitest-plain-gpu
mochitest-media:
description: "Mochitest media run"
suite: mochitest/mochitest-media
treeherder-symbol: tc-M(mda)
instance-size: xlarge
chunks: 3
loopback-video: true
e10s: false
max-run-time: 5400
mozharness:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- android/androidarm_4_3-tc.py
extra-options:
- --test-suite=mochitest-media
mochitest-webgl:
description: "Mochitest webgl run"
suite: mochitest/mochitest-gl
treeherder-symbol: tc-M(gl)
chunks: 10
loopback-video: true
e10s: false
max-run-time: 7200
instance-size: xlarge
mozharness:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- android/androidarm_4_3-tc.py
extra-options:
- --test-suite=mochitest-gl
reftest:
description: "Reftest run"
suite: reftest/reftest
treeherder-symbol: tc-R(R)
chunks:
by-test-platform:
android-4.3-arm7-api-15/debug: 48
default: 16
instance-size: xlarge
max-run-time: 10800
loopback-video: true
e10s: false
mozharness:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- android/androidarm_4_3-tc.py
extra-options:
- --test-suite=reftest
robocop:
description: "Robocop run"
suite: robocop
treeherder-symbol: tc-M(rc)
instance-size: xlarge
chunks:
by-test-platform:
# android-4.3-arm7-api-15/debug -- not run
android-4.3-arm7-api-15/opt: 4
android-4.3-arm7-api-15-gradle/opt: 4
loopback-video: true
e10s: false
mozharness:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- android/androidarm_4_3-tc.py
extra-options:
- --test-suite=robocop
xpcshell:
description: "xpcshell test run"
suite: xpcshell
treeherder-symbol: tc-X()
chunks:
by-test-platform:
default: 6
android-4.2-x86/opt: 4
instance-size: xlarge
max-run-time: 7200
loopback-video: true
e10s: false
mozharness:
script: android_emulator_unittest.py
no-read-buildbot-config: true
extra-options:
- --test-suite=xpcshell
config:
by-test-platform:
default:
- android/androidarm_4_3.py
- remove_executables.py
- android/androidarm_4_3-tc.py
android-4.2-x86/opt:
- android/androidx86-tc.py

Просмотреть файл

@ -1,8 +0,0 @@
implementation: taskgraph.task.test:TestTask
kind-dependencies:
- build
transforms:
- taskgraph.transforms.tests:transforms
- taskgraph.transforms.task:transforms

Просмотреть файл

Просмотреть файл

@ -11,6 +11,10 @@
# should be performed in the target task selection phase of task-graph
# generation.
##
# Linux platforms (matching /linux.*/)
linux64/debug:
build-platform: linux64/debug
test-sets:
@ -59,6 +63,9 @@ linux64-jsdcov/opt:
test-sets:
- jsdcov-code-coverage-tests
##
# Windows platforms (matching /windows.*/)
# win32 vm
windows7-32-vm/debug:
build-platform: win32/debug
@ -99,6 +106,9 @@ windows10-64-vm/opt:
# test-sets:
# - windows-gpu-tests
##
# MacOS X platforms (matching /macosx.*/)
macosx64/debug:
build-platform: macosx64/debug
test-sets:
@ -107,3 +117,28 @@ macosx64/opt:
build-platform: macosx64/opt
test-sets:
- macosx64-tests-talos
##
# Android platforms (matching /android.*/)
android-4.3-arm7-api-15/debug:
build-platform: android-api-15/debug
test-sets:
- android-common-tests
- android-debug-tests
android-4.3-arm7-api-15/opt:
build-platform: android-api-15/opt
test-sets:
- android-common-tests
- android-opt-tests
android-4.2-x86/opt:
build-platform: android-x86/opt
test-sets:
- android-x86-tests
android-4.3-arm7-api-15-gradle/opt:
build-platform: android-api-15-gradle/opt
test-sets:
- android-gradle-tests

Просмотреть файл

@ -151,3 +151,31 @@ macosx64-tests-talos:
- talos-other
- talos-svgr
- talos-tp5o
android-common-tests:
- cppunit
- crashtest
- jsreftest
- mochitest
- mochitest-chrome
- mochitest-clipboard
- mochitest-gpu
- mochitest-media
- mochitest-webgl
- reftest
- xpcshell
android-debug-tests:
# Marionette only available on Fennec debug builds as a security precaution
- marionette
android-opt-tests:
- robocop
android-gradle-tests:
- mochitest-chrome
- robocop
android-x86-tests:
- mochitest-chrome
- xpcshell

Просмотреть файл

@ -11,47 +11,80 @@ cppunit:
treeherder-symbol: tc(Cpp)
e10s: false
mozharness:
script: desktop_unittest.py
no-read-buildbot-config: true
config:
by-test-platform:
win.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
by-test-platform:
android.*:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- unittests/mac_unittest.py
default:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
- --cppunittest-suite=cppunittest
- android/androidarm_4_3-tc.py
extra-options:
- --test-suite=cppunittest
default:
script: desktop_unittest.py
no-read-buildbot-config: true
config:
by-test-platform:
windows.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
linux.*:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
- --cppunittest-suite=cppunittest
crashtest:
description: "Crashtest run"
suite: reftest/crashtest
treeherder-symbol: tc-R(C)
docker-image: {"in-tree": "desktop1604-test"}
instance-size:
by-test-platform:
android.*: xlarge
default: default
docker-image:
by-test-platform:
android.*: {'in-tree': 'desktop-test'}
default: {"in-tree": 'desktop1604-test'}
chunks:
by-test-platform:
android-4.3-arm7-api-15/debug: 10
android.*: 4
default: 1
e10s:
by-test-platform:
# Bug 1304435
win.*: false
windows.*: false # Bug 1304435
default: both
mozharness:
script: desktop_unittest.py
chunked: true
no-read-buildbot-config: true
config:
by-test-platform:
win.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
by-test-platform:
android.*:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- unittests/mac_unittest.py
default:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
- --reftest-suite=crashtest
- android/androidarm_4_3-tc.py
extra-options:
- --test-suite=crashtest
default:
script: desktop_unittest.py
chunked: true
no-read-buildbot-config: true
config:
by-test-platform:
windows.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
linux.*:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
- --reftest-suite=crashtest
external-media-tests:
description: "External Media Test run"
@ -64,7 +97,7 @@ external-media-tests:
script: firefox_media_tests_taskcluster.py
config:
by-test-platform:
win.*:
windows.*:
- mediatests/taskcluster_windows_config.py
default:
- mediatests/taskcluster_posix_config.py
@ -113,12 +146,12 @@ gtest:
no-read-buildbot-config: true
config:
by-test-platform:
win.*:
windows.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
default:
linux.*:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
@ -131,19 +164,19 @@ jittest:
e10s: false
chunks:
by-test-platform:
win.*: 1
windows.*: 1
default: 6
mozharness:
script: desktop_unittest.py
no-read-buildbot-config: true
config:
by-test-platform:
win.*:
windows.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
default:
linux.*:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
@ -153,91 +186,161 @@ jsreftest:
description: "JS Reftest run"
suite: reftest/jsreftest
treeherder-symbol: tc-R(J)
instance-size:
by-test-platform:
android.*: xlarge
default: default
chunks:
by-test-platform:
win.*: 1
android-4.3-arm7-api-15/debug: 20
android.*: 6
windows.*: 1
default: 2
e10s:
by-test-platform:
# Bug 1321782
win.*: false
windows.*: false
android.*: false
default: both
max-run-time:
by-test-platform:
android.*: 7200
default: 3600
mozharness:
script: desktop_unittest.py
no-read-buildbot-config: true
config:
by-test-platform:
win.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
by-test-platform:
android.*:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- unittests/mac_unittest.py
default:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
- --reftest-suite=jsreftest
- android/androidarm_4_3-tc.py
extra-options:
- --test-suite=jsreftest
default:
script: desktop_unittest.py
no-read-buildbot-config: true
config:
by-test-platform:
windows.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
linux.*:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
- --reftest-suite=jsreftest
marionette:
description: "Marionette unittest run"
suite: marionette
treeherder-symbol: tc(Mn)
max-run-time: 5400
docker-image: {"in-tree": "desktop1604-test"}
max-run-time:
by-test-platform:
android.*: 3600
default: 5400
instance-size:
by-test-platform:
android.*: xlarge
default: default
docker-image:
by-test-platform:
android.*: {'in-tree': 'desktop-test'}
default: {"in-tree": 'desktop1604-test'}
tier:
by-test-platform:
android.*: 3
default: default
chunks:
by-test-platform:
android.*: 10
default: 1
mozharness:
script: marionette.py
no-read-buildbot-config: true
config:
by-test-platform:
win.*:
- marionette/windows_taskcluster_config.py
default:
- marionette/prod_config.py
by-test-platform:
android:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- android/androidarm_4_3-tc.py
extra-options:
- --test-suite=marionette
default:
script: marionette.py
no-read-buildbot-config: true
config:
by-test-platform:
windows.*:
- marionette/windows_taskcluster_config.py
default:
- marionette/prod_config.py
- remove_executables.py
mochitest:
description: "Mochitest plain run"
suite: mochitest/plain-chunked
treeherder-symbol: tc-M()
loopback-video: true
instance-size:
by-test-platform:
android.*: xlarge
default: legacy # Bug 1281241: migrating to m3.large instances
run-on-projects:
by-test-platform:
linux64-ccov/opt: []
default: ['all']
chunks:
by-test-platform:
android-4.3-arm7-api-15/debug: 32
android.*: 20
macosx.*: 5
win.*: 5
default: 10
windows.*: 5
linux.*: 10
e10s:
by-test-platform:
linux64-ccov/opt: false
android.*: false
default: both
max-run-time: 5400
mozharness:
script: desktop_unittest.py
no-read-buildbot-config: true
chunked: true
config:
by-test-platform:
win.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
default:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
by-test-platform:
linux64-ccov/opt:
- --mochitest-suite=plain-chunked
- --code-coverage
default:
- --mochitest-suite=plain-chunked
# Bug 1281241: migrating to m3.large instances
instance-size: legacy
max-run-time:
by-test-platform:
android-4.3-arm7-api-15/debug: 10800
default: 5400
allow-software-gl-layers: false
mozharness:
by-test-platform:
android.*:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- android/androidarm_4_3-tc.py
extra-options:
- --test-suite=mochitest
default:
script: desktop_unittest.py
no-read-buildbot-config: true
chunked: true
config:
by-test-platform:
windows.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
linux.*:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
by-test-platform:
linux64-ccov/opt:
- --mochitest-suite=plain-chunked
- --code-coverage
default:
- --mochitest-suite=plain-chunked
mochitest-a11y:
description: "Mochitest a11y run"
@ -251,12 +354,12 @@ mochitest-a11y:
chunked: true
config:
by-test-platform:
win.*:
windows.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
default:
linux.*:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
@ -296,12 +399,12 @@ mochitest-browser-chrome:
no-read-buildbot-config: true
config:
by-test-platform:
win.*:
windows.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
default:
linux.*:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
@ -326,26 +429,51 @@ mochitest-chrome:
suite: mochitest/chrome
treeherder-symbol: tc-M(c)
loopback-video: true
instance-size:
by-test-platform:
android.*: xlarge
default: default
chunks:
by-test-platform:
macosx.*: 1
default: 3
by-test-platform:
android-4.3-arm7-api-15/debug: 2
android.*: 1
macosx.*: 1
default: 3
max-run-time:
by-test-platform:
android.*: 5400
default: 3600
e10s: false
mozharness:
script: desktop_unittest.py
no-read-buildbot-config: true
config:
by-test-platform:
win.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
default:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
- --mochitest-suite=chrome
by-test-platform:
android.*:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
by-test-platform:
android-4.2-x86/opt:
- android/androidx86-tc.py
default:
- android/androidarm_4_3.py
- remove_executables.py
- android/androidarm_4_3-tc.py
extra-options:
- --test-suite=mochitest-chrome
default:
script: desktop_unittest.py
no-read-buildbot-config: true
config:
by-test-platform:
windows.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
linux.*:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
- --mochitest-suite=chrome
mochitest-clipboard:
description: "Mochitest clipboard run"
@ -354,21 +482,33 @@ mochitest-clipboard:
loopback-video: true
instance-size: xlarge
mozharness:
script: desktop_unittest.py
no-read-buildbot-config: true
chunked: true
config:
by-test-platform:
win.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
by-test-platform:
android.*:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- unittests/mac_unittest.py
default:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
- --mochitest-suite=plain-clipboard,chrome-clipboard,browser-chrome-clipboard,jetpack-package-clipboard
- android/androidarm_4_3-tc.py
extra-options:
# note that Android runs fewer suites than other platforms
- --test-suite=mochitest-plain-clipboard
default:
script: desktop_unittest.py
no-read-buildbot-config: true
chunked: true
config:
by-test-platform:
windows.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
linux.*:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
- --mochitest-suite=plain-clipboard,chrome-clipboard,browser-chrome-clipboard,jetpack-package-clipboard
mochitest-devtools-chrome:
description: "Mochitest devtools-chrome run"
@ -381,7 +521,7 @@ mochitest-devtools-chrome:
max-run-time: 5400
chunks:
by-test-platform:
win.*: 8
windows.*: 8
default: 10
run-on-projects:
by-test-platform:
@ -395,19 +535,19 @@ mochitest-devtools-chrome:
linux64-ccov/opt: false
linux64-jsdcov/opt: false
# Bug 1304433: mochitest-devtools-chrome (e10s) not greened on windows
win.*: false
windows.*: false
default: both
mozharness:
script: desktop_unittest.py
no-read-buildbot-config: true
config:
by-test-platform:
win.*:
windows.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
default:
linux.*:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
@ -434,24 +574,37 @@ mochitest-gpu:
loopback-video: true
e10s:
by-test-platform:
win.*: both
windows.*: both
android.*: false
default: true
mozharness:
script: desktop_unittest.py
no-read-buildbot-config: true
chunked: true
config:
by-test-platform:
win.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
by-test-platform:
android.*:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- unittests/mac_unittest.py
default:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
- --mochitest-suite=plain-gpu,chrome-gpu,browser-chrome-gpu
- android/androidarm_4_3-tc.py
extra-options:
# note that Android runs fewer suites than other platforms
- --test-suite=mochitest-plain-gpu
default:
script: desktop_unittest.py
no-read-buildbot-config: true
chunked: true
config:
by-test-platform:
windows.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
linux.*:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
- --mochitest-suite=plain-gpu,chrome-gpu,browser-chrome-gpu
mochitest-jetpack:
description: "Mochitest jetpack run"
@ -466,12 +619,12 @@ mochitest-jetpack:
chunked: true
config:
by-test-platform:
win.*:
windows.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
default:
linux.*:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
@ -484,24 +637,45 @@ mochitest-media:
treeherder-symbol: tc-M(mda)
max-run-time: 5400
loopback-video: true
instance-size: large
docker-image: {"in-tree": "desktop1604-test"}
instance-size:
by-test-platform:
android.*: xlarge
default: large
chunks:
by-test-platform:
android.*: 3
default: 1
docker-image:
by-test-platform:
android.*: {'in-tree': 'desktop-test'}
default: {"in-tree": 'desktop1604-test'}
mozharness:
script: desktop_unittest.py
no-read-buildbot-config: true
chunked: true
config:
by-test-platform:
win.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
by-test-platform:
android.*:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- unittests/mac_unittest.py
default:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
- --mochitest-suite=mochitest-media
- android/androidarm_4_3-tc.py
extra-options:
- --test-suite=mochitest-media
default:
script: desktop_unittest.py
no-read-buildbot-config: true
chunked: true
config:
by-test-platform:
windows.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
linux.*:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
- --mochitest-suite=mochitest-media
mochitest-other:
description: "Mochitest other"
@ -519,7 +693,7 @@ mochitest-other:
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
default:
linux.*:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
@ -536,45 +710,67 @@ mochitest-valgrind:
# We could re-enable e10s later.
# There's no intrinsic reason not to use it.
e10s: false
allow-software-gl-layers: false
mozharness:
script: desktop_unittest.py
no-read-buildbot-config: true
chunked: true
config:
by-test-platform:
win.*:
windows.*:
- unittests/win_taskcluster_unittest.py
default:
linux.*:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
- --mochitest-suite=valgrind-plain
allow-software-gl-layers: false
mochitest-webgl:
description: "Mochitest webgl run"
suite: mochitest/mochitest-gl
treeherder-symbol: tc-M(gl)
chunks: 3
chunks:
by-test-platform:
android.*: 10
default: 3
loopback-video: true
mozharness:
script: desktop_unittest.py
no-read-buildbot-config: true
chunked: true
config:
by-test-platform:
win.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
default:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
- --mochitest-suite=mochitest-gl
max-run-time:
by-test-platform:
android.*: 7200
default: 3600
instance-size:
by-test-platform:
android.*: xlarge
default: default
# Bug 1296733: llvmpipe with mesa 9.2.1 lacks thread safety
allow-software-gl-layers: false
mozharness:
by-test-platform:
android.*:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- android/androidarm_4_3-tc.py
extra-options:
- --test-suite=mochitest-gl
default:
script: desktop_unittest.py
no-read-buildbot-config: true
chunked: true
config:
by-test-platform:
windows.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
linux.*:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
- --mochitest-suite=mochitest-gl
mochitest-stylo:
description: "Mochitest run for Stylo"
@ -597,26 +793,50 @@ reftest:
description: "Reftest run"
suite: reftest/reftest
treeherder-symbol: tc-R(R)
docker-image: {"in-tree": "desktop1604-test"}
docker-image:
by-test-platform:
android.*: {'in-tree': 'desktop-test'}
default: {"in-tree": 'desktop1604-test'}
instance-size:
by-test-platform:
android.*: xlarge
default: default
chunks:
by-test-platform:
macosx.*: 1
default: 8
by-test-platform:
android-4.3-arm7-api-15/debug: 48
android.*: 16
macosx.*: 1
default: 8
max-run-time:
by-test-platform:
android.*: 10800
default: 3600
mozharness:
script: desktop_unittest.py
no-read-buildbot-config: true
config:
by-test-platform:
win.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
by-test-platform:
android.*:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- unittests/mac_unittest.py
default:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
- --reftest-suite=reftest
- android/androidarm_4_3-tc.py
extra-options:
- --test-suite=reftest
default:
script: desktop_unittest.py
no-read-buildbot-config: true
config:
by-test-platform:
windows.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
linux.*:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
- --reftest-suite=reftest
reftest-no-accel:
description: "Reftest not accelerated run"
@ -632,12 +852,12 @@ reftest-no-accel:
no-read-buildbot-config: true
config:
by-test-platform:
win.*:
windows.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
default:
linux.*:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
@ -652,13 +872,33 @@ reftest-stylo:
script: desktop_unittest.py
no-read-buildbot-config: true
config:
by-test-platform:
default:
- unittests/linux_unittest.py
- remove_executables.py
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
- --reftest-suite=reftest-stylo
robocop:
description: "Robocop run"
suite: robocop
treeherder-symbol: tc-M(rc)
instance-size: xlarge
chunks:
by-test-platform:
# android-4.3-arm7-api-15/debug -- not run
android-4.3-arm7-api-15/opt: 4
android-4.3-arm7-api-15-gradle/opt: 4
loopback-video: true
e10s: false
mozharness:
script: android_emulator_unittest.py
no-read-buildbot-config: true
config:
- android/androidarm_4_3.py
- remove_executables.py
- android/androidarm_4_3-tc.py
extra-options:
- --test-suite=robocop
talos-chrome:
description: "Talos chrome"
suite: talos
@ -838,7 +1078,7 @@ web-platform-tests:
no-read-buildbot-config: true
config:
by-test-platform:
win.*:
windows.*:
- web_platform_tests/prod_config_windows_taskcluster.py
default:
- web_platform_tests/prod_config.py
@ -855,7 +1095,7 @@ web-platform-tests-reftests:
e10s:
by-test-platform:
# Bug 1304438
win.*: false
windows.*: false
default: both
docker-image: {"in-tree": "desktop1604-test"}
checkout: true
@ -864,7 +1104,7 @@ web-platform-tests-reftests:
no-read-buildbot-config: true
config:
by-test-platform:
win.*:
windows.*:
- web_platform_tests/prod_config_windows_taskcluster.py
default:
- web_platform_tests/prod_config.py
@ -885,7 +1125,7 @@ web-platform-tests-wdspec:
no-read-buildbot-config: true
config:
by-test-platform:
win.*:
windows.*:
- web_platform_tests/prod_config_windows_taskcluster.py
default:
- web_platform_tests/prod_config.py
@ -903,32 +1143,54 @@ xpcshell:
default: ['all']
chunks:
by-test-platform:
# win.*: 1
macosx.*: 1
linux64/debug: 10
android-4.2-x86/opt: 4
android.*: 6
# windows.*: 1
macosx.*: 1
default: 8
max-run-time: 5400
instance-size:
by-test-platform:
android.*: xlarge
default: legacy # Bug 1281241: migrating to m3.large instances
max-run-time:
by-test-platform:
android.*: 7200
default: 5400
e10s: false
mozharness:
script: desktop_unittest.py
no-read-buildbot-config: true
config:
by-test-platform:
win.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
default:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
by-test-platform:
linux64-ccov/opt:
- --xpcshell-suite=xpcshell
- --code-coverage
default:
- --xpcshell-suite=xpcshell
# Bug 1281241: migrating to m3.large instances
instance-size: legacy
allow-software-gl-layers: false
mozharness:
by-test-platform:
android.*:
script: android_emulator_unittest.py
no-read-buildbot-config: true
extra-options:
- --test-suite=xpcshell
config:
by-test-platform:
android-4.2-x86/opt:
- android/androidx86-tc.py
default:
- android/androidarm_4_3.py
- remove_executables.py
- android/androidarm_4_3-tc.py
default:
script: desktop_unittest.py
no-read-buildbot-config: true
config:
by-test-platform:
windows.*:
- unittests/win_taskcluster_unittest.py
macosx.*:
- remove_executables.py
- unittests/mac_unittest.py
linux.*:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
by-test-platform:
linux64-ccov/opt:
- --xpcshell-suite=xpcshell
- --code-coverage
default:
- --xpcshell-suite=xpcshell

Просмотреть файл

@ -114,21 +114,14 @@ files named in ``kind.yml``:
It is up to a later stage of the task-graph generation (the target set) to
select the tests that will actually be performed.
desktop-test
............
test
....
The ``desktop-test`` kind defines tests for Desktop builds. Its ``tests.yml``
defines the full suite of desktop tests and their particulars, leaving it to
the transforms to determine how those particulars apply to Linux, OS X, and
Windows.
The ``desktop-test`` kind defines tests for builds. Its ``tests.yml`` defines
the full suite of desktop tests and their particulars, leaving it to the
transforms to determine how those particulars apply to the various platforms.
android-test
............
The ``android-test`` kind defines tests for Android builds.
It is very similar to ``desktop-test``, but the details of running the tests
differ substantially, so they are defined separately.
This kind includes both unit tests and talos.
docker-image
------------

Просмотреть файл

@ -93,40 +93,17 @@ suitable for ``queue.createTask``.
Test Descriptions
-----------------
The transforms configured for test kinds proceed as follows, based on
configuration in ``kind.yml``:
Test descriptions specify how to run a unittest or talos run. They aim to
describe this abstractly, although in many cases the unique nature of
invocation on different platforms leaves a lot of specific behavior in the test
description, divided by ``by-test-platform``.
* The test description is validated to conform to the schema in
``taskcluster/taskgraph/transforms/tests/test_description.py``. This schema
is extensively documented and is a the primary reference for anyone
modifying tests.
Test descriptions are validated to conform to the schema in
``taskcluster/taskgraph/transforms/tests.py``. This schema is extensively
documented and is a the primary reference for anyone modifying tests.
* Kind-specific transformations are applied. These may apply default
settings, split tests (e.g., one to run with feature X enabled, one with it
disabled), or apply across-the-board business rules such as "all desktop
debug test platforms should have a max-run-time of 5400s".
* Transformations generic to all tests are applied. These apply policies
which apply to multiple kinds, e.g., for treeherder tiers. This is also the
place where most values which differ based on platform are resolved, and
where chunked tests are split out into a test per chunk.
* The test is again validated against the same schema. At this point it is
still a test description, just with defaults and policies applied, and
per-platform options resolved. So transforms up to this point do not modify
the "shape" of the test description, and are still governed by the schema in
``test_description.py``.
* The ``taskgraph.transforms.tests.make_task_description:transforms`` then
take the test description and create a *task* description. This transform
embodies the specifics of how test runs work: invoking mozharness, various
worker options, and so on.
* Finally, the ``taskgraph.transforms.task:transforms``, described above
under "Task-Generation Transforms", are applied.
Test dependencies are produced in the form of a dictionary mapping dependency
name to task label.
The output of ``tests.py`` is a task description. Test dependencies are
produced in the form of a dictionary mapping dependency name to task label.
Job Descriptions
----------------

Просмотреть файл

@ -87,10 +87,9 @@ test_description_schema = Schema({
'description': basestring,
# test suite name, or <suite>/<flavor>
Required('suite'): Any(
basestring,
{'by-test-platform': {basestring: basestring}},
),
Required('suite'): optionally_keyed_by(
'test-platform',
basestring),
# the name by which this test suite is addressed in try syntax; defaults to
# the test-name
@ -115,24 +114,21 @@ test_description_schema = Schema({
# The `run_on_projects` attribute, defaulting to "all". This dictates the
# projects on which this task should be included in the target task set.
# See the attributes documentation for details.
Optional('run-on-projects', default=['all']): Any(
[basestring],
{'by-test-platform': {basestring: [basestring]}},
),
Optional('run-on-projects', default=['all']): optionally_keyed_by(
'test-platform',
[basestring]),
# the sheriffing tier for this task (default: set based on test platform)
Optional('tier'): Any(
int,
{'by-test-platform': {basestring: int}},
),
Optional('tier'): optionally_keyed_by(
'test-platform',
Any(int, 'default')),
# number of chunks to create for this task. This can be keyed by test
# platform by passing a dictionary in the `by-test-platform` key. If the
# test platform is not found, the key 'default' will be tried.
Required('chunks', default=1): Any(
int,
{'by-test-platform': {basestring: int}},
),
Required('chunks', default=1): optionally_keyed_by(
'test-platform',
int),
# the time (with unit) after which this task is deleted; default depends on
# the branch (see below)
@ -142,16 +138,14 @@ test_description_schema = Schema({
# without e10s; if true, run with e10s; if 'both', run one task with and
# one task without e10s. E10s tasks have "-e10s" appended to the test name
# and treeherder group.
Required('e10s', default='both'): Any(
bool, 'both',
{'by-test-platform': {basestring: Any(bool, 'both')}},
),
Required('e10s', default='both'): optionally_keyed_by(
'test-platform',
Any(bool, 'both')),
# The EC2 instance size to run these tests on.
Required('instance-size', default='default'): Any(
Any('default', 'large', 'xlarge', 'legacy'),
{'by-test-platform': {basestring: Any('default', 'large', 'xlarge', 'legacy')}},
),
Required('instance-size', default='default'): optionally_keyed_by(
'test-platform',
Any('default', 'large', 'xlarge', 'legacy')),
# Whether the task requires loopback audio or video (whatever that may mean
# on the platform)
@ -179,19 +173,21 @@ test_description_schema = Schema({
# name of the docker image or in-tree docker image to run the task in. If
# in-tree, then a dependency will be created automatically. This is
# generally `desktop-test`, or an image that acts an awful lot like it.
Required('docker-image', default={'in-tree': 'desktop-test'}): Any(
# a raw Docker image path (repo/image:tag)
basestring,
# an in-tree generated docker image (from `taskcluster/docker/<name>`)
{'in-tree': basestring}
Required('docker-image', default={'in-tree': 'desktop-test'}): optionally_keyed_by(
'test-platform', 'test-platform-phylum',
Any(
# a raw Docker image path (repo/image:tag)
basestring,
# an in-tree generated docker image (from `taskcluster/docker/<name>`)
{'in-tree': basestring}
)
),
# seconds of runtime after which the task will be killed. Like 'chunks',
# this can be keyed by test pltaform.
Required('max-run-time', default=3600): Any(
int,
{'by-test-platform': {basestring: int}},
),
Required('max-run-time', default=3600): optionally_keyed_by(
'test-platform',
int),
# the exit status code that indicates the task should be retried
Optional('retry-exit-status'): int,
@ -200,25 +196,24 @@ test_description_schema = Schema({
Required('checkout', default=False): bool,
# What to run
Required('mozharness'): Any({
Required('mozharness'): optionally_keyed_by(
'test-platform', 'test-platform-phylum', {
# the mozharness script used to run this task
Required('script'): basestring,
# the config files required for the task
Required('config'): Any(
[basestring],
{'by-test-platform': {basestring: [basestring]}},
),
Required('config'): optionally_keyed_by(
'test-platform',
[basestring]),
# any additional actions to pass to the mozharness command
Optional('actions'): [basestring],
# additional command-line options for mozharness, beyond those
# automatically added
Required('extra-options', default=[]): Any(
[basestring],
{'by-test-platform': {basestring: [basestring]}},
),
Required('extra-options', default=[]): optionally_keyed_by(
'test-platform',
[basestring]),
# the artifact name (including path) to test on the build task; this is
# generally set in a per-kind transformation
@ -267,11 +262,9 @@ test_description_schema = Schema({
# os user groups for test task workers; required scopes, will be
# added automatically
Optional('os-groups', default=[]): Any(
[basestring],
# todo: create a dedicated elevated worker group and name here
{'by-test-platform': {basestring: [basestring]}},
),
Optional('os-groups', default=[]): optionally_keyed_by(
'test-platform',
[basestring]),
# -- values supplied by the task-generation infrastructure
@ -300,6 +293,14 @@ def validate(config, tests):
"In test {!r}:".format(test['test-name']))
@transforms.add
def resolve_keyed_by_mozharness(config, tests):
"""Resolve a mozharness field if it is keyed by something"""
for test in tests:
test['mozharness'] = get_keyed_by(item=test, field='mozharness', item_name=test['test-name'])
yield test
@transforms.add
def set_defaults(config, tests):
for test in tests:
@ -310,9 +311,13 @@ def set_defaults(config, tests):
test['mozharness']['actions'] = ['get-secrets']
# Android doesn't do e10s
test['e10s'] = False
# loopback-video is always true for Android, but false for other
# platform phyla
test['loopback-video'] = True
else:
# all non-android tests want to run the bits that require node
test['mozharness']['set-moz-node-path'] = True
test.setdefault('e10s', 'both')
# software-gl-layers is only meaningful on linux, where it defaults to True
if test['test-platform'].startswith('linux'):
@ -320,7 +325,6 @@ def set_defaults(config, tests):
else:
test['allow-software-gl-layers'] = False
test.setdefault('e10s', 'both')
test.setdefault('os-groups', [])
test.setdefault('chunks', 1)
test.setdefault('run-on-projects', ['all'])
@ -398,8 +402,11 @@ def set_tier(config, tests):
"""Set the tier based on policy for all test descriptions that do not
specify a tier otherwise."""
for test in tests:
if 'tier' in test:
test['tier'] = get_keyed_by(item=test, field='tier', item_name=test['test-name'])
# only override if not set for the test
if 'tier' not in test:
if 'tier' not in test or test['tier'] == 'default':
if test['test-platform'] in ['linux64/debug',
'linux64-asan/opt',
'android-4.3-arm7-api-15/debug',
@ -446,13 +453,13 @@ def resolve_keyed_by(config, tests):
"""Resolve fields that can be keyed by platform, etc."""
fields = [
'instance-size',
'docker-image',
'max-run-time',
'chunks',
'e10s',
'suite',
'run-on-projects',
'os-groups',
'tier',
]
mozharness_fields = [
'config',