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

from autotest_lib.server import utils

AUTHOR = "Chrome OS Team"
NAME = "platform_ServoPowerStateController_USBUnplugged"
PURPOSE = "Verify servo PowerStateController functions."
CRITERIA = "This test will fail if servo does not work as expected."
TIME = "LONG"
TEST_CATEGORY = "Functional"
TEST_CLASS = "platform"
TEST_TYPE = "server"
DEPENDENCIES = "servo_state:WORKING"

DOC = """
The test exercises these transitions:
  normal mode -> off
  off -> off
  off -> recovery mode firmware screen
  firmware screen -> off
  off -> normal boot from internal storage
"""

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('platform_ServoPowerStateController', host=host,
                 usb_available=False)

parallel_simple(run, machines)
