blob: 3dba66a4f24cbd36b027edb97df609b1d8a81507 [file] [log] [blame]
# Copyright 2019 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_Fingerprint.ROOnlyBootsValidRW"
PURPOSE = """
Verify the RO fingerprint firmware only boots valid RW firmware.
"""
CRITERIA = """
Fails if the RO firmware boots invalid RW firmware.
"""
ATTRIBUTES = "suite:fingerprint"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
DEPENDENCIES = "servo_state:WORKING, fingerprint"
JOB_RETRIES = 0
# This test uses futility and dev keys from autotest/files/server/cros/faft.
REQUIRE_SSP = True
DOC = """
Starts with MP-signed firmware. Then successively tries to flash three versions
to RW: dev, corrupted first byte, and corrupted last byte. Each of these should
flash successfully, but fail to boot (i.e., stay in RO mode). Finally, it
flashes an MP-signed version, which should successfully boot to RW.
"""
test_images = [ 'TEST_IMAGE_ORIGINAL',
'TEST_IMAGE_DEV',
'TEST_IMAGE_CORRUPT_FIRST_BYTE',
'TEST_IMAGE_CORRUPT_LAST_BYTE']
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_Fingerprint", host=host,
test_exe="ro_only_boots_valid_rw.sh",
test_exe_args=test_images)
parallel_simple(run, machines)