You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
3.6 KiB
85 lines
3.6 KiB
# Copyright 2017 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.
|
|
|
|
AUTHOR = "mruthven"
|
|
NAME = "firmware_Cr50Update"
|
|
PURPOSE = "Verify Cr50 update"
|
|
ATTRIBUTES = "suite:faft_cr50_experimental"
|
|
TIME = "SHORT"
|
|
TEST_TYPE = "server"
|
|
DEPENDENCIES = "servo_state:WORKING"
|
|
|
|
DOC = """
|
|
This test verifies Cr50 update works or recovery from erased nvmem.
|
|
|
|
To test postinstall cr50 update script set test to "post_install" or use
|
|
firmware_Cr50Update.post_install. To test the startup script leave the test arg
|
|
blank
|
|
|
|
The test will rollback to the oldest Cr50 image and then verify each update to
|
|
the next newest image runs successfully. If testing post install, the test will
|
|
update using cr50-update.sh. If testing the startup script the updates will be
|
|
run with cr50-update.conf after reboot..
|
|
|
|
The old release needs to have a version lower than the release image. The
|
|
release image needs to have a version lower than the dev image. The dev image
|
|
has to be newer than all of the images including the original cr50 image on
|
|
the dut to be able to guarantee that the original state can be restored.
|
|
If no_release path or old_release_path are given, the test will use
|
|
old_release_ver and release_ver to fetch the images from gs://.
|
|
|
|
If a valid path is given the version will be ignored. For example
|
|
release_path='/tmp/cr50.bin.prod' or release_ver='0.0.23/ZZAF:ffffffff:7f00'
|
|
could be used. The test will attempt to get the cr50 image from
|
|
/tmp/cr50.bin.prod first. If that doesn't exist then it will download the
|
|
version .23 image stored in google cloud storage. The version string needs to
|
|
contain the epoch, major, and minor versions separated by '.' and the image
|
|
board id. The image board id is optional. The tests can be run against all
|
|
versions since '0.0.13'.
|
|
|
|
If cr50_dbg_image_path is not specified, then the test will get the cr50
|
|
devids and attempt to get the debug image from gs://.
|
|
|
|
After the test is complete the original Cr50 image will be reflashed onto the
|
|
device.
|
|
|
|
@param iterations: the number of iterations to run
|
|
@param cr50_dbg_image_path: the location of the DBG image. Must be built with
|
|
CR50_DEV=1
|
|
@param release_path: the location of the release image
|
|
@param release_ver: RW and BID version string used to fetch the image from gs
|
|
@param old_release_path: the location of the old release image.
|
|
@param old_release_ver: RW version string used to fetch the image from gs
|
|
@param test: string representing the update type. use "post_install" if the test
|
|
should verify the cr50-update.sh post install script. Anything else
|
|
the test will run using the cr50-update.conf startup script.
|
|
"""
|
|
|
|
from autotest_lib.client.common_lib import error
|
|
from autotest_lib.server import utils
|
|
|
|
if 'args_dict' not in locals():
|
|
args_dict = {}
|
|
|
|
args_dict.update(utils.args_to_dict(args))
|
|
servo_args = hosts.CrosHost.get_servo_arguments(args_dict)
|
|
|
|
iterations = int(args_dict.get("iterations", 1))
|
|
old_release_path = args_dict.get("old_release_path", "")
|
|
old_release_ver = args_dict.get("old_release_ver", "")
|
|
release_path = args_dict.get("release_path", "")
|
|
release_ver = args_dict.get("release_ver", "")
|
|
test = args_dict.get("test", "")
|
|
|
|
def run(machine):
|
|
host = hosts.create_host(machine, servo_args=servo_args)
|
|
|
|
job.run_test("firmware_Cr50Update", host=host, cmdline_args=args,
|
|
release_path=release_path, release_ver=release_ver,
|
|
old_release_path=old_release_path,
|
|
old_release_ver=old_release_ver, test=test,
|
|
iterations=iterations, full_args=args_dict)
|
|
|
|
parallel_simple(run, machines)
|