# Copyright (c) 2021 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 = "firmware_CorruptMinios.minios_a"
PURPOSE = "Corrupt one MiniOS kernel, set the priority to that, and ensure that both priority can boot"
CRITERIA = "This test will fail if the device fail to boot to MiniOS when one MiniOS kernel is corrupted"
ATTRIBUTES = "suite:faft_bios, suite:faft_bios_ro_qual, suite:faft_lv4, suite:faft_bios_tot"
DEPENDENCIES = "servo_state:WORKING"
TIME = "MEDIUM"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
JOB_RETRIES = 0
PY_VERSION = 3

DOC = """
This test requires the device to support MiniOS. On runtime, this test uses
the dd tool to corrupt the MiniOS partition and try to boot MiniOS from
firmware manual recovery screen.
"""

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_CorruptMinios", host=host, cmdline_args=args,
                 disable_sysinfo=True, minios_section='a')

parallel_simple(run, machines)
