# Copyright (c) 2020 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 = "aluo"
NAME = "firmware_FAFTModeTransitions.all_single"
PURPOSE = "Test FAFT ability to switch between different modes"
CRITERIA = "This test will fail if FAFT can not switch between any two modes."
ATTRIBUTES = "suite:faft_smoke"
DEPENDENCIES = "servo_state:WORKING"
TIME = "MEDIUM"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"

DOC = """
This test checks the following mode transitions:
  - Transition between any two modes (single transition)
"""

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


def run_faftmodetransitions(machine):
    host = hosts.create_host(machine, servo_args=servo_args)

    job.run_test(
            "firmware_FAFTModeTransitions",
            host=host,
            cmdline_args=args,
            disable_sysinfo=True,
            mode_seq=["normal", "dev", "rec", "normal", "rec", "dev", "normal"])


parallel_simple(run_faftmodetransitions, machines)
