# Copyright (c) 2019 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.server import utils

AUTHOR = "rzakarian"
NAME = "policy_DeviceBootOnAcEnabled.false"
CRITERIA = "This test will fail if servo does not work as expected."
TIME = "LONG"
TEST_CATEGORY = "General"
TEST_CLASS = "enterprise"
TEST_TYPE = "server"
DEPENDENCIES = "servo_state:WORKING"

DOC = """
Test that verifies DeviceBootOnAcEnabled policy.
If this policy is set to true then boot on AC will always be enabled.
If this policy is set to false, boot on AC will always be disabled.
If this policy is left unset, boot on AC is disabled.

"""

case = False
args_dict = utils.args_to_dict(args)
servo_args = hosts.CrosHost.get_servo_arguments(args_dict)

def run(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test('policy_DeviceBootOnAcEnabled', host=host, case=case)

parallel_simple(run, machines)
