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