# 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.session_restore.cold.typical_25"
SUITE = "bvt-perbuild"
TIME = "LONG"
TEST_CATEGORY = "Benchmark"
TEST_CLASS = "performance"
TEST_TYPE = "server"

DOC = """
This server side test suite executes the Telemetry session restore performance
test for ChromeOS. 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="session_restore.cold.typical_25",
                 tag="session_restore.cold.typical_25",
                 args=utils.args_to_dict(args))

parallel_simple(run_benchmark, machines)
