# 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
    r'(4d4147324743|484247346505|445332303136|KINGSTON RBU-S.S.*|LITEON CS1-SP.*)' : {
        '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)

