xref: /openbmc/openbmc-test-automation/redfish/systems/eventlog/test_event_logging.robot (revision 39c0051801d3c4c9fa4999dd1dd70a0f60aa96ef)
18cca7fb8SGeorge Keishing*** Settings ***
28cca7fb8SGeorge KeishingDocumentation       Inventory of hardware resources under systems.
38cca7fb8SGeorge Keishing
48cca7fb8SGeorge KeishingResource            ../../../lib/bmc_redfish_resource.robot
58cca7fb8SGeorge KeishingResource            ../../../lib/bmc_redfish_utils.robot
68cca7fb8SGeorge KeishingResource            ../../../lib/logging_utils.robot
78cca7fb8SGeorge KeishingResource            ../../../lib/openbmc_ffdc.robot
88fe6024eSGeorge KeishingResource            ../../../lib/ipmi_client.robot
9759c6f97SGeorge KeishingLibrary             ../../../lib/logging_utils.py
108cca7fb8SGeorge Keishing
11b0a491f2SGeorge KeishingTest Setup          Test Setup Execution
128cca7fb8SGeorge KeishingTest Teardown       Test Teardown Execution
13b0a491f2SGeorge KeishingSuite Teardown      Suite Teardown Execution
148cca7fb8SGeorge Keishing
15759c6f97SGeorge Keishing** Variables ***
16759c6f97SGeorge Keishing
17759c6f97SGeorge Keishing${max_num_event_logs}  ${200}
18759c6f97SGeorge Keishing
198cca7fb8SGeorge Keishing*** Test Cases ***
208cca7fb8SGeorge Keishing
218cca7fb8SGeorge KeishingEvent Log Check After BMC Reboot
228cca7fb8SGeorge Keishing    [Documentation]  Check event log after BMC rebooted.
238cca7fb8SGeorge Keishing    [Tags]  Event_Log_Check_After_BMC_Reboot
248cca7fb8SGeorge Keishing
258cca7fb8SGeorge Keishing    Redfish Purge Event Log
268cca7fb8SGeorge Keishing    Event Log Should Not Exist
278cca7fb8SGeorge Keishing
288cca7fb8SGeorge Keishing    Redfish OBMC Reboot (off)
298cca7fb8SGeorge Keishing
308cca7fb8SGeorge Keishing    Redfish.Login
318cca7fb8SGeorge Keishing    Wait Until Keyword Succeeds  1 mins  15 secs   Redfish.Get  ${EVENT_LOG_URI}Entries
328cca7fb8SGeorge Keishing
338cca7fb8SGeorge Keishing    Event Log Should Not Exist
348cca7fb8SGeorge Keishing
358cca7fb8SGeorge Keishing
36b0a491f2SGeorge KeishingEvent Log Check After Host Poweron
37b0a491f2SGeorge Keishing    [Documentation]  Check event log after host has booted.
38b0a491f2SGeorge Keishing    [Tags]  Event_Log_Check_After_Host_Poweron
39b0a491f2SGeorge Keishing
40b0a491f2SGeorge Keishing    Redfish Purge Event Log
41b0a491f2SGeorge Keishing    Event Log Should Not Exist
42b0a491f2SGeorge Keishing
43b0a491f2SGeorge Keishing    Redfish Power On
44b0a491f2SGeorge Keishing
45b0a491f2SGeorge Keishing    Redfish.Login
46b0a491f2SGeorge Keishing    Event Log Should Not Exist
47b0a491f2SGeorge Keishing
48b0a491f2SGeorge Keishing
49b0a491f2SGeorge KeishingCreate Test Event Log And Verify
50b0a491f2SGeorge Keishing    [Documentation]  Create event logs and verify via redfish.
51b0a491f2SGeorge Keishing    [Tags]  Create_Test_Event_Log_And_Verify
52b0a491f2SGeorge Keishing
53b0a491f2SGeorge Keishing    Create Test Error Log
54b0a491f2SGeorge Keishing    Event Log Should Exist
55b0a491f2SGeorge Keishing
56b0a491f2SGeorge Keishing
57b0a491f2SGeorge KeishingTest Event Log Persistency On Restart
58b0a491f2SGeorge Keishing    [Documentation]  Restart logging service and verify event logs.
59b0a491f2SGeorge Keishing    [Tags]  Test_Event_Log_Persistency_On_Restart
60b0a491f2SGeorge Keishing
61b0a491f2SGeorge Keishing    Create Test Error Log
62b0a491f2SGeorge Keishing    Event Log Should Exist
63b0a491f2SGeorge Keishing
64b0a491f2SGeorge Keishing    BMC Execute Command
65b0a491f2SGeorge Keishing    ...  systemctl restart xyz.openbmc_project.Logging.service
66b0a491f2SGeorge Keishing    Sleep  10s  reason=Wait for logging service to restart properly.
67b0a491f2SGeorge Keishing
68b0a491f2SGeorge Keishing    Event Log Should Exist
69b0a491f2SGeorge Keishing
70b0a491f2SGeorge Keishing
71b0a491f2SGeorge KeishingTest Event Entry Numbering Reset On Restart
72b0a491f2SGeorge Keishing    [Documentation]  Restart logging service and verify event logs entry starts
73b0a491f2SGeorge Keishing    ...  from entry "Id" 1.
74b0a491f2SGeorge Keishing    [Tags]  Test_Event_Entry_Numbering_Reset_On_Restart
75b0a491f2SGeorge Keishing
76b0a491f2SGeorge Keishing    #{
77b0a491f2SGeorge Keishing    #  "@odata.context": "/redfish/v1/$metadata#LogEntryCollection.LogEntryCollection",
78b0a491f2SGeorge Keishing    #  "@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog/Entries",
79b0a491f2SGeorge Keishing    #  "@odata.type": "#LogEntryCollection.LogEntryCollection",
80b0a491f2SGeorge Keishing    #  "Description": "Collection of System Event Log Entries",
81b0a491f2SGeorge Keishing    #  "Members": [
82b0a491f2SGeorge Keishing    #  {
83b0a491f2SGeorge Keishing    #    "@odata.context": "/redfish/v1/$metadata#LogEntry.LogEntry",
84b0a491f2SGeorge Keishing    #    "@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog/Entries/1",
85b0a491f2SGeorge Keishing    #    "@odata.type": "#LogEntry.v1_4_0.LogEntry",
86b0a491f2SGeorge Keishing    #    "Created": "2019-05-29T13:19:27+00:00",
87b0a491f2SGeorge Keishing    #    "EntryType": "Event",
88b0a491f2SGeorge Keishing    #    "Id": "1",               <----- Event log ID
89b0a491f2SGeorge Keishing    #    "Message": "org.open_power.Host.Error.Event",
90b0a491f2SGeorge Keishing    #    "Name": "System DBus Event Log Entry",
91b0a491f2SGeorge Keishing    #    "Severity": "Critical"
92b0a491f2SGeorge Keishing    #  }
93b0a491f2SGeorge Keishing    #  ],
94b0a491f2SGeorge Keishing    #  "Members@odata.count": 1,
95b0a491f2SGeorge Keishing    #  "Name": "System Event Log Entries"
96b0a491f2SGeorge Keishing    #}
97b0a491f2SGeorge Keishing
98b0a491f2SGeorge Keishing    Create Test Error Log
99b0a491f2SGeorge Keishing    Create Test Error Log
100b0a491f2SGeorge Keishing    Event Log Should Exist
101b0a491f2SGeorge Keishing
102b0a491f2SGeorge Keishing    Redfish Purge Event Log
103b0a491f2SGeorge Keishing    Event Log Should Not Exist
104b0a491f2SGeorge Keishing
105b0a491f2SGeorge Keishing    BMC Execute Command
106b0a491f2SGeorge Keishing    ...  systemctl restart xyz.openbmc_project.Logging.service
107b0a491f2SGeorge Keishing    Sleep  10s  reason=Wait for logging service to restart properly.
108b0a491f2SGeorge Keishing
109b0a491f2SGeorge Keishing    Create Test Error Log
110b0a491f2SGeorge Keishing    ${elogs}=  Get Event Logs
111b0a491f2SGeorge Keishing    Should Be Equal  ${elogs[0]["Id"]}  1  msg=Event log entry is not 1.
112b0a491f2SGeorge Keishing
113b0a491f2SGeorge Keishing
114b0a491f2SGeorge KeishingTest Event Log Persistency On Reboot
115b0a491f2SGeorge Keishing    [Documentation]  Reboot BMC and verify event log.
116b0a491f2SGeorge Keishing    [Tags]  Test_Event_Log_Persistency_On_Reboot
117b0a491f2SGeorge Keishing
118b0a491f2SGeorge Keishing    Redfish Purge Event Log
119b0a491f2SGeorge Keishing    Create Test Error Log
120b0a491f2SGeorge Keishing    Event Log Should Exist
121b0a491f2SGeorge Keishing
122b0a491f2SGeorge Keishing    Redfish OBMC Reboot (off)
123b0a491f2SGeorge Keishing
124b0a491f2SGeorge Keishing    Redfish.Login
125b0a491f2SGeorge Keishing    Wait Until Keyword Succeeds  1 mins  15 secs   Redfish.Get  ${EVENT_LOG_URI}Entries
126b0a491f2SGeorge Keishing
127b0a491f2SGeorge Keishing    Event Log Should Exist
128b0a491f2SGeorge Keishing
129b0a491f2SGeorge Keishing
130ddbc88c7SGeorge Keishing# TODO: openbmc/openbmc-test-automation#1789
131ddbc88c7SGeorge KeishingCreate Test Event Log And Verify Resolved Field
132ddbc88c7SGeorge Keishing    [Documentation]  Create event log and verify "Resolved" field is 0.
133ddbc88c7SGeorge Keishing    [Tags]  Create_Test_Event_Log_And_Verify_Resolved_Field
134ddbc88c7SGeorge Keishing
135ddbc88c7SGeorge Keishing    # Example Error log:
136ddbc88c7SGeorge Keishing    #  "/xyz/openbmc_project/logging/entry/1": {
137ddbc88c7SGeorge Keishing    #    "AdditionalData": [
138ddbc88c7SGeorge Keishing    #        "STRING=FOO"
139ddbc88c7SGeorge Keishing    #    ],
140ddbc88c7SGeorge Keishing    #    "Id": 1,
141ddbc88c7SGeorge Keishing    #    "Message": "example.xyz.openbmc_project.Example.Elog.AutoTestSimple",
142ddbc88c7SGeorge Keishing    #    "Resolved": 0,
143ddbc88c7SGeorge Keishing    #    "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error",
144ddbc88c7SGeorge Keishing    #    "Timestamp": 1490817164983,
145ddbc88c7SGeorge Keishing    #    "associations": []
146ddbc88c7SGeorge Keishing    # },
147ddbc88c7SGeorge Keishing
148ddbc88c7SGeorge Keishing    # To mark an error as resolved, without deleting the error, user would
149ddbc88c7SGeorge Keishing    # set this bool property.
150ddbc88c7SGeorge Keishing    # In this test context we are making sure "Resolved" field is "0"
151ddbc88c7SGeorge Keishing    # by default.
152ddbc88c7SGeorge Keishing
153ddbc88c7SGeorge Keishing    Redfish Purge Event Log
154ddbc88c7SGeorge Keishing    Create Test Error Log
155ddbc88c7SGeorge Keishing    ${elog_entry}=  Get URL List  ${BMC_LOGGING_ENTRY}
156ddbc88c7SGeorge Keishing    ${resolved}=  Read Attribute  ${elog_entry[0]}  Resolved
157ddbc88c7SGeorge Keishing    Should Be True  ${resolved} == 0
158ddbc88c7SGeorge Keishing
159ddbc88c7SGeorge Keishing
160148d08c2SGeorge KeishingCreate Test Event Log And Verify Time Stamp
161148d08c2SGeorge Keishing    [Documentation]  Create event logs and verify time stamp.
162148d08c2SGeorge Keishing    [Tags]  Create_Test_Event_Log_And_Verify_Time_Stamp
163148d08c2SGeorge Keishing
164148d08c2SGeorge Keishing    #{
165148d08c2SGeorge Keishing    #  "@odata.context": "/redfish/v1/$metadata#LogEntryCollection.LogEntryCollection",
166148d08c2SGeorge Keishing    #  "@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog/Entries",
167148d08c2SGeorge Keishing    #  "@odata.type": "#LogEntryCollection.LogEntryCollection",
168148d08c2SGeorge Keishing    #  "Description": "Collection of System Event Log Entries",
169148d08c2SGeorge Keishing    #  "Members": [
170148d08c2SGeorge Keishing    #  {
171148d08c2SGeorge Keishing    #    "@odata.context": "/redfish/v1/$metadata#LogEntry.LogEntry",
172148d08c2SGeorge Keishing    #    "@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog/Entries/1",
173148d08c2SGeorge Keishing    #    "@odata.type": "#LogEntry.v1_4_0.LogEntry",
174148d08c2SGeorge Keishing    #    "Created": "2019-05-29T13:19:27+00:00", <--- Time stamp
175148d08c2SGeorge Keishing    #    "EntryType": "Event",
176148d08c2SGeorge Keishing    #    "Id": "1",
177148d08c2SGeorge Keishing    #    "Message": "org.open_power.Host.Error.Event",
178148d08c2SGeorge Keishing    #    "Name": "System DBus Event Log Entry",
179148d08c2SGeorge Keishing    #    "Severity": "Critical"
180148d08c2SGeorge Keishing    #  }
181148d08c2SGeorge Keishing    #  ],
182148d08c2SGeorge Keishing    #  "Members@odata.count": 1,
183148d08c2SGeorge Keishing    #  "Name": "System Event Log Entries"
184148d08c2SGeorge Keishing    #}
185148d08c2SGeorge Keishing
186148d08c2SGeorge Keishing    Redfish Purge Event Log
187148d08c2SGeorge Keishing
188148d08c2SGeorge Keishing    Create Test Error Log
189148d08c2SGeorge Keishing    Sleep  2s
190148d08c2SGeorge Keishing    Create Test Error Log
191148d08c2SGeorge Keishing
192148d08c2SGeorge Keishing    ${elog_entry}=  Get Event Logs
193148d08c2SGeorge Keishing
194148d08c2SGeorge Keishing    # The event log generated is associated with the epoc time and unique
195148d08c2SGeorge Keishing    # for every error and in increasing time stamp.
196148d08c2SGeorge Keishing    ${time_stamp1}=  Convert Date  ${elog_entry[0]["Created"]}  epoch
197148d08c2SGeorge Keishing    ${time_stamp2}=  Convert Date  ${elog_entry[1]["Created"]}  epoch
198148d08c2SGeorge Keishing
199148d08c2SGeorge Keishing    Should Be True  ${time_stamp2} > ${time_stamp1}
200148d08c2SGeorge Keishing
201148d08c2SGeorge Keishing
202ddbc88c7SGeorge KeishingVerify IPMI SEL Delete
203ddbc88c7SGeorge Keishing    [Documentation]  Verify IPMI SEL delete operation.
204ddbc88c7SGeorge Keishing    [Tags]  Verify_IPMI_SEL_Delete
205ddbc88c7SGeorge Keishing
206ddbc88c7SGeorge Keishing    Redfish Purge Event Log
207ddbc88c7SGeorge Keishing    Create Test Error Log
208ddbc88c7SGeorge Keishing
209ddbc88c7SGeorge Keishing    ${sel_list}=  Run IPMI Standard Command  sel list
210ddbc88c7SGeorge Keishing    Should Not Be Equal As Strings  ${sel_list}  SEL has no entries
211ddbc88c7SGeorge Keishing
212ddbc88c7SGeorge Keishing    # Example of SEL List:
213ddbc88c7SGeorge Keishing    # 4 | 04/21/2017 | 10:51:16 | System Event #0x01 | Undetermined system hardware failure | Asserted
214ddbc88c7SGeorge Keishing
215ddbc88c7SGeorge Keishing    ${sel_entry}=  Fetch from Left  ${sel_list}  |
216ddbc88c7SGeorge Keishing    ${sel_entry}=  Evaluate  $sel_entry.replace(' ','')
217ddbc88c7SGeorge Keishing    ${sel_entry}=  Convert To Integer  0x${sel_entry}
218ddbc88c7SGeorge Keishing
219ddbc88c7SGeorge Keishing    ${sel_delete}=  Run IPMI Standard Command  sel delete ${sel_entry}
220ddbc88c7SGeorge Keishing    Should Be Equal As Strings  ${sel_delete}  Deleted entry ${sel_entry}
221ddbc88c7SGeorge Keishing    ...  case_insensitive=True
222ddbc88c7SGeorge Keishing
223ddbc88c7SGeorge Keishing    ${sel_list}=  Run IPMI Standard Command  sel list
224ddbc88c7SGeorge Keishing    Should Be Equal As Strings  ${sel_list}  SEL has no entries
225ddbc88c7SGeorge Keishing    ...  case_insensitive=True
226ddbc88c7SGeorge Keishing
227ddbc88c7SGeorge Keishing
2280b76e421SGeorge KeishingDelete Non Existing SEL Event Entry
2290b76e421SGeorge Keishing    [Documentation]  Delete non existing SEL event entry.
2300b76e421SGeorge Keishing    [Tags]  Delete_Non_Existing_SEL_Event_Entry
2310b76e421SGeorge Keishing
2320b76e421SGeorge Keishing    ${sel_delete}=  Run Keyword And Expect Error  *
2330b76e421SGeorge Keishing    ...  Run IPMI Standard Command  sel delete 100
2340b76e421SGeorge Keishing    Should Contain  ${sel_delete}  Unable to delete entry
2350b76e421SGeorge Keishing    ...  case_insensitive=True
2360b76e421SGeorge Keishing
2370b76e421SGeorge Keishing
2380b76e421SGeorge KeishingDelete Invalid SEL Event Entry
2390b76e421SGeorge Keishing    [Documentation]  Delete invalid SEL event entry.
2400b76e421SGeorge Keishing    [Tags]  Delete_Invalid_SEL_Event_Entry
2410b76e421SGeorge Keishing
2420b76e421SGeorge Keishing    ${sel_delete}=  Run Keyword And Expect Error  *
2430b76e421SGeorge Keishing    ...  Run IPMI Standard Command  sel delete abc
2440b76e421SGeorge Keishing    Should Contain  ${sel_delete}  Given SEL ID 'abc' is invalid
2450b76e421SGeorge Keishing    ...  case_insensitive=True
2460b76e421SGeorge Keishing
2470b76e421SGeorge Keishing
2480b76e421SGeorge KeishingVerify IPMI SEL Event Entries
2490b76e421SGeorge Keishing    [Documentation]  Verify IPMI SEL's entries info.
2500b76e421SGeorge Keishing    [Tags]  Verify_IPMI_SEL_Event_Entries
2510b76e421SGeorge Keishing
2520b76e421SGeorge Keishing    # Generate error logs of random count.
2530b76e421SGeorge Keishing    ${count}=  Evaluate  random.randint(1, 5)  modules=random
2540b76e421SGeorge Keishing    Repeat Keyword  ${count}  Create Test Error Log
2550b76e421SGeorge Keishing
2560b76e421SGeorge Keishing    ${sel_entries_count}=  Get IPMI SEL Setting  Entries
2570b76e421SGeorge Keishing    Should Be Equal As Strings  ${sel_entries_count}  ${count}
2580b76e421SGeorge Keishing
2590b76e421SGeorge Keishing
2600b76e421SGeorge KeishingVerify IPMI SEL Event Last Add Time
2610b76e421SGeorge Keishing    [Documentation]  Verify IPMI SEL's last added timestamp.
2620b76e421SGeorge Keishing    [Tags]  Verify_IPMI_SEL_Event_Last_Add_Time
2630b76e421SGeorge Keishing
2640b76e421SGeorge Keishing    Create Test Error Log
2650b76e421SGeorge Keishing    ${sel_time}=  Run IPMI Standard Command  sel time get
2660b76e421SGeorge Keishing    ${sel_time}=  Convert Date  ${sel_time}
2670b76e421SGeorge Keishing    ...  date_format=%m/%d/%Y %H:%M:%S  exclude_millis=True
2680b76e421SGeorge Keishing
2690b76e421SGeorge Keishing    ${sel_last_add_time}=  Get IPMI SEL Setting  Last Add Time
2700b76e421SGeorge Keishing    ${sel_last_add_time}=  Convert Date  ${sel_last_add_time}
2710b76e421SGeorge Keishing    ...  date_format=%m/%d/%Y %H:%M:%S  exclude_millis=True
2720b76e421SGeorge Keishing
2730b76e421SGeorge Keishing    ${time_diff}=
2740b76e421SGeorge Keishing    ...  Subtract Date From Date  ${sel_last_add_time}  ${sel_time}
2750b76e421SGeorge Keishing
2760b76e421SGeorge Keishing    # Verify if the delay in current time check and last add SEL time
2770b76e421SGeorge Keishing    # is less or equals to 2 seconds.
2780b76e421SGeorge Keishing    Should Be True  ${time_diff} <= 2
2790b76e421SGeorge Keishing
2800b76e421SGeorge Keishing
281d35b5319SGeorge KeishingCreate Test Event Log And Delete
282d35b5319SGeorge Keishing    [Documentation]  Create an event log and delete it.
283d35b5319SGeorge Keishing    [Tags]  Create_Test_Event_Log_And_Delete
284d35b5319SGeorge Keishing
285d35b5319SGeorge Keishing    Create Test Error Log
286d35b5319SGeorge Keishing    Redfish Purge Event Log
287d35b5319SGeorge Keishing    Event Log Should Not Exist
288d35b5319SGeorge Keishing
289d35b5319SGeorge Keishing
290d35b5319SGeorge KeishingCreate Multiple Test Event Logs And Delete All
291d35b5319SGeorge Keishing    [Documentation]  Create multiple event logs and delete all.
292d35b5319SGeorge Keishing    [Tags]  Create_Multiple_Test_Event_Logs_And_Delete_All
293d35b5319SGeorge Keishing
294d35b5319SGeorge Keishing    Create Test Error Log
295d35b5319SGeorge Keishing    Create Test Error Log
296d35b5319SGeorge Keishing    Create Test Error Log
297d35b5319SGeorge Keishing    Redfish Purge Event Log
298d35b5319SGeorge Keishing    Event Log Should Not Exist
299d35b5319SGeorge Keishing
300d35b5319SGeorge Keishing
301ddbc88c7SGeorge Keishing# TODO: openbmc/openbmc-test-automation#1789
302ddbc88c7SGeorge KeishingCreate Two Test Event Logs And Delete One
303ddbc88c7SGeorge Keishing    [Documentation]  Create two event logs and delete the first entry.
304ddbc88c7SGeorge Keishing    [Tags]  Create_Two_Test_Eevent_Logs_And_Delete_One
305ddbc88c7SGeorge Keishing
306ddbc88c7SGeorge Keishing    Redfish Purge Event Log
307ddbc88c7SGeorge Keishing    Create Test Error Log
308ddbc88c7SGeorge Keishing    ${elog_entry}=  Get URL List  ${BMC_LOGGING_ENTRY}
309ddbc88c7SGeorge Keishing    Create Test Error Log
310ddbc88c7SGeorge Keishing    Delete Error log Entry  ${elog_entry[0]}
311ddbc88c7SGeorge Keishing    ${resp}=  OpenBMC Get Request  ${elog_entry[0]}
312ddbc88c7SGeorge Keishing    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_NOT_FOUND}
313ddbc88c7SGeorge Keishing
314ddbc88c7SGeorge Keishing
315d35b5319SGeorge KeishingVerify Watchdog Timedout Event
316d35b5319SGeorge Keishing    [Documentation]  Trigger watchdog timed out and verify event log generated.
317d35b5319SGeorge Keishing    [Tags]  Verify_Watchdog_Timedout_Event
318d35b5319SGeorge Keishing
319d35b5319SGeorge Keishing    Redfish Power On
320d35b5319SGeorge Keishing
321d35b5319SGeorge Keishing    # Clear errors if there are any.
322d35b5319SGeorge Keishing    Redfish.Login
323d35b5319SGeorge Keishing    Redfish Purge Event Log
324d35b5319SGeorge Keishing
325d35b5319SGeorge Keishing    Trigger Host Watchdog Error
326d35b5319SGeorge Keishing
327d35b5319SGeorge Keishing    # Logging takes time to generate the timeout error.
328d35b5319SGeorge Keishing    Wait Until Keyword Succeeds  2 min  30 sec
329d35b5319SGeorge Keishing    ...  Verify Watchdog EventLog Content
330d35b5319SGeorge Keishing
331d35b5319SGeorge Keishing    Redfish Power Off
332d35b5319SGeorge Keishing
333d35b5319SGeorge Keishing
334d35b5319SGeorge KeishingVerify Event Logs Capping
335d35b5319SGeorge Keishing    [Documentation]  Verify event logs capping.
336d35b5319SGeorge Keishing    [Tags]  Verify_Event_Logs_Capping
337d35b5319SGeorge Keishing
338d35b5319SGeorge Keishing    Redfish Purge Event Log
339d35b5319SGeorge Keishing
340d35b5319SGeorge Keishing    ${cmd}=  Catenate  for i in {1..201}; do /tmp/tarball/bin/logging-test -c
341d2d2bd2bSGeorge Keishing    ...  AutoTestSimple;sleep 1;done
342d35b5319SGeorge Keishing    BMC Execute Command  ${cmd}
343d35b5319SGeorge Keishing
344d35b5319SGeorge Keishing    ${elogs}=  Get Event Logs
345d35b5319SGeorge Keishing    ${count}=  Get Length  ${elogs}
346d35b5319SGeorge Keishing    Run Keyword If  ${count} > 200
347d35b5319SGeorge Keishing    ...  Fail  Error logs created exceeded max capacity 200.
348d35b5319SGeorge Keishing
349d35b5319SGeorge Keishing
350759c6f97SGeorge KeishingTest Event Log Wrapping
351759c6f97SGeorge Keishing    [Documentation]  Verify event log entries wraps when 200 max cap is reached.
352759c6f97SGeorge Keishing    [Tags]  Test_Event_Log_Wrapping
353759c6f97SGeorge Keishing
354759c6f97SGeorge Keishing    # Restarting logging service in order to clear logs and get the next log
355759c6f97SGeorge Keishing    # ID set to 1.
356759c6f97SGeorge Keishing    BMC Execute Command
357759c6f97SGeorge Keishing    ...  systemctl restart xyz.openbmc_project.Logging.service
358759c6f97SGeorge Keishing    Sleep  10s  reason=Wait for logging service to restart properly.
359759c6f97SGeorge Keishing
360759c6f97SGeorge Keishing    # Create ${max_num_event_logs} event logs.
361759c6f97SGeorge Keishing    ${cmd}=  Catenate  for i in {1..${max_num_event_logs}}; do /tmp/tarball/bin/logging-test -c
362d2d2bd2bSGeorge Keishing    ...  AutoTestSimple;sleep 1;done
363759c6f97SGeorge Keishing    BMC Execute Command  ${cmd}
364759c6f97SGeorge Keishing
365759c6f97SGeorge Keishing    # Verify that event logs with IDs 1 and ${max_num_event_logs} exist.
366759c6f97SGeorge Keishing    ${event_log}=  Get Event Logs
367759c6f97SGeorge Keishing
368759c6f97SGeorge Keishing    ${log_entries}=  Filter Struct  ${event_log}  [('Id', '1')]
369*39c00518SMichael Walsh    Rprint Vars  log_entries
370759c6f97SGeorge Keishing    Should Be Equal As Strings  ${log_entries[0]["Id"]}  1
371759c6f97SGeorge Keishing
372759c6f97SGeorge Keishing    ${log_entries}=  Filter Struct  ${event_log}  [('Id', '${max_num_event_logs}')]
373*39c00518SMichael Walsh    Rprint Vars  log_entries
374759c6f97SGeorge Keishing    Should Be Equal As Strings  ${log_entries[0]["Id"]}  ${max_num_event_logs}
375759c6f97SGeorge Keishing
376759c6f97SGeorge Keishing    # Create event log and verify the entry ID, ${max_num_event_logs + 1}.
377759c6f97SGeorge Keishing    ${next_event_log_id}=  Set Variable  ${max_num_event_logs + 1}
378759c6f97SGeorge Keishing
379759c6f97SGeorge Keishing    Create Test Error Log
380759c6f97SGeorge Keishing
381759c6f97SGeorge Keishing    ${event_log}=  Get Event Logs
382759c6f97SGeorge Keishing
383759c6f97SGeorge Keishing    ${log_entries}=  Filter Struct  ${event_log}  [('Id', '${next_event_log_id}')]
384*39c00518SMichael Walsh    Rprint Vars  log_entries
385759c6f97SGeorge Keishing    Should Be Equal As Strings  ${log_entries[0]["Id"]}  ${next_event_log_id}
386759c6f97SGeorge Keishing
387759c6f97SGeorge Keishing    # Event log 1 should be wrapped.
388759c6f97SGeorge Keishing    ${log_entries}=  Filter Struct  ${event_log}  [('Id', '1')]
389*39c00518SMichael Walsh    Rprint Vars  log_entries
390759c6f97SGeorge Keishing
391759c6f97SGeorge Keishing    ${length_log_entries}  Get Length  ${log_entries}
392759c6f97SGeorge Keishing    Should Be Equal As Integers  ${length_log_entries}  0
393759c6f97SGeorge Keishing    ...  msg=The event log should have wrapped such that entry ID 1 is now purged.
394759c6f97SGeorge Keishing
395759c6f97SGeorge Keishing
3968cca7fb8SGeorge Keishing*** Keywords ***
3978cca7fb8SGeorge Keishing
3988cca7fb8SGeorge KeishingSuite Teardown Execution
3998cca7fb8SGeorge Keishing    [Documentation]  Do the post suite teardown.
4008cca7fb8SGeorge Keishing
4018cca7fb8SGeorge Keishing    Redfish.Logout
4028cca7fb8SGeorge Keishing
4038cca7fb8SGeorge Keishing
404b0a491f2SGeorge KeishingTest Setup Execution
4058cca7fb8SGeorge Keishing   [Documentation]  Do test case setup tasks.
4068cca7fb8SGeorge Keishing
4078cca7fb8SGeorge Keishing    Redfish.Login
4088cca7fb8SGeorge Keishing
4090b76e421SGeorge Keishing    Redfish Purge Event Log
4100b76e421SGeorge Keishing
4118cca7fb8SGeorge Keishing    ${status}=  Run Keyword And Return Status  Logging Test Binary Exist
4128cca7fb8SGeorge Keishing    Run Keyword If  ${status} == ${False}  Install Tarball
4138cca7fb8SGeorge Keishing
4148cca7fb8SGeorge Keishing
4158cca7fb8SGeorge KeishingTest Teardown Execution
4168cca7fb8SGeorge Keishing    [Documentation]  Do the post test teardown.
4178cca7fb8SGeorge Keishing
4188cca7fb8SGeorge Keishing    FFDC On Test Case Fail
419e5c5ebdfSGeorge Keishing    Redfish.Login
420b0a491f2SGeorge Keishing    Redfish Purge Event Log
4218cca7fb8SGeorge Keishing
4228cca7fb8SGeorge Keishing
4238cca7fb8SGeorge KeishingEvent Log Should Not Exist
4248cca7fb8SGeorge Keishing    [Documentation]  Event log entries should not exist.
4258cca7fb8SGeorge Keishing
4268cca7fb8SGeorge Keishing    ${elogs}=  Get Event Logs
4278cca7fb8SGeorge Keishing    Should Be Empty  ${elogs}  msg=System event log entry is not empty.
428b0a491f2SGeorge Keishing
429b0a491f2SGeorge Keishing
430b0a491f2SGeorge KeishingEvent Log Should Exist
431b0a491f2SGeorge Keishing    [Documentation]  Event log entries should exist.
432b0a491f2SGeorge Keishing
433b0a491f2SGeorge Keishing    ${elogs}=  Get Event Logs
434b0a491f2SGeorge Keishing    Should Not Be Empty  ${elogs}  msg=System event log entry is not empty.
435d35b5319SGeorge Keishing
436d35b5319SGeorge Keishing
437d35b5319SGeorge KeishingVerify Watchdog EventLog Content
438d35b5319SGeorge Keishing    [Documentation]  Verify watchdog event log content.
439d35b5319SGeorge Keishing
440d35b5319SGeorge Keishing    # Example:
441d35b5319SGeorge Keishing    # {
442d35b5319SGeorge Keishing    #    "@odata.context": "/redfish/v1/$metadata#LogEntry.LogEntry",
443d35b5319SGeorge Keishing    #    "@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog/Entries/31",
444d35b5319SGeorge Keishing    #    "@odata.type": "#LogEntry.v1_4_0.LogEntry",
445d35b5319SGeorge Keishing    #    "Created": "2019-05-31T18:41:33+00:00",
446d35b5319SGeorge Keishing    #    "EntryType": "Event",
447d35b5319SGeorge Keishing    #    "Id": "31",
448d35b5319SGeorge Keishing    #    "Message": "org.open_power.Host.Boot.Error.WatchdogTimedOut",
449d35b5319SGeorge Keishing    #    "Name": "System DBus Event Log Entry",
450d35b5319SGeorge Keishing    #    "Severity": "Critical"
451d35b5319SGeorge Keishing    # }
452d35b5319SGeorge Keishing
453d35b5319SGeorge Keishing    ${elog}=  Get Event Logs
454d35b5319SGeorge Keishing    Should Be Equal As Strings
455d35b5319SGeorge Keishing    ...  ${elog[0]["Message"]}  org.open_power.Host.Boot.Error.WatchdogTimedOut
456d35b5319SGeorge Keishing    ...  msg=Watchdog timeout event log was not found.
457d35b5319SGeorge Keishing    Should Be Equal As Strings
458d35b5319SGeorge Keishing    ...  ${elog[0]["Severity"]}  Critical
459d35b5319SGeorge Keishing    ...  msg=Watchdog timeout severity unexpected value.
460