Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
# 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
from unittest import mock
import pytest
from mozunit import main
from gecko_taskgraph.actions.backfill import (
_is_perf_task,
_lower_priority,
backfill_modifier,
)
@pytest.mark.parametrize(
"current,max_priority,expected",
[
("high", "very-low", "very-low"),
("low", "very-low", "very-low"),
("very-low", "very-low", "very-low"),
("lowest", "very-low", "lowest"),
(None, "very-low", "very-low"),
("high", "unknown", "high"),
],
)
def test_lower_priority(current, max_priority, expected):
assert _lower_priority(current, max_priority) == expected
@pytest.mark.parametrize(
"kind,attributes,expected_perf",
[
("test", {"unittest_suite": "talos"}, True),
("browsertime", {"unittest_suite": "raptor"}, True),
("perftest", {}, True),
("test", {"unittest_suite": "mochitest-browser-chrome"}, False),
("test", {"unittest_suite": "xpcshell"}, False),
("build", {}, False),
],
)
def test_is_perf_task(kind, attributes, expected_perf):
task = mock.MagicMock()
task.kind = kind
task.attributes = attributes
assert _is_perf_task(task) == expected_perf
def _make_task(label, priority):
task = mock.MagicMock()
task.label = label
task.task = {"priority": priority}
return task
def test_backfill_modifier_lowers_priority_for_all_tasks():
target = _make_task("test-raptor", "low")
dependency = _make_task("build-opt", "high")
for task in (target, dependency):
backfill_modifier(task, input={"label": "test-raptor"}, lower_priority=True)
assert target.task["priority"] == "very-low"
assert dependency.task["priority"] == "very-low"
def test_backfill_modifier_keeps_priority_when_not_lowered():
target = _make_task("test-mochitest", "low")
dependency = _make_task("build-opt", "high")
for task in (target, dependency):
backfill_modifier(task, input={"label": "test-mochitest"}, lower_priority=False)
assert target.task["priority"] == "low"
assert dependency.task["priority"] == "high"
def test_backfill_modifier_does_not_raise_when_already_lowest():
task = _make_task("test-raptor", "lowest")
backfill_modifier(task, input={"label": "test-raptor"}, lower_priority=True)
assert task.task["priority"] == "lowest"
if __name__ == "__main__":
main()