зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1660506 - Drop the 'remove_on_projects' feature from the Backstop optimization, r=marco
In the past, the 'backstop' optimization was applied to tasks by default across all projects, even though it only really made sense on autoland. To choose what would happen on non-autoland branches, we invented this 'remove_on_projects' concept. These days, we only apply the backstop optimization in the first place for autoland. So 'remove_on_projects' is no longer necessary. Depends on D88149 Differential Revision: https://phabricator.services.mozilla.com/D88150
This commit is contained in:
Родитель
81eecf7f8c
Коммит
0def0cc961
|
@ -5,7 +5,6 @@
|
||||||
from __future__ import absolute_import, print_function, unicode_literals
|
from __future__ import absolute_import, print_function, unicode_literals
|
||||||
|
|
||||||
from taskgraph.optimize import OptimizationStrategy, register_strategy
|
from taskgraph.optimize import OptimizationStrategy, register_strategy
|
||||||
from taskgraph.util.attributes import match_run_on_projects
|
|
||||||
from taskgraph.util.backstop import is_backstop, BACKSTOP_PUSH_INTERVAL, BACKSTOP_TIME_INTERVAL
|
from taskgraph.util.backstop import is_backstop, BACKSTOP_PUSH_INTERVAL, BACKSTOP_TIME_INTERVAL
|
||||||
|
|
||||||
|
|
||||||
|
@ -20,23 +19,12 @@ class Backstop(OptimizationStrategy):
|
||||||
push_interval (int): Number of pushes
|
push_interval (int): Number of pushes
|
||||||
time_interval (int): Minutes between forced schedules.
|
time_interval (int): Minutes between forced schedules.
|
||||||
Use 0 to disable.
|
Use 0 to disable.
|
||||||
remove_on_projects (set): For non-autoland projects, the task will
|
|
||||||
be removed if we're running on one of these projects, otherwise
|
|
||||||
it will be kept.
|
|
||||||
"""
|
"""
|
||||||
def __init__(self, push_interval, time_interval, remove_on_projects=None):
|
def __init__(self, push_interval, time_interval, remove_on_projects=None):
|
||||||
self.push_interval = push_interval
|
self.push_interval = push_interval
|
||||||
self.time_interval = time_interval
|
self.time_interval = time_interval
|
||||||
self.remove_on_projects = remove_on_projects or {'try'}
|
|
||||||
|
|
||||||
def should_remove_task(self, task, params, _):
|
def should_remove_task(self, task, params, _):
|
||||||
project = params["project"]
|
|
||||||
|
|
||||||
# Scheduling on a backstop only makes sense on autoland. For other projects,
|
|
||||||
# remove the task if the project matches self.remove_on_projects.
|
|
||||||
if project != 'autoland':
|
|
||||||
return match_run_on_projects(project, self.remove_on_projects)
|
|
||||||
|
|
||||||
if is_backstop(params, self.push_interval, self.time_interval):
|
if is_backstop(params, self.push_interval, self.time_interval):
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
|
@ -312,7 +312,7 @@ def test_bugbug_fallback(monkeypatch, responses, params):
|
||||||
|
|
||||||
def test_backstop(responses, params):
|
def test_backstop(responses, params):
|
||||||
all_labels = {t.label for t in default_tasks}
|
all_labels = {t.label for t in default_tasks}
|
||||||
opt = Backstop(10, 60, {'try'}) # every 10th push or 1 hour
|
opt = Backstop(10, 60) # every 10th push or 1 hour
|
||||||
|
|
||||||
responses.add(
|
responses.add(
|
||||||
responses.GET,
|
responses.GET,
|
||||||
|
@ -357,15 +357,6 @@ def test_backstop(responses, params):
|
||||||
scheduled = {t.label for t in default_tasks if not opt.should_remove_task(t, params, None)}
|
scheduled = {t.label for t in default_tasks if not opt.should_remove_task(t, params, None)}
|
||||||
assert scheduled == all_labels
|
assert scheduled == all_labels
|
||||||
|
|
||||||
# On non-autoland projects the 'remove_on_projects' value is used.
|
|
||||||
params['project'] = 'mozilla-central'
|
|
||||||
scheduled = {t.label for t in default_tasks if not opt.should_remove_task(t, params, None)}
|
|
||||||
assert scheduled == all_labels
|
|
||||||
|
|
||||||
params['project'] = 'try'
|
|
||||||
scheduled = {t.label for t in default_tasks if not opt.should_remove_task(t, params, None)}
|
|
||||||
assert scheduled == set()
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|
Загрузка…
Ссылка в новой задаче