# 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.

# Do not edit this file! It was created by generate_controlfiles.py.

from autotest_lib.client.common_lib import utils

AUTHOR = 'Chrome OS Team'
NAME = 'telemetry_Benchmarks.loading.desktop'
ATTRIBUTES = 'suite:crosbolt_perf_perbuild'
TIME = 'LONG'
TEST_CATEGORY = 'Benchmark'
TEST_CLASS = 'performance'
TEST_TYPE = 'server'

DOC = '''
This server side test suite executes the Telemetry Benchmark:
loading.desktop
This is part of Chrome for Chrome OS performance testing.

Pass local=True to run with local telemetry and no AFE server.
'''

def run_benchmark(machine):
    host = hosts.create_host(machine)
    dargs = utils.args_to_dict(args)
    dargs['extra_args'] = '--story-tag-filter=typical'.split()
    job.run_test('telemetry_Benchmarks', host=host,
                 benchmark='loading.desktop',
                 tag='loading.desktop',
                 args=dargs)

parallel_simple(run_benchmark, machines)