| *** Settings *** |
| |
| Documentation Verify that the uCode can be updated on supported |
| ... Non-Volatile Memory Express (NVMe) adapters on RedHat. |
| |
| # TEST PARAMETERS: |
| # OPENBMC_HOST The BMC host name or IP address. |
| # OPENBMC_USERNAME The BMC user name. |
| # OPENBMC_PASSWORD The BMC password. |
| # OS_HOST The OS host name or IP address. |
| # OS_USERNAME The OS user name. |
| # OS_PASSWORD The OS Host password. |
| # ADAPTER_UCODE_URL The url for the microcode file to be |
| # loaded. |
| # DEVICE NAMES A comma-seperated list containing the |
| # names of devices to be upgraded |
| # (e.g "nvme0n1,nvme1n1"). |
| # |
| # Example: |
| # robot -v ADAPTER_UCODE_URL:http://someurl.com/ucode/file.img |
| # -v DEVICE_NAMES:nvme0n1,nvme1n1 adapter_ucode_update.robot |
| |
| Resource ../syslib/utils_install.robot |
| |
| Suite Setup Suite Setup Execution |
| Test Teardown FFDC On Test Case Fail |
| |
| *** Variables *** |
| |
| |
| *** Test Cases *** |
| |
| Load And Activate uCode On Adapters |
| [Documentation] Load and activate firmware on the given adapters. |
| [Tags] Load_And_Activate_uCode_On_Adapters |
| |
| Printn |
| # Format parms. |
| # Ensure that nvme (pci-e storage utility) tool exists. |
| ${device_names}= Split String ${DEVICE_NAMES} , |
| OS Execute Command yes | yum install nvme-cli |
| Tool Exist nvme |
| # Load and activate firmware on the devices. |
| :FOR ${device_name} in @{device_names} |
| \ Load And Activate Firmware On Device ${device_name} |
| |
| |
| Reboot And Verify Code Update |
| [Documentation] Reboot the OS and verify that the firmware update |
| ... was successful. |
| [Tags] Reboot_And_Verify_Code_Update |
| |
| Host Reboot |
| # Reboot and verify success |
| ${stdout} ${stderr} ${rc} OS Execute Command |
| ... nvme list | grep nvme0 | awk '{print $NF'} |
| Should Contain ${image_file_name} ${stdout} |
| ... msg=The code update was not successful. |
| |
| |
| *** Keywords *** |
| |
| Load And Activate Firmware On Device |
| [Documentation] Load and activate firmware on device specified. |
| [Arguments] ${device_name} ${image_file_name}=${image_file_name} |
| |
| # Description of argument(s): |
| # device_name The name of the NVMe device to be loaded |
| # and activated (e.g. "nvme0n1"). |
| # image_file_name The name of the firmware image file. |
| |
| :FOR ${slot_id} IN RANGE 1 4 |
| \ Execute Commands On Slot |
| \ ... ${device_name} ${slot_id} ${image_file_name} |
| |
| |
| Execute Commands On Slot |
| [Documentation] Execute load and activate commands on given slot. |
| [Arguments] ${device_name} ${slot_id} |
| ... ${image_file_name}=${image_file_name} |
| |
| # Description of argument(s): |
| # device_name The name of the NVMe device to be loaded |
| # and activated (e.g. "nvme0n1"). |
| # slot_id The NVMe device slot id to be activated |
| # (e.g. "0","1", etc.). |
| # image_file_name The name of the firmware image file. |
| |
| ${stdout} ${stderr} ${rc} OS Execute Command |
| ... nvme fw-download /dev/${device_name} --fw=${image_file_name} |
| Should Contain ${stdout} Firmware download success |
| ... msg=${image_file_name} could not be loaded on slot:${slot} |
| ${stdout} ${stderr} ${rc} OS Execute Command |
| ... nvme fw-activate /dev/${device_name} -a 0 -s ${slot_id} |
| Should Contain ${stdout} Success activating firmware |
| ... msg=Could not activate slot:${slot_id} on ${device_name}. |
| |
| |
| Suite Setup Execution |
| [Documentation] Setup parms used in suite and download ucode file. |
| |
| ${stdout} ${stderr} ${rc}= OS Execute Command |
| ... wget ${ADAPTER_UCODE_URL} |
| ${image_dir_path_url} ${image_file_name}= |
| ... Split Path ${ADAPTER_UCODE_URL} |
| Set Global Variable ${image_file_name} |