# 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 = "ChromeOS 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 PY_VERSION = 3 # 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)