# 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 Dromaeo Core Query Benchmark"
SUITE = "perf_v2"
TIME = "LONG"
TEST_CATEGORY = "Benchmark"
TEST_CLASS = "performance"
TEST_TYPE = "server"

DOC = """
This server side test suite executes the Telemetry Dromaeo Dom Core Query
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="dromaeo.domcorequery",
                 tag="dromaeo.domcorequery")

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

parallel_simple(run_benchmark, machines)
