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

# TODO(b/343307903): Remove from PVS testplans and remove this file.

from autotest_lib.server import utils

AUTHOR = "ChromeOS Team"
NAME = "firmware_CorruptFwBodyA"
METADATA = {
    "contacts": ["chromeos-faft@google.com", "jbettis@chromium.org"],
    "bug_component": "b:792402",  # ChromeOS > Platform > Enablement > Firmware > FAFT
    "criteria": "Servo based firmware A body corruption test",
}
DEPENDENCIES = "servo_state:WORKING"
TIME = "SHORT"
TEST_TYPE = "server"
JOB_RETRIES = 0

DOC = """
This test corrupts firmware body A and checks the next boot results.
"""

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


def run_corruptfwbodya(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test(
        "firmware_CorruptFwBodyA",
        host=host,
        cmdline_args=args,
        disable_sysinfo=True,
        dev_mode=False,
    )


parallel_simple(run_corruptfwbodya, machines)
