# Copyright (c) 2013 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.

from autotest_lib.client.common_lib import utils
from autotest_lib.server import utils as server_utils

AUTHOR = "cmtice@chromium.org c-compiler-chrome@google.com"
NAME = "telemetry_Crosperf"
TIME = "LONG"
TEST_CATEGORY = "Benchmark"
TEST_CLASS = "performance"
TEST_TYPE = "server"
JOB_RETRIES = 0

DOC = """
This runs various Telemetry performance tests under the crosperf script.
This is part of Chrome OS Toolchain testing platform.
"""

# Put the args into the args_dict.
args_dict = utils.args_to_dict(args)

def run_telemetry_Crosperf(machine):
    dut = hosts.create_host(machine)
    hostname, _ = server_utils.get_host_info_from_machine(machine)
    job.run_test('telemetry_Crosperf', client_ip=hostname,
                  args=args_dict, dut=dut)

# run the test in multiple machines

job.parallel_simple(run_telemetry_Crosperf, machines)

