|
|
|
@ -11,6 +11,7 @@ from __future__ import absolute_import, print_function, unicode_literals
|
|
|
|
|
import copy
|
|
|
|
|
import json
|
|
|
|
|
|
|
|
|
|
from copy import deepcopy
|
|
|
|
|
from taskgraph.transforms.base import TransformSequence
|
|
|
|
|
from taskgraph.util.treeherder import inherit_treeherder_from_dep
|
|
|
|
|
from taskgraph.util.schema import resolve_keyed_by
|
|
|
|
@ -18,6 +19,28 @@ from taskgraph.util.schema import resolve_keyed_by
|
|
|
|
|
transforms = TransformSequence()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@transforms.add
|
|
|
|
|
def split_raptor_subtests(config, tests):
|
|
|
|
|
for test in tests:
|
|
|
|
|
# For tests that have 'page-load-tests' listed, we want to create a separate
|
|
|
|
|
# test job for every subtest (i.e. split out each page-load URL into its own job)
|
|
|
|
|
subtests = test.pop("page-load-tests", None)
|
|
|
|
|
if not subtests:
|
|
|
|
|
yield test
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
for subtest in subtests:
|
|
|
|
|
pageload_test = deepcopy(test)
|
|
|
|
|
|
|
|
|
|
if isinstance(subtest, list):
|
|
|
|
|
pageload_test["test-name"] = subtest[0]
|
|
|
|
|
pageload_test["subtest-symbol"] = subtest[1]
|
|
|
|
|
else:
|
|
|
|
|
pageload_test["test-name"] = subtest
|
|
|
|
|
pageload_test["subtest-symbol"] = subtest
|
|
|
|
|
yield pageload_test
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@transforms.add
|
|
|
|
|
def add_variants(config, tasks):
|
|
|
|
|
only_types = config.config["only-for-build-types"]
|
|
|
|
@ -26,7 +49,7 @@ def add_variants(config, tasks):
|
|
|
|
|
tests = list(tasks)
|
|
|
|
|
|
|
|
|
|
for dep_task in config.kind_dependencies_tasks:
|
|
|
|
|
build_type = dep_task.attributes.get("build-type", '')
|
|
|
|
|
build_type = dep_task.attributes.get("build-type", "")
|
|
|
|
|
if build_type not in only_types:
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
@ -91,6 +114,22 @@ def build_browsertime_task(config, tasks):
|
|
|
|
|
task["run"]["command"].append("--test={}".format(test_name))
|
|
|
|
|
task["run"]["command"].extend(task.pop("args", []))
|
|
|
|
|
|
|
|
|
|
# Setup treherder symbol
|
|
|
|
|
symbol = task.pop("subtest-symbol", None)
|
|
|
|
|
|
|
|
|
|
# taskcluster is merging task attributes with the default ones
|
|
|
|
|
# resulting the --cold extra option in the ytp warm tasks
|
|
|
|
|
if "youtube-playback" in task["name"]:
|
|
|
|
|
symbol = test_name.replace("youtube-playback-", "ytp-")
|
|
|
|
|
|
|
|
|
|
# Setup chimera for combined warm+cold testing
|
|
|
|
|
if task.pop("chimera", False):
|
|
|
|
|
task["run"]["command"].append("--chimera")
|
|
|
|
|
|
|
|
|
|
# Add '-c' to taskcluster symbol when running cold tests
|
|
|
|
|
elif "--cold" in task["run"]["command"]:
|
|
|
|
|
symbol += "-c"
|
|
|
|
|
|
|
|
|
|
# Setup visual metrics
|
|
|
|
|
run_visual_metrics = task.pop("run-visual-metrics", False)
|
|
|
|
|
if run_visual_metrics:
|
|
|
|
@ -98,15 +137,11 @@ def build_browsertime_task(config, tasks):
|
|
|
|
|
task["run"]["command"].append("--browsertime-no-ffwindowrecorder")
|
|
|
|
|
task["attributes"]["run-visual-metrics"] = True
|
|
|
|
|
|
|
|
|
|
# Setup chimera for combined warm+cold testing
|
|
|
|
|
if task.pop("chimera", False):
|
|
|
|
|
task["run"]["command"].append("--chimera")
|
|
|
|
|
|
|
|
|
|
# taskcluster is merging task attributes with the default ones
|
|
|
|
|
# resulting the --cold extra option in the ytp warm tasks
|
|
|
|
|
if 'youtube-playback' in task["name"]:
|
|
|
|
|
task["run"]["command"].remove("--cold")
|
|
|
|
|
|
|
|
|
|
# Build taskcluster group and symol
|
|
|
|
|
task["treeherder"]["symbol"] = "Btime(%s)" % symbol
|
|
|
|
|
task["name"] = (
|
|
|
|
|
task["name"].replace("tp6m-", "tp6m-{}-".format(symbol)).replace("-hv", "")
|
|
|
|
|
)
|
|
|
|
|
yield task
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -129,7 +164,7 @@ def enable_webrender(config, tasks):
|
|
|
|
|
|
|
|
|
|
@transforms.add
|
|
|
|
|
def fill_email_data(config, tasks):
|
|
|
|
|
product_name = config.graph_config['taskgraph']['repositories']['mobile']['name']
|
|
|
|
|
product_name = config.graph_config["taskgraph"]["repositories"]["mobile"]["name"]
|
|
|
|
|
format_kwargs = {
|
|
|
|
|
"product_name": product_name.lower(),
|
|
|
|
|
"head_rev": config.params["head_rev"],
|
|
|
|
@ -138,7 +173,9 @@ def fill_email_data(config, tasks):
|
|
|
|
|
for task in tasks:
|
|
|
|
|
format_kwargs["task_name"] = task["name"]
|
|
|
|
|
|
|
|
|
|
resolve_keyed_by(task, 'notify', item_name=task["name"], level=config.params["level"])
|
|
|
|
|
resolve_keyed_by(
|
|
|
|
|
task, "notify", item_name=task["name"], level=config.params["level"]
|
|
|
|
|
)
|
|
|
|
|
email = task["notify"].get("email")
|
|
|
|
|
if email:
|
|
|
|
|
email["link"]["href"] = email["link"]["href"].format(**format_kwargs)
|
|
|
|
|