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