autotest: Refactoring, move get_child_tasks to swarming_lib.
BUG=chromium:878054
TEST=None
Change-Id: Ia5628f4637a14790623d8e95df4990bdd166a983
Reviewed-on: https://chromium-review.googlesource.com/1191425
Reviewed-by: Xixuan Wu <xixuan@chromium.org>
Commit-Queue: Xixuan Wu <xixuan@chromium.org>
Tested-by: Xixuan Wu <xixuan@chromium.org>
diff --git a/venv/skylab_suite/suite_runner.py b/venv/skylab_suite/suite_runner.py
index 0cb589d..4b08828 100644
--- a/venv/skylab_suite/suite_runner.py
+++ b/venv/skylab_suite/suite_runner.py
@@ -49,7 +49,7 @@
def _resume_suite(test_specs, suite_handler, dry_run=False):
"""Resume a suite and its child tasks by given suite id."""
suite_id = suite_handler.suite_id
- all_tasks = _fetch_child_tasks(suite_id)
+ all_tasks = swarming_lib.get_child_tasks(suite_id)
not_yet_scheduled = _get_unscheduled_test_specs(
test_specs, suite_handler, all_tasks)
@@ -345,24 +345,6 @@
temp_json_path, suite_id)
-def _fetch_child_tasks(parent_task_id):
- """Get the child tasks based on a parent swarming task id.
-
- @param parent_task_id: The parent swarming task id.
-
- @return a list of dicts, each dict refers to the whole stats of a task,
- keys include 'name', 'bot_dimensions', 'tags', 'bot_id', 'state', etc.
- """
- swarming_cmd = swarming_lib.get_basic_swarming_cmd('query')
- swarming_cmd += ['tasks/list?tags=parent_task_id:%s' % parent_task_id]
- timeout_util = autotest.chromite_load('timeout_util')
- cros_build_lib = autotest.chromite_load('cros_build_lib')
- with timeout_util.Timeout(60):
- child_tasks = cros_build_lib.RunCommand(
- swarming_cmd, capture_output=True)
- return json.loads(child_tasks.output)['items']
-
-
@contextlib.contextmanager
def disable_logging(logging_level):
"""Context manager for disabling logging of a given logging level."""
@@ -379,7 +361,7 @@
# Log progress every 300 seconds.
no_logging = bool(iterations * SUITE_WAIT_SLEEP_INTERVAL_SECONDS % 300)
with disable_logging(logging.INFO if no_logging else logging.NOTSET):
- all_tasks = _fetch_child_tasks(suite_handler.suite_id)
+ all_tasks = swarming_lib.get_child_tasks(suite_handler.suite_id)
suite_handler.handle_results(all_tasks)
for t in suite_handler.retried_tasks:
_retry_test(suite_handler, t['task_id'], dry_run=dry_run)
diff --git a/venv/skylab_suite/swarming_lib.py b/venv/skylab_suite/swarming_lib.py
index 03f8001..e6a82eb 100644
--- a/venv/skylab_suite/swarming_lib.py
+++ b/venv/skylab_suite/swarming_lib.py
@@ -349,3 +349,21 @@
@return True if a bot is available to run task, otherwise False.
"""
return not (bot['is_dead'] or bot['quarantined'])
+
+
+def get_child_tasks(parent_task_id):
+ """Get the child tasks based on a parent swarming task id.
+
+ @param parent_task_id: The parent swarming task id.
+
+ @return a list of dicts, each dict refers to the whole stats of a task,
+ keys include 'name', 'bot_dimensions', 'tags', 'bot_id', 'state', etc.
+ """
+ swarming_cmd = get_basic_swarming_cmd('query')
+ swarming_cmd += ['tasks/list?tags=parent_task_id:%s' % parent_task_id]
+ timeout_util = autotest.chromite_load('timeout_util')
+ cros_build_lib = autotest.chromite_load('cros_build_lib')
+ with timeout_util.Timeout(60):
+ child_tasks = cros_build_lib.RunCommand(
+ swarming_cmd, capture_output=True)
+ return json.loads(child_tasks.output)['items']