1*** Settings ***
2
3Documentation    Module to test IPMI SEL functionality.
4Resource         ../lib/ipmi_client.robot
5Resource         ../lib/openbmc_ffdc.robot
6Variables        ../data/ipmi_raw_cmd_table.py
7
8Test Teardown    FFDC On Test Case Fail
9
10*** Variables ***
11
12${sensor_number}      0x17
13
14
15*** Test Cases ***
16
17Verify IPMI SEL Version
18    [Documentation]  Verify IPMI SEL's version info.
19    [Tags]  Verify_IPMI_SEL_Version
20    ${version_info}=  Get IPMI SEL Setting  Version
21    ${setting_status}=  Fetch From Left  ${version_info}  (
22    ${setting_status}=  Evaluate  $setting_status.replace(' ','')
23
24    Should Be True  ${setting_status} >= 1.5
25    Should Contain  ${version_info}  v2 compliant  case_insensitive=True
26
27
28Verify Empty SEL
29    [Documentation]  Verify IPMI sel clear command clears the SEL entry.
30    [Tags]  Verify_Empty_SEL
31
32    # Generate an error log and verify there is one at least.
33    Create Test PEL Log
34    ${resp}=  Run IPMI Standard Command  sel elist last 1
35    Log To Console  ${resp}
36
37    Should Contain Any  ${resp}  system hardware failure   Asserted
38    ...  msg=Add SEL Entry failed.
39
40    # Send SEL clear command and verify if it really clears up the SEL entry.
41    Run IPMI Standard Command  sel clear
42    Sleep  5s
43
44    ${resp}=  Run IPMI Standard Command  sel list
45    Should Contain  ${resp}  SEL has no entries  case_insensitive=True
46
47
48Verify Add SEL Entry
49    [Documentation]  Verify add SEL entry.
50    [Tags]  Verify_Add_SEL_Entry
51    [Teardown]  Run Keywords  FFDC On Test Case Fail  AND  Run IPMI Standard Command  sel clear
52
53    Run IPMI Standard Command  sel clear
54    Sleep  5s
55
56    # The IPMI raw command to generate Temp sensor  error is no longer working.
57    # Our aim is to check if the SEL command is listed in IPMI or not.
58    # Original keyword "Create SEL" for reference
59    Create Test PEL Log
60
61    # Get last SEL entry.
62    ${resp}=  Run IPMI Standard Command  sel elist last 1
63    #  output:
64    #  1 | 11/17/2021 | 07:49:20 | System Event #0x01 | Undetermined system hardware failure | Asserted
65    Run Keywords  Should Contain  ${resp}  system hardware failure  AND
66    ...  Should Contain  ${resp}  Asserted  msg=Add SEL Entry failed.
67
68
69Verify Reserve SEL
70    [Documentation]  Verify reserve SEL.
71    [Tags]  Verify_Reserve_SEL
72
73    ${resp}=  Run IPMI Standard Command
74    ...  raw ${IPMI_RAW_CMD['SEL_entry']['Reserve'][0]}
75    ${reserve_id}=  Split String  ${resp}
76
77    # Execute clear SEL raw command with Reservation ID.
78    # Command will not execute unless the correct Reservation ID value is provided.
79    Run IPMI Standard Command
80    ...  raw 0x0a 0x47 0x${reserve_id[0]} 0x${reserve_id[1]} 0x43 0x4c 0x52 0xaa
81
82
83*** Keywords ***
84
85Create SEL
86    [Documentation]  Create a SEL.
87
88    # Create a SEL.
89    # Example:
90    # a | 02/14/2020 | 01:16:58 | Temperature #0x17 |  | Asserted
91    Run IPMI Command
92    ...  0x0a 0x44 0x00 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x04 0x01 ${sensor_number} 0x00 0xa0 0x04 0x07
93