Bug 1555032 - [taskgraph] Add ability to pass external optimize strategies via env, r=tomprince

This allows users to set TASKGRAPH_OPTIMIZE_STRATEGIES to a
python_path.find_object string. E.g:

    TASKGRAPH_OPTIMIZE_STRATEGIES="module:strategies" ./mach taskgraph optimized

This opens the door to swap in external strategies at runtime and will be
used for back testing experimental strategies.

Differential Revision: https://phabricator.services.mozilla.com/D33203

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Andrew Halberstadt 2019-05-31 12:56:47 +00:00
parent 968b5fb44e
commit 9a419e5b3f

View File

@ -323,10 +323,19 @@ class TaskGraphGenerator(object):
do_not_optimize = set(parameters.get('do_not_optimize', []))
if not parameters.get('optimize_target_tasks', True):
do_not_optimize = set(target_task_set.graph.nodes).union(do_not_optimize)
optimized_task_graph, label_to_taskid = optimize_task_graph(target_task_graph,
parameters,
do_not_optimize,
existing_tasks=existing_tasks)
# this is used for testing experimental optimization strategies
strategies = os.environ.get('TASKGRAPH_OPTIMIZE_STRATEGIES')
if strategies:
strategies = find_object(strategies)
optimized_task_graph, label_to_taskid = optimize_task_graph(
target_task_graph,
parameters,
do_not_optimize,
existing_tasks=existing_tasks,
strategies=strategies,
)
yield verifications('optimized_task_graph', optimized_task_graph, graph_config)