Bug 1391051 - Allow requesting multiple runs of talos tasks draft
authorBrian Stack <bstack@mozilla.com>
Wed, 16 Aug 2017 13:34:14 -0700
changeset 647712 3ef1cac9a3969efeb0f7e6bc4c968d7071af3456
parent 647624 07ce8c96222d533fc89c02802143d35d7c351f9c
child 726616 7a358369966f02315fcccf0afa039972e7a99e54
push id74522
push userbstack@mozilla.com
push dateWed, 16 Aug 2017 20:37:37 +0000
bugs1391051
milestone57.0a1
Bug 1391051 - Allow requesting multiple runs of talos tasks MozReview-Commit-ID: 6dB4zDaDuAF
taskcluster/taskgraph/actions/add_talos.py
--- a/taskcluster/taskgraph/actions/add_talos.py
+++ b/taskcluster/taskgraph/actions/add_talos.py
@@ -18,22 +18,38 @@ logger = logging.getLogger(__name__)
 
 @register_callback_action(
     name='run-all-talos',
     title='Run All Talos Tests',
     symbol='raT',
     description="Add all Talos tasks to a push.",
     order=100,  # Useful for sheriffs, but not top of the list
     context=[],
+    schema={
+        'type': 'object',
+        'properties': {
+            'times': {
+                'type': 'integer',
+                'default': 1,
+                'minimum': 1,
+                'maximum': 6,
+                'title': 'Times',
+                'description': 'How many times to run each task.',
+            }
+        },
+        'additionalProperties': False
+    },
 )
 def add_all_talos(parameters, input, task_group_id, task_id, task):
     decision_task_id = find_decision_task(parameters)
 
     full_task_graph = get_artifact(decision_task_id, "public/full-task-graph.json")
     _, full_task_graph = TaskGraph.from_json(full_task_graph)
     label_to_taskid = get_artifact(decision_task_id, "public/label-to-taskid.json")
 
-    to_run = [label
-              for label, entry
-              in full_task_graph.tasks.iteritems() if 'talos_try_name' in entry.attributes]
+    times = input.get('times', 1)
+    for i in xrange(times):
+        to_run = [label
+                  for label, entry
+                  in full_task_graph.tasks.iteritems() if 'talos_try_name' in entry.attributes]
 
-    create_tasks(to_run, full_task_graph, label_to_taskid, parameters, decision_task_id)
-    logger.info('Scheduled {} talos tasks'.format(len(to_run)))
+        create_tasks(to_run, full_task_graph, label_to_taskid, parameters, decision_task_id)
+        logger.info('Scheduled {} talos tasks (time {}/{})'.format(len(to_run), i+1, times))