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

AUTHOR = "chromeos-perf"
NAME = "Telemetry Sun Spider Benchmark"
SUITE = "perf_v2"
TIME = "LONG"
TEST_CATEGORY = "Benchmark"
TEST_CLASS = "performance"
TEST_TYPE = "server"

DOC = """
This server side test suite executes the Telemetry Sun Spider Benchmark.
This is part of Chrome for Chrome OS performance testing.
"""

def run_benchmark(machine):
    host = hosts.create_host(machine)

    # The benchmark reports power data when the DUT is on battery power, so
    # attempt to turn the power off for the duration.
    job.run_test("power_RPMTest", host=host, verify=False,
                 power_on=False, tag="off")

    # The benchmark doesn't need the power off to run successfully, so there
    # is no dependency on rpm, as an RPM failure could cause the job to fail
    # before running the benchmark.
    job.run_test("telemetry_Benchmarks", host=host,
                 benchmark="sunspider", tag="sunspider")

    job.run_test("power_RPMTest", host=host, verify=False,
                 power_on=True, tag="on")

parallel_simple(run_benchmark, machines)
