1*** Settings *** 2Documentation Test Non-maskable interrupt functionality. 3 4Resource ../lib/bmc_redfish_resource.robot 5Resource ../lib/boot_utils.robot 6Resource ../lib/openbmc_ffdc.robot 7Resource ../lib/secureboot/secureboot.robot 8Resource ../lib/state_manager.robot 9Library ../lib/bmc_ssh_utils.py 10Library ../lib/os_utilities.robot 11 12Test Teardown FFDC On Test Case Fail 13Suite Teardown Redfish.Logout 14 15 16*** Test Cases *** 17 18Trigger NMI When OPAL/Host OS Is Not Up 19 [Documentation] Verify return error code from Redfish 20 ... while injecting NMI when HOST OS is not up. 21 [Tags] Trigger_NMI_When_OPAL/Host_OS_Is_Not_Up 22 23 Redfish Power Off 24 Trigger NMI 25 26 27Trigger NMI When OPAL/Host OS Is Running And Secureboot Is Disabled 28 [Documentation] Verify valid return status code from Redfish 29 ... while injecting NMI, when HOST OS is running and 30 ... secureboot is disabled. 31 [Tags] Trigger_NMI_When_OPAL/Host_OS_Is_Running_And_Secureboot_Is_Disabled 32 [Setup] Test Setup Execution ${0} 33 34 Trigger NMI valid_status_codes=[${HTTP_OK}] 35 Verify Crash Dump Directory After NMI Inject 36 37 38*** Keywords *** 39 40Verify Crash Dump Directory After NMI Inject 41 [Documentation] Verification of crash dump directory after NMI inject. 42 43 Wait Until Keyword Succeeds 10 min 1 min Is Host Rebooted 44 Is OS Booted 45 Wait Until Keyword Succeeds 1 min 10 sec Verify Crash Dump Directory 46 47 48Test Setup Execution 49 [Documentation] Test setup execution. 50 [Arguments] ${secure_boot_mode}=${1} 51 52 # Description of argument(s): 53 # secure_boot_mode Secure boot -> Enable-1 or Disable-0. 54 55 Redfish Power Off stack_mode=skip 56 Set Auto Reboot ${1} 57 # Set and verify secure boot policy as disabled. 58 Set And Verify TPM Policy ${secure_boot_mode} 59 Redfish Power On 60 # Delete any pre-existing dump files. 61 OS Execute Command rm -rf /var/crash/* 62 ${os_release_info}= utils.Get OS Release Info 63 # Start crash dump utility on OS. 64 ${cmd}= Set Variable If 65 ... '${os_release_info['id']}' == 'ubuntu' kdump-config show kdumpctl start 66 OS Execute Command ${cmd} print_out=1 67 68 69Trigger NMI 70 [Documentation] Inject non-maskable interrupt Redfish URI. 71 [Arguments] ${valid_status_codes}=[${HTTP_INTERNAL_SERVER_ERROR}] 72 73 # Description of argument(s): 74 # valid_status_codes A list of status codes that the 75 # caller considers acceptable. 76 # See lib/redfish_plus.py for details. 77 78 Redfish.Login 79 Redfish.Post ${SYSTEM_BASE_URI}Actions/ComputerSystem.Reset 80 ... body={"ResetType": "Nmi"} valid_status_codes=${valid_status_codes} 81 82 83Verify Crash Dump Directory 84 [Documentation] Verify that the crash dump directory is not empty. 85 86 # As per the requirement, there should be a crash dump file 87 # after successful NMI injection. 88 89 ${output} ${stderr} ${rc}= 90 ... OS Execute Command ls -ltr /var/crash/* print_out=1 91