# 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

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

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

profiler = None
p_args = []

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

if 'profiler' in args_dict:
   profiler = args_dict['profiler']
   if 'profiler_args' in args_dict:
      p_args   = args_dict['profiler_args']

if profiler:
   job.default_profile_only = True
   job.profilers.add(profiler, p_args)

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

# run the test in multiple machines

job.parallel_simple(run_telemetry_Crosperf, machines)

if profiler:
   job.profilers.delete (profiler)
