# Copyright 2020 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

NAME = "power_LW.power_Display"
METADATA = {
    "contacts": ["chromeos-platform-power@google.com", "puthik@google.com"],
    "bug_component": "b:1361410",
    "criteria": "This test is a power benchmark with different display brightnesses.",
    "hw_agnostic": False,
    "doc" : "Control file for running power_Display in power lab.",
}
TEST_TYPE = "server"
ATTRIBUTES = "suite:power_dashboard_weekly"
DEPENDENCIES = "servo_state:WORKING"

from autotest_lib.client.common_lib import utils

args_dict = utils.args_to_dict(args)
servo_args = hosts.CrosHost.get_servo_arguments(args_dict)
test = 'power_Display'
args = {'pdash_note': args_dict.get('pdash_note', '')}

def run(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test("power_BatteryDrainControl", host=host,
                 drain_to_percent=70, tag=NAME.split('.')[1])
    job.run_test("power_BatteryChargeControl", host=host,
                 percent_charge_to_add=None, percent_target_charge=70,
                 tag=NAME.split('.')[1])
    job.run_test("power_LW", host=host, test=test, args=args,
                 machine=machine, tag=NAME.split('.')[1])

parallel_simple(run, machines)
