xref: /openbmc/openbmc-test-automation/lib/esel_utils.robot (revision 2a2dbbd17ce4a703869fbf86f873ae9342423a89)
1*** Settings ***
2Documentation  Utilities for eSEL testing.
3
4Resource            ../lib/ipmi_client.robot
5Resource            ../lib/utils.robot
6Resource            ../lib/logging_utils.robot
7Variables           ../data/variables.py
8
9
10*** Variables ***
11
12${RESERVE_ID}       raw 0x0a 0x42
13
14${RAW_SUFFIX}       0x00 0x00 0x00 0x00 0x00 0x01 0x00 0x00
15...  0xdf 0x00 0x00 0x00 0x00 0x20 0x00 0x04 0x12 0x65 0x6f 0xaa 0x00 0x00
16
17${RAW_SEL_COMMIT}   raw 0x0a 0x44 0x00 0x00 0x02 0x00 0x00 0x00 0x00 0x20
18...  0x00 0x04 0x12 0xA6 0x6f 0x02 0x00 0x01
19
20
21*** Keywords ***
22
23Create eSEL
24    [Documentation]  Create an eSEL.
25    [Arguments]  ${IPMI_RAW_PREFIX}
26
27    # Description of Argument(s):
28    # IPMI_RAW_PREFIX   Provide the IPMI raw prefix format
29    #                   Default is '0x3a 0xf0 0x'.
30
31    Open Connection And Log In
32    ${Resv_id}=  Run Inband IPMI Standard Command  ${RESERVE_ID}
33    ${cmd}=  Catenate
34    ...  raw ${IPMI_RAW_PREFIX}${Resv_id.strip().rsplit(' ', 1)[0]}  ${RAW_SUFFIX}
35
36    Run Inband IPMI Standard Command  ${cmd}
37    Run Inband IPMI Standard Command  ${RAW_SEL_COMMIT}
38
39
40Count eSEL Entries
41    [Documentation]  Count eSEL entries logged.
42
43    ${resp}=  OpenBMC Get Request  ${BMC_LOGGING_ENTRY}
44    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
45    ${count}=  Get Length  ${resp.json()["data"]}
46    RETURN  ${count}
47
48
49Verify eSEL Entries
50    [Documentation]  Verify eSEL entries logged.
51
52    # {
53    #    "@odata.context": "/redfish/v1/$metadata#LogEntry.LogEntry",
54    #    "@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog/Entries/2",
55    #    "@odata.type": "#LogEntry.v1_4_0.LogEntry",
56    #    "Created": "2019-06-03T14:47:31+00:00",
57    #    "EntryType": "Event",
58    #    "Id": "2",
59    #    "Message": "org.open_power.Host.Error.Event",
60    #    "Name": "System DBus Event Log Entry",
61    #    "Severity": "Critical"
62    # }
63
64    ${elog_entry}=  Get Event Logs
65    Should Be Equal  ${elog_entry[0]["Message"]}  org.open_power.Host.Error.Event
66    Should Be Equal  ${elog_entry[0]["Severity"]}  Critical
67
68
69Check For Error Logs
70    [Documentation]  Fail if there are error logs. Ignore logs with
71    ...              severity in the ignorelist.
72
73    [Arguments]  ${ignorelist}
74
75    # Description of Argument(s):
76    # ignorelist A list to be used to filter out esels which are
77    #            of no interest to the caller.
78    #            Error Logs with Severity field matching an
79    #            entry in this list will be ignored. (e.g.
80    #            xyz.openbmc_project.Logging.Entry.Level.Error)
81
82    Print Timen  Checking Error Logs.
83    ${error_logs}=  Get Error Logs
84
85    ${num_error_logs}=  Get Length  ${error_logs}
86    Return From Keyword If  ${num_error_logs} == ${0}
87
88    # Get a list of the severities of the error logs.
89    ${error_log_severities}=  Nested Get  Severity  ${error_logs}
90    # Subtract the IGNORETLIST from the error_log_severities.
91    ${problem_error_logs}=  Evaluate
92    ...  list(set($error_log_severities) - set($ignorelist))
93
94    Valid Length  problem_error_logs   max_length=0
95