# Copyright 2014 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 = 'sbasi, achuith, rohitbm'
NAME = 'telemetry_Benchmarks.smoothness.tough_scrolling_cases'
SUITE = 'performance'
TIME = 'LONG'
TEST_CATEGORY = 'Benchmark'
TEST_CLASS = 'performance'
TEST_TYPE = 'server'

DOC = """
This server side test suite executes the Telemetry smoothness measurement test
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)
    job.run_test("telemetry_Benchmarks", host=host,
                 benchmark="smoothness.tough_scrolling_cases",
                 tag="smoothness.tough_scrolling_cases",
                 args=utils.args_to_dict(args))

parallel_simple(run_benchmark, machines)
