blob: db7d98b21a84b4993d056141e098c41745c475ef [file] [log] [blame]
# Copyright 2017 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.
"""Utility to deploy and run result utils on a DUT.
"""
import logging
import os
import common
from autotest_lib.client.common_lib import error
from autotest_lib.client.common_lib import utils as client_utils
try:
from chromite.lib import metrics
except ImportError:
metrics = client_utils.metrics_mock
THROTTLE_OPTION_FMT = '-m %s'
BUILD_DIR_SUMMARY_CMD = '%s/result_tools/utils.py -p %s %s'
BUILD_DIR_SUMMARY_TIMEOUT = 120
def run_on_client(host, client_results_dir, enable_result_throttling=False):
"""Run result utils on the given host.
@param host: Host to run the result utils.
@param client_results_dir: Path to the results directory on the client.
@param enable_result_throttling: True to enable result throttling.
"""
with metrics.SecondsTimer(
'chromeos/autotest/job/dir_summary_collection_duration',
fields={'dut_host_name': host.hostname}):
try:
logging.debug('Deploy result utilities to %s', host.hostname)
host.send_file(os.path.dirname(__file__), host.autodir)
logging.debug('Getting directory summary for %s.',
client_results_dir)
throttle_option = ''
if enable_result_throttling:
throttle_option = (THROTTLE_OPTION_FMT %
host.job.max_result_size_KB)
cmd = (BUILD_DIR_SUMMARY_CMD %
(host.autodir, client_results_dir + '/', throttle_option))
host.run(cmd, ignore_status=False,
timeout=BUILD_DIR_SUMMARY_TIMEOUT)
except error.AutoservRunError:
logging.exception(
'Failed to create directory summary for %s.',
client_results_dir)