# 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.
from autotest_lib.server import utils

NAME = "firmware_CsmeFwUpdate.dev"
AUTHOR = "ChromeOS Team"
METADATA = {
    "contacts": ["chromeos-faft@google.com", "jbettis@chromium.org"],
    "bug_component": "b:792402",  # ChromeOS > Platform > Enablement > Firmware > FAFT
    "criteria": "verifies if MW firmware udpate happens successfully",
    "requirements": ["sys-fw-0021-v01"],
}
ATTRIBUTES = "suite:faft_bios"
DEPENDENCIES = "servo_state:WORKING"
TIME = "SHORT"
TEST_TYPE = "server"
JOB_RETRIES = 0
TEST_CASE_ID = "CSME_UPDATE"

DOC = """
This test updates the RW section of the current bios with another image which contain
a differnt ME RW version and verifies if MW firmware udpate happens successfully.
This is applicable only for systems supporting Intel CSE Lite
"""
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(
        "firmware_CsmeFwUpdate",
        host=host,
        cmdline_args=args,
        dev_mode=True,
        tag="dev",
    )


parallel_simple(run, machines)
