# Copyright 2018 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """Shared libs by run_suite.py & run_suite_skylab.py.""" from __future__ import absolute_import from __future__ import division from __future__ import print_function import collections import json import sys from autotest_lib.client.common_lib import enum # Return code that will be sent back to callers. RETURN_CODES = enum.Enum( 'OK', 'ERROR', 'WARNING', 'INFRA_FAILURE', 'SUITE_TIMEOUT', 'BOARD_NOT_AVAILABLE', 'INVALID_OPTIONS', ) class SuiteResult(collections.namedtuple('SuiteResult', ['return_code', 'output_dict'])): """Result of running a suite to return.""" def __new__(cls, return_code, output_dict=None): if output_dict is None: output_dict = dict() else: output_dict = output_dict.copy() output_dict['return_code'] = return_code return super(SuiteResult, cls).__new__(cls, return_code, output_dict) @property def string_code(self): """Return the enum string name of the numerical return_code.""" return RETURN_CODES.get_string(self.return_code) def dump_json(obj): """Write obj JSON to stdout.""" output_json = json.dumps(obj, sort_keys=True) sys.stdout.write('#JSON_START#%s#JSON_END#' % output_json.strip())