diff --git a/taskcluster/ci/source-test/shadow-scheduler.yml b/taskcluster/ci/source-test/shadow-scheduler.yml index 163c965850f9..443ed692eb95 100644 --- a/taskcluster/ci/source-test/shadow-scheduler.yml +++ b/taskcluster/ci/source-test/shadow-scheduler.yml @@ -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: diff --git a/taskcluster/taskgraph/optimize/__init__.py b/taskcluster/taskgraph/optimize/__init__.py index 631d8761c33b..d03358c66645 100644 --- a/taskcluster/taskgraph/optimize/__init__.py +++ b/taskcluster/taskgraph/optimize/__init__.py @@ -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', diff --git a/taskcluster/taskgraph/optimize/bugbug.py b/taskcluster/taskgraph/optimize/bugbug.py index d5b081800b04..f649512444f6 100644 --- a/taskcluster/taskgraph/optimize/bugbug.py +++ b/taskcluster/taskgraph/optimize/bugbug.py @@ -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. diff --git a/taskcluster/taskgraph/util/bugbug.py b/taskcluster/taskgraph/util/bugbug.py index 4aa9ab773c77..d568d994f79c 100644 --- a/taskcluster/taskgraph/util/bugbug.py +++ b/taskcluster/taskgraph/util/bugbug.py @@ -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 = { diff --git a/taskcluster/taskgraph/util/chunking.py b/taskcluster/taskgraph/util/chunking.py index 7953847797e4..e2900c675f17 100644 --- a/taskcluster/taskgraph/util/chunking.py +++ b/taskcluster/taskgraph/util/chunking.py @@ -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):