# Copyright (c) 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.

AUTHOR = "Chrome OS Team"
NAME = "video_PowerConsumption.webrtc_daily"
TIME = "MEDIUM"
TEST_CATEGORY = "Performance"
TEST_CLASS = "video"
SUITE = "video"
TEST_TYPE = "server"
DEPENDENCIES = "rpm, power:battery, hw_video_acc_vp8"
BUG_TEMPLATE = {
    "labels": ["OS-Chrome", "Cr-OS-Kernel-Video"],
}

DOC = """
This test outputs the power consumption of WebRTC to the performance dashboard.
The purpose is to watch the regression.
"""

import logging

from autotest_lib.client.common_lib import error


def _run_client_test(machine):
    """Runs client test with battery actively discharging."""
    client = hosts.create_host(machine)
    if not client.has_power():
        raise error.TestError("This test requires RPM support.")

    client.power_off()
    try:
        client_at = autotest.Autotest(client)
        client_at.run_test("video_WebRtcPerf",
                           run_hardware_acceleration_only=True,
                           decode_time_test=False,
                           cpu_test=False,
                           power_test=True)
    finally:
        client.power_on()


job.parallel_on_machines(_run_client_test, machines)
