Bug 1648414 - Define some additional bugbug-based strategies and remove poorly performing ones. r=ahal

Differential Revision: https://phabricator.services.mozilla.com/D81050
This commit is contained in:
Marco Castelluccio 2020-07-03 16:30:37 +00:00
parent a6c9cd86e2
commit 9e5cdda0dd
5 changed files with 104 additions and 33 deletions

View File

@ -34,27 +34,27 @@ relevant_tests:
env:
TASKGRAPH_OPTIMIZE_STRATEGIES: taskgraph.optimize:experimental.relevant_tests
bugbug_all:
description: Runs the bugbug_all optimization strategy instead of the default.
bugbug_tasks_medium:
description: Runs the bugbug_tasks_medium optimization strategy instead of the default.
treeherder:
symbol: SS(bugbug_all)
symbol: SS(bugbug_tasks_medium)
index:
product: source
job-name: shadow-scheduler-bugbug_all
job-name: shadow-scheduler-bugbug_tasks_medium
worker:
env:
TASKGRAPH_OPTIMIZE_STRATEGIES: taskgraph.optimize:experimental.bugbug_all
TASKGRAPH_OPTIMIZE_STRATEGIES: taskgraph.optimize:experimental.bugbug_tasks_medium
bugbug_all_high:
description: Runs the bugbug_all optimization strategy (with a high confidence threshold) instead of the default.
bugbug_tasks_high:
description: Runs the bugbug_tasks_high optimization strategy (with a high confidence threshold) instead of the default.
treeherder:
symbol: SS(bugbug_all_high)
symbol: SS(bugbug_tasks_high)
index:
product: source
job-name: shadow-scheduler-bugbug_all_high
job-name: shadow-scheduler-bugbug_tasks_high
worker:
env:
TASKGRAPH_OPTIMIZE_STRATEGIES: taskgraph.optimize:experimental.bugbug_all_high
TASKGRAPH_OPTIMIZE_STRATEGIES: taskgraph.optimize:experimental.bugbug_tasks_high
bugbug_debug_disperse:
description: Runs the bugbug_debug_disperse optimization strategy instead of the default.
@ -78,6 +78,50 @@ bugbug_disperse_low:
env:
TASKGRAPH_OPTIMIZE_STRATEGIES: taskgraph.optimize:experimental.bugbug_disperse_low
bugbug_disperse_medium:
description: Runs the bugbug_disperse_medium optimization strategy instead of the default.
treeherder:
symbol: SS(bugbug_disperse_med)
index:
product: source
job-name: shadow-scheduler-bugbug_disperse_medium
worker:
env:
TASKGRAPH_OPTIMIZE_STRATEGIES: taskgraph.optimize:experimental.bugbug_disperse_medium
bugbug_disperse_reduced_medium:
description: Runs the bugbug_disperse_reduced_medium optimization strategy instead of the default.
treeherder:
symbol: SS(bugbug_di_r_med_noun)
index:
product: source
job-name: shadow-scheduler-bugbug_disperse_reduced_medium
worker:
env:
TASKGRAPH_OPTIMIZE_STRATEGIES: taskgraph.optimize:experimental.bugbug_disperse_reduced_medium
bugbug_disperse_medium_no_unseen:
description: Runs the bugbug_disperse_medium_no_unseen optimization strategy instead of the default.
treeherder:
symbol: SS(bugbug_disp_med_noun)
index:
product: source
job-name: shadow-scheduler-bugbug_disperse_medium_no_unseen
worker:
env:
TASKGRAPH_OPTIMIZE_STRATEGIES: taskgraph.optimize:experimental.bugbug_disperse_medium_no_unseen
bugbug_disperse_medium_only_one:
description: Runs the bugbug_disperse_medium_only_one optimization strategy instead of the default.
treeherder:
symbol: SS(bugbug_disp_med_one)
index:
product: source
job-name: shadow-scheduler-bugbug_disperse_medium_only_one
worker:
env:
TASKGRAPH_OPTIMIZE_STRATEGIES: taskgraph.optimize:experimental.bugbug_disperse_medium_only_one
bugbug_disperse_high:
description: Runs the bugbug_disperse_high optimization strategy instead of the default.
treeherder:
@ -89,17 +133,6 @@ bugbug_disperse_high:
env:
TASKGRAPH_OPTIMIZE_STRATEGIES: taskgraph.optimize:experimental.bugbug_disperse_high
bugbug_disperse:
description: Runs the bugbug_disperse optimization strategy instead of the default.
treeherder:
symbol: SS(bugbug_disperse)
index:
product: source
job-name: shadow-scheduler-bugbug_disperse
worker:
env:
TASKGRAPH_OPTIMIZE_STRATEGIES: taskgraph.optimize:experimental.bugbug_disperse
bugbug_reduced:
description: Runs the bugbug_reduced optimization strategy instead of the default.
treeherder:

View File

@ -426,20 +426,20 @@ class experimental(object):
./mach try auto --strategy relevant_tests
"""
bugbug_all = {
'test': Any('skip-unless-schedules', 'bugbug', split_args=tuple),
bugbug_tasks_medium = {
'test': Any('skip-unless-schedules', 'bugbug-tasks-medium', split_args=tuple),
}
"""Doesn't limit platforms, medium confidence threshold."""
bugbug_all_high = {
'test': Any('skip-unless-schedules', 'bugbug-high', split_args=tuple),
bugbug_tasks_high = {
'test': Any('skip-unless-schedules', 'bugbug-tasks-high', split_args=tuple),
}
"""Doesn't limit platforms, high confidence threshold."""
bugbug_debug_disperse = {
'test': Any(
'skip-unless-schedules',
Any('bugbug', 'platform-debug', 'platform-disperse'),
Any('bugbug-low', 'platform-debug', 'platform-disperse'),
split_args=tuple
),
}
@ -454,15 +454,43 @@ class experimental(object):
}
"""Disperse tests across platforms, low confidence threshold."""
bugbug_disperse = {
bugbug_disperse_medium = {
'test': Any(
'skip-unless-schedules',
Any('bugbug', 'platform-disperse'),
Any('bugbug-medium', 'platform-disperse'),
split_args=tuple
),
}
"""Disperse tests across platforms, medium confidence threshold."""
bugbug_disperse_reduced_medium = {
'test': Any(
'skip-unless-schedules',
Any('bugbug-reduced-manifests', 'platform-disperse'),
split_args=tuple
),
}
"""Disperse tests across platforms, medium confidence threshold with reduced tasks."""
bugbug_disperse_medium_no_unseen = {
'test': Any(
'skip-unless-schedules',
Any('bugbug-medium', 'platform-disperse-no-unseen'),
split_args=tuple
),
}
"""Disperse tests across platforms (no modified for unseen configurations), medium confidence
threshold."""
bugbug_disperse_medium_only_one = {
'test': Any(
'skip-unless-schedules',
Any('bugbug-medium', 'platform-disperse-only-one'),
split_args=tuple
),
}
"""Disperse tests across platforms (one platform per group), medium confidence threshold."""
bugbug_disperse_high = {
'test': Any(
'skip-unless-schedules',

View File

@ -18,12 +18,15 @@ from taskgraph.util.bugbug import (
)
@register_strategy("bugbug", args=(CT_MEDIUM,))
@register_strategy("bugbug-low", args=(CT_LOW,))
@register_strategy("bugbug-medium", args=(CT_MEDIUM,))
@register_strategy("bugbug-high", args=(CT_HIGH,))
@register_strategy("bugbug-tasks-medium", args=(CT_MEDIUM, True))
@register_strategy("bugbug-tasks-high", args=(CT_HIGH, True))
@register_strategy("bugbug-reduced", args=(CT_MEDIUM, True, True))
@register_strategy("bugbug-reduced-fallback", args=(CT_MEDIUM, True, True, True))
@register_strategy("bugbug-reduced-high", args=(CT_HIGH, True, True))
@register_strategy("bugbug-reduced-manifests", args=(CT_MEDIUM, False, True))
class BugBugPushSchedules(OptimizationStrategy):
"""Query the 'bugbug' service to retrieve relevant tasks and manifests.
@ -120,6 +123,13 @@ class SkipUnlessDebug(OptimizationStrategy):
@register_strategy("platform-disperse")
@register_strategy("platform-disperse-no-unseen", args=(None, 0))
@register_strategy("platform-disperse-only-one", args=({
'high': 1,
'medium': 1,
'low': 1,
'lowest': 0,
}, 0))
class DisperseGroups(OptimizationStrategy):
"""Disperse groups across test configs.

View File

@ -16,8 +16,8 @@ RETRY_TIMEOUT = 8 * 60 # seconds
RETRY_INTERVAL = 10 # seconds
# Preset confidence thresholds.
CT_LOW = 0.5
CT_MEDIUM = 0.7
CT_LOW = 0.7
CT_MEDIUM = 0.8
CT_HIGH = 0.9
GROUP_TRANSLATIONS = {

View File

@ -21,7 +21,7 @@ from moztest.resolve import (
)
from taskgraph import GECKO
from taskgraph.util.bugbug import CT_MEDIUM, push_schedules
from taskgraph.util.bugbug import CT_LOW, push_schedules
here = os.path.abspath(os.path.dirname(__file__))
resolver = TestResolver.from_environment(cwd=here, loader_cls=TestManifestLoader)
@ -207,7 +207,7 @@ class DefaultLoader(BaseManifestLoader):
class BugbugLoader(DefaultLoader):
"""Load manifests using metadata from the TestResolver, and then
filter them based on a query to bugbug."""
CONFIDENCE_THRESHOLD = CT_MEDIUM
CONFIDENCE_THRESHOLD = CT_LOW
@memoize
def get_manifests(self, suite, mozinfo):