blob: c07d496e9d697565179ede12302bd226af2a9a87 [file] [log] [blame]
George Keishing8cca7fb2019-05-30 04:23:50 -05001*** Settings ***
2Documentation Inventory of hardware resources under systems.
3
4Resource ../../../lib/bmc_redfish_resource.robot
5Resource ../../../lib/bmc_redfish_utils.robot
6Resource ../../../lib/logging_utils.robot
7Resource ../../../lib/openbmc_ffdc.robot
George Keishing8fe60242019-06-03 23:06:12 -05008Resource ../../../lib/ipmi_client.robot
George Keishing759c6f92019-06-03 12:14:42 -05009Library ../../../lib/logging_utils.py
George Keishing8cca7fb2019-05-30 04:23:50 -050010
George Keishingb0a491f2019-05-31 02:49:22 -050011Test Setup Test Setup Execution
George Keishing8cca7fb2019-05-30 04:23:50 -050012Test Teardown Test Teardown Execution
George Keishingb0a491f2019-05-31 02:49:22 -050013Suite Teardown Suite Teardown Execution
George Keishing8cca7fb2019-05-30 04:23:50 -050014
George Keishing759c6f92019-06-03 12:14:42 -050015** Variables ***
16
17${max_num_event_logs} ${200}
18
George Keishing8cca7fb2019-05-30 04:23:50 -050019*** Test Cases ***
20
21Event Log Check After BMC Reboot
22 [Documentation] Check event log after BMC rebooted.
23 [Tags] Event_Log_Check_After_BMC_Reboot
24
25 Redfish Purge Event Log
26 Event Log Should Not Exist
27
28 Redfish OBMC Reboot (off)
29
30 Redfish.Login
31 Wait Until Keyword Succeeds 1 mins 15 secs Redfish.Get ${EVENT_LOG_URI}Entries
32
33 Event Log Should Not Exist
34
35
George Keishingb0a491f2019-05-31 02:49:22 -050036Event Log Check After Host Poweron
37 [Documentation] Check event log after host has booted.
38 [Tags] Event_Log_Check_After_Host_Poweron
39
40 Redfish Purge Event Log
41 Event Log Should Not Exist
42
43 Redfish Power On
44
45 Redfish.Login
46 Event Log Should Not Exist
47
48
49Create Test Event Log And Verify
50 [Documentation] Create event logs and verify via redfish.
51 [Tags] Create_Test_Event_Log_And_Verify
52
53 Create Test Error Log
54 Event Log Should Exist
55
56
57Test Event Log Persistency On Restart
58 [Documentation] Restart logging service and verify event logs.
59 [Tags] Test_Event_Log_Persistency_On_Restart
60
61 Create Test Error Log
62 Event Log Should Exist
63
64 BMC Execute Command
65 ... systemctl restart xyz.openbmc_project.Logging.service
66 Sleep 10s reason=Wait for logging service to restart properly.
67
68 Event Log Should Exist
69
70
71Test Event Entry Numbering Reset On Restart
72 [Documentation] Restart logging service and verify event logs entry starts
73 ... from entry "Id" 1.
74 [Tags] Test_Event_Entry_Numbering_Reset_On_Restart
75
76 #{
77 # "@odata.context": "/redfish/v1/$metadata#LogEntryCollection.LogEntryCollection",
78 # "@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog/Entries",
79 # "@odata.type": "#LogEntryCollection.LogEntryCollection",
80 # "Description": "Collection of System Event Log Entries",
81 # "Members": [
82 # {
83 # "@odata.context": "/redfish/v1/$metadata#LogEntry.LogEntry",
84 # "@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog/Entries/1",
85 # "@odata.type": "#LogEntry.v1_4_0.LogEntry",
86 # "Created": "2019-05-29T13:19:27+00:00",
87 # "EntryType": "Event",
88 # "Id": "1", <----- Event log ID
89 # "Message": "org.open_power.Host.Error.Event",
90 # "Name": "System DBus Event Log Entry",
91 # "Severity": "Critical"
92 # }
93 # ],
94 # "Members@odata.count": 1,
95 # "Name": "System Event Log Entries"
96 #}
97
98 Create Test Error Log
99 Create Test Error Log
100 Event Log Should Exist
101
102 Redfish Purge Event Log
103 Event Log Should Not Exist
104
105 BMC Execute Command
106 ... systemctl restart xyz.openbmc_project.Logging.service
107 Sleep 10s reason=Wait for logging service to restart properly.
108
109 Create Test Error Log
110 ${elogs}= Get Event Logs
111 Should Be Equal ${elogs[0]["Id"]} 1 msg=Event log entry is not 1.
112
113
114Test Event Log Persistency On Reboot
115 [Documentation] Reboot BMC and verify event log.
116 [Tags] Test_Event_Log_Persistency_On_Reboot
117
118 Redfish Purge Event Log
119 Create Test Error Log
120 Event Log Should Exist
121
122 Redfish OBMC Reboot (off)
123
124 Redfish.Login
125 Wait Until Keyword Succeeds 1 mins 15 secs Redfish.Get ${EVENT_LOG_URI}Entries
126
127 Event Log Should Exist
128
129
George Keishingddbc88c2019-06-06 07:29:41 -0500130# TODO: openbmc/openbmc-test-automation#1789
131Create Test Event Log And Verify Resolved Field
132 [Documentation] Create event log and verify "Resolved" field is 0.
133 [Tags] Create_Test_Event_Log_And_Verify_Resolved_Field
134
135 # Example Error log:
136 # "/xyz/openbmc_project/logging/entry/1": {
137 # "AdditionalData": [
138 # "STRING=FOO"
139 # ],
140 # "Id": 1,
141 # "Message": "example.xyz.openbmc_project.Example.Elog.AutoTestSimple",
142 # "Resolved": 0,
143 # "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error",
144 # "Timestamp": 1490817164983,
145 # "associations": []
146 # },
147
148 # To mark an error as resolved, without deleting the error, user would
149 # set this bool property.
150 # In this test context we are making sure "Resolved" field is "0"
151 # by default.
152
153 Redfish Purge Event Log
154 Create Test Error Log
155 ${elog_entry}= Get URL List ${BMC_LOGGING_ENTRY}
156 ${resolved}= Read Attribute ${elog_entry[0]} Resolved
157 Should Be True ${resolved} == 0
158
159
George Keishing148d08c2019-05-31 12:39:04 -0500160Create Test Event Log And Verify Time Stamp
161 [Documentation] Create event logs and verify time stamp.
162 [Tags] Create_Test_Event_Log_And_Verify_Time_Stamp
163
164 #{
165 # "@odata.context": "/redfish/v1/$metadata#LogEntryCollection.LogEntryCollection",
166 # "@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog/Entries",
167 # "@odata.type": "#LogEntryCollection.LogEntryCollection",
168 # "Description": "Collection of System Event Log Entries",
169 # "Members": [
170 # {
171 # "@odata.context": "/redfish/v1/$metadata#LogEntry.LogEntry",
172 # "@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog/Entries/1",
173 # "@odata.type": "#LogEntry.v1_4_0.LogEntry",
174 # "Created": "2019-05-29T13:19:27+00:00", <--- Time stamp
175 # "EntryType": "Event",
176 # "Id": "1",
177 # "Message": "org.open_power.Host.Error.Event",
178 # "Name": "System DBus Event Log Entry",
179 # "Severity": "Critical"
180 # }
181 # ],
182 # "Members@odata.count": 1,
183 # "Name": "System Event Log Entries"
184 #}
185
186 Redfish Purge Event Log
187
188 Create Test Error Log
189 Sleep 2s
190 Create Test Error Log
191
192 ${elog_entry}= Get Event Logs
193
194 # The event log generated is associated with the epoc time and unique
195 # for every error and in increasing time stamp.
196 ${time_stamp1}= Convert Date ${elog_entry[0]["Created"]} epoch
197 ${time_stamp2}= Convert Date ${elog_entry[1]["Created"]} epoch
198
199 Should Be True ${time_stamp2} > ${time_stamp1}
200
201
George Keishingddbc88c2019-06-06 07:29:41 -0500202Verify IPMI SEL Delete
203 [Documentation] Verify IPMI SEL delete operation.
204 [Tags] Verify_IPMI_SEL_Delete
205
206 Redfish Purge Event Log
207 Create Test Error Log
208
209 ${sel_list}= Run IPMI Standard Command sel list
210 Should Not Be Equal As Strings ${sel_list} SEL has no entries
211
212 # Example of SEL List:
213 # 4 | 04/21/2017 | 10:51:16 | System Event #0x01 | Undetermined system hardware failure | Asserted
214
215 ${sel_entry}= Fetch from Left ${sel_list} |
216 ${sel_entry}= Evaluate $sel_entry.replace(' ','')
217 ${sel_entry}= Convert To Integer 0x${sel_entry}
218
219 ${sel_delete}= Run IPMI Standard Command sel delete ${sel_entry}
220 Should Be Equal As Strings ${sel_delete} Deleted entry ${sel_entry}
221 ... case_insensitive=True
222
223 ${sel_list}= Run IPMI Standard Command sel list
224 Should Be Equal As Strings ${sel_list} SEL has no entries
225 ... case_insensitive=True
226
227
George Keishing0b76e422019-06-03 01:58:52 -0500228Delete Non Existing SEL Event Entry
229 [Documentation] Delete non existing SEL event entry.
230 [Tags] Delete_Non_Existing_SEL_Event_Entry
231
232 ${sel_delete}= Run Keyword And Expect Error *
233 ... Run IPMI Standard Command sel delete 100
234 Should Contain ${sel_delete} Unable to delete entry
235 ... case_insensitive=True
236
237
238Delete Invalid SEL Event Entry
239 [Documentation] Delete invalid SEL event entry.
240 [Tags] Delete_Invalid_SEL_Event_Entry
241
242 ${sel_delete}= Run Keyword And Expect Error *
243 ... Run IPMI Standard Command sel delete abc
244 Should Contain ${sel_delete} Given SEL ID 'abc' is invalid
245 ... case_insensitive=True
246
247
248Verify IPMI SEL Event Entries
249 [Documentation] Verify IPMI SEL's entries info.
250 [Tags] Verify_IPMI_SEL_Event_Entries
251
252 # Generate error logs of random count.
253 ${count}= Evaluate random.randint(1, 5) modules=random
254 Repeat Keyword ${count} Create Test Error Log
255
256 ${sel_entries_count}= Get IPMI SEL Setting Entries
257 Should Be Equal As Strings ${sel_entries_count} ${count}
258
259
260Verify IPMI SEL Event Last Add Time
261 [Documentation] Verify IPMI SEL's last added timestamp.
262 [Tags] Verify_IPMI_SEL_Event_Last_Add_Time
263
264 Create Test Error Log
265 ${sel_time}= Run IPMI Standard Command sel time get
266 ${sel_time}= Convert Date ${sel_time}
267 ... date_format=%m/%d/%Y %H:%M:%S exclude_millis=True
268
269 ${sel_last_add_time}= Get IPMI SEL Setting Last Add Time
270 ${sel_last_add_time}= Convert Date ${sel_last_add_time}
271 ... date_format=%m/%d/%Y %H:%M:%S exclude_millis=True
272
273 ${time_diff}=
274 ... Subtract Date From Date ${sel_last_add_time} ${sel_time}
275
276 # Verify if the delay in current time check and last add SEL time
277 # is less or equals to 2 seconds.
278 Should Be True ${time_diff} <= 2
279
280
George Keishingd35b5312019-05-31 14:29:07 -0500281Create Test Event Log And Delete
282 [Documentation] Create an event log and delete it.
283 [Tags] Create_Test_Event_Log_And_Delete
284
285 Create Test Error Log
286 Redfish Purge Event Log
287 Event Log Should Not Exist
288
289
290Create Multiple Test Event Logs And Delete All
291 [Documentation] Create multiple event logs and delete all.
292 [Tags] Create_Multiple_Test_Event_Logs_And_Delete_All
293
294 Create Test Error Log
295 Create Test Error Log
296 Create Test Error Log
297 Redfish Purge Event Log
298 Event Log Should Not Exist
299
300
George Keishingddbc88c2019-06-06 07:29:41 -0500301# TODO: openbmc/openbmc-test-automation#1789
302Create Two Test Event Logs And Delete One
303 [Documentation] Create two event logs and delete the first entry.
304 [Tags] Create_Two_Test_Eevent_Logs_And_Delete_One
305
306 Redfish Purge Event Log
307 Create Test Error Log
308 ${elog_entry}= Get URL List ${BMC_LOGGING_ENTRY}
309 Create Test Error Log
310 Delete Error log Entry ${elog_entry[0]}
311 ${resp}= OpenBMC Get Request ${elog_entry[0]}
312 Should Be Equal As Strings ${resp.status_code} ${HTTP_NOT_FOUND}
313
314
George Keishingd35b5312019-05-31 14:29:07 -0500315Verify Watchdog Timedout Event
316 [Documentation] Trigger watchdog timed out and verify event log generated.
317 [Tags] Verify_Watchdog_Timedout_Event
318
319 Redfish Power On
320
321 # Clear errors if there are any.
322 Redfish.Login
323 Redfish Purge Event Log
324
325 Trigger Host Watchdog Error
326
327 # Logging takes time to generate the timeout error.
328 Wait Until Keyword Succeeds 2 min 30 sec
329 ... Verify Watchdog EventLog Content
330
331 Redfish Power Off
332
333
334Verify Event Logs Capping
335 [Documentation] Verify event logs capping.
336 [Tags] Verify_Event_Logs_Capping
337
338 Redfish Purge Event Log
339
340 ${cmd}= Catenate for i in {1..201}; do /tmp/tarball/bin/logging-test -c
341 ... AutoTestSimple; done
342 BMC Execute Command ${cmd}
343
344 ${elogs}= Get Event Logs
345 ${count}= Get Length ${elogs}
346 Run Keyword If ${count} > 200
347 ... Fail Error logs created exceeded max capacity 200.
348
349
George Keishing759c6f92019-06-03 12:14:42 -0500350Test Event Log Wrapping
351 [Documentation] Verify event log entries wraps when 200 max cap is reached.
352 [Tags] Test_Event_Log_Wrapping
353
354 # Restarting logging service in order to clear logs and get the next log
355 # ID set to 1.
356 BMC Execute Command
357 ... systemctl restart xyz.openbmc_project.Logging.service
358 Sleep 10s reason=Wait for logging service to restart properly.
359
360 # Create ${max_num_event_logs} event logs.
361 ${cmd}= Catenate for i in {1..${max_num_event_logs}}; do /tmp/tarball/bin/logging-test -c
362 ... AutoTestSimple;done
363 BMC Execute Command ${cmd}
364
365 # Verify that event logs with IDs 1 and ${max_num_event_logs} exist.
366 ${event_log}= Get Event Logs
367
368 ${log_entries}= Filter Struct ${event_log} [('Id', '1')]
369 Rprint Vars log_entries fmt=terse
370 Should Be Equal As Strings ${log_entries[0]["Id"]} 1
371
372 ${log_entries}= Filter Struct ${event_log} [('Id', '${max_num_event_logs}')]
373 Rprint Vars log_entries fmt=terse
374 Should Be Equal As Strings ${log_entries[0]["Id"]} ${max_num_event_logs}
375
376 # Create event log and verify the entry ID, ${max_num_event_logs + 1}.
377 ${next_event_log_id}= Set Variable ${max_num_event_logs + 1}
378
379 Create Test Error Log
380
381 ${event_log}= Get Event Logs
382
383 ${log_entries}= Filter Struct ${event_log} [('Id', '${next_event_log_id}')]
384 Rprint Vars log_entries fmt=terse
385 Should Be Equal As Strings ${log_entries[0]["Id"]} ${next_event_log_id}
386
387 # Event log 1 should be wrapped.
388 ${log_entries}= Filter Struct ${event_log} [('Id', '1')]
389 Rprint Vars log_entries fmt=terse
390
391 ${length_log_entries} Get Length ${log_entries}
392 Should Be Equal As Integers ${length_log_entries} 0
393 ... msg=The event log should have wrapped such that entry ID 1 is now purged.
394
395
George Keishing8cca7fb2019-05-30 04:23:50 -0500396*** Keywords ***
397
398Suite Teardown Execution
399 [Documentation] Do the post suite teardown.
400
401 Redfish.Logout
402
403
George Keishingb0a491f2019-05-31 02:49:22 -0500404Test Setup Execution
405 [Documentation] Do test case setup tasks.
George Keishing8cca7fb2019-05-30 04:23:50 -0500406
407 Redfish.Login
408
George Keishing0b76e422019-06-03 01:58:52 -0500409 Redfish Purge Event Log
410
George Keishing8cca7fb2019-05-30 04:23:50 -0500411 ${status}= Run Keyword And Return Status Logging Test Binary Exist
412 Run Keyword If ${status} == ${False} Install Tarball
413
414
415Test Teardown Execution
416 [Documentation] Do the post test teardown.
417
418 FFDC On Test Case Fail
George Keishinge5c5ebd2019-06-04 13:52:12 -0500419 Redfish.Login
George Keishingb0a491f2019-05-31 02:49:22 -0500420 Redfish Purge Event Log
George Keishing8cca7fb2019-05-30 04:23:50 -0500421
422
423Event Log Should Not Exist
424 [Documentation] Event log entries should not exist.
425
426 ${elogs}= Get Event Logs
427 Should Be Empty ${elogs} msg=System event log entry is not empty.
George Keishingb0a491f2019-05-31 02:49:22 -0500428
429
430Event Log Should Exist
431 [Documentation] Event log entries should exist.
432
433 ${elogs}= Get Event Logs
434 Should Not Be Empty ${elogs} msg=System event log entry is not empty.
George Keishingd35b5312019-05-31 14:29:07 -0500435
436
437Verify Watchdog EventLog Content
438 [Documentation] Verify watchdog event log content.
439
440 # Example:
441 # {
442 # "@odata.context": "/redfish/v1/$metadata#LogEntry.LogEntry",
443 # "@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog/Entries/31",
444 # "@odata.type": "#LogEntry.v1_4_0.LogEntry",
445 # "Created": "2019-05-31T18:41:33+00:00",
446 # "EntryType": "Event",
447 # "Id": "31",
448 # "Message": "org.open_power.Host.Boot.Error.WatchdogTimedOut",
449 # "Name": "System DBus Event Log Entry",
450 # "Severity": "Critical"
451 # }
452
453 ${elog}= Get Event Logs
454 Should Be Equal As Strings
455 ... ${elog[0]["Message"]} org.open_power.Host.Boot.Error.WatchdogTimedOut
456 ... msg=Watchdog timeout event log was not found.
457 Should Be Equal As Strings
458 ... ${elog[0]["Severity"]} Critical
459 ... msg=Watchdog timeout severity unexpected value.