| # Copyright (c) 2013 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 = "gwendal" |
| NAME = 'hardware_DiskFirmwareUpgrade_Server' |
| PURPOSE = 'Verify diskfirmware upgrade is not broken' |
| TIME = 'SHORT' |
| TEST_CLASS = 'hardware' |
| TEST_TYPE = 'server' |
| DEPENDENCIES = 'storage:ssd' |
| ATTRIBUTES = "suite:experimental" |
| |
| DOC = """ |
| The test uses a list of firmware packages and applies them to the DUT. |
| Each package is in a directory listed below. |
| Each directory normaly contains a rule file and bzipped firmware image. |
| After each tries, the package present in the base image is applied, to be |
| in a good state for the next package. |
| For each package, a list of 2 parameters is needed: |
| 1 - the expected return code of chromeos-disk-firmware-update.sh: |
| The test verifies the returned error code matches the expected value. |
| 2 - A boolean: |
| - True if the update script should upgrade the firmware on the SSD. |
| - False if the update script is not supposed to touch the firmware on the SSD. |
| The tests depend on the storage device installed on the machine. |
| A regex allows separating the tests based on the device installed. |
| """ |
| |
| DISK_FW_PACKAGES = { |
| r'LITEONIT LSS-.*' : { |
| 'broken_firmware_liteon': [0, True], # revert to previous firmware |
| 'missing_firmware_liteon': [1, False], # package without fw image |
| 'invalid_firmware_liteon': [5, False], # package with invalid fw image. |
| 'invalid_revision_liteon': [121, True], # with wrong target revision. |
| }, |
| # eMMC device in hexa: |
| # MAG2GC: 4d4147324743 |
| # HBG4e\05: 484247346505 |
| # DS2016: 445332303136 |
| # Samsung 128GB : 4455524d3452 |
| r'(4d4147324743|484247346505|445332303136|4455524d3452)' : { |
| 'test_firmware' : [0, True], # revert to previous firmware |
| }, |
| # SATA |
| r'(KINGSTON RBU-S.S.*|LITEON CS1-SP.*)' : { |
| 'test_firmware' : [0, True], # revert to previous firmware |
| }, |
| # NVMe |
| r'(SAMSUNG KUS040205M-B001)' : { |
| 'test_firmware' : [0, True], # revert to previous firmware |
| }, |
| r'.*' : { |
| 'missing_rules': [120, False], # rule file is missing. |
| } |
| } |
| |
| def run_hardware_disk_firmware_upgrade(machine): |
| job.run_test('hardware_DiskFirmwareUpgrade', |
| host=hosts.create_host(machine), |
| disk_fw_packages=DISK_FW_PACKAGES) |
| |
| job.parallel_simple(run_hardware_disk_firmware_upgrade, machines) |
| |