blob: 70133042a09717cf80fdfe607118916a7a79c242 [file] [log] [blame]
Michael Tritz935c18e2017-03-08 11:45:41 -06001*** Settings ***
2Documentation Test Error logging.
3
4Resource ../lib/connection_client.robot
5Resource ../lib/openbmc_ffdc.robot
6Resource ../lib/utils.robot
7Resource ../lib/state_manager.robot
Rahul Maheshwari92972e72017-06-22 00:59:59 -05008Resource ../lib/ipmi_client.robot
George Keishing1d82dd12017-07-24 01:16:23 -05009Resource ../lib/boot_utils.robot
Sivas SRRcf6714f2018-03-26 10:51:29 -050010Resource ../lib/logging_utils.robot
Michael Tritz935c18e2017-03-08 11:45:41 -060011
George Keishing95c371a2017-09-14 15:42:33 -050012Test Setup Test Setup Execution
George Keishingfa2fc162018-01-08 07:41:13 -060013Test Teardown Test Teardown Execution
George Keishing184a89a2017-06-27 07:12:16 -050014Suite Teardown Delete Error Logs And Verify
Michael Tritz935c18e2017-03-08 11:45:41 -060015
George Keishing1d82dd12017-07-24 01:16:23 -050016*** Variables ***
17
18${stack_mode} skip
19
Michael Tritz935c18e2017-03-08 11:45:41 -060020*** Test Cases ***
21
George Keishing1d82dd12017-07-24 01:16:23 -050022Error Log Check After BMC Reboot
23 [Documentation] Check error log after BMC rebooted.
24 [Tags] Error_Log_Check_At_BMC_Ready
25 # 1. Power off.
26 # 2. Delete error logs.
27 # 3. Reboot BMC.
Gunnar Mills917ba1a2018-04-08 16:42:12 -050028 # 4. Check if error log exists.
George Keishing1d82dd12017-07-24 01:16:23 -050029
George Keishing3f4a3eb2017-09-26 10:33:16 -050030 Smart Power Off
George Keishing1d82dd12017-07-24 01:16:23 -050031 Delete Error Logs And Verify
George Keishing3f4a3eb2017-09-26 10:33:16 -050032 OBMC Reboot (off) stack_mode=normal
George Keishing1d82dd12017-07-24 01:16:23 -050033 Error Logs Should Not Exist
34
35
36Error Log Check After Host Poweron
37 [Documentation] Check error log after host has booted.
38 [Tags] Error_Log_Check_At_Host_Booted
39 # 1. Delete error logs
40 # 1. Power on.
Gunnar Mills917ba1a2018-04-08 16:42:12 -050041 # 3. Check if error log exists.
George Keishing1d82dd12017-07-24 01:16:23 -050042
43 Delete Error Logs And Verify
44 REST Power On
45 Error Logs Should Not Exist
46
47
Michael Tritz935c18e2017-03-08 11:45:41 -060048Create Test Error And Verify
49 [Documentation] Create error logs and verify via REST.
50 [Tags] Create_Test_Error_And_Verify
51
52 Create Test Error Log
53 Verify Test Error Log
54
55
56Test Error Persistency On Restart
George Keishing184a89a2017-06-27 07:12:16 -050057 [Documentation] Restart logging service and verify error logs.
Michael Tritz935c18e2017-03-08 11:45:41 -060058 [Tags] Test_Error_Persistency_On_Restart
59
60 Create Test Error Log
61 Verify Test Error Log
Joy Onyerikwu2ef965a2018-05-24 15:23:27 -050062 BMC Execute Command
Michael Tritz935c18e2017-03-08 11:45:41 -060063 ... systemctl restart xyz.openbmc_project.Logging.service
64 Sleep 10s reason=Wait for logging service to restart properly.
George Keishing184a89a2017-06-27 07:12:16 -050065 Verify Test Error Log
Michael Tritz935c18e2017-03-08 11:45:41 -060066
67
George Keishing742b0602017-07-28 14:20:53 -050068Test Error Entry Numbering Reset On Restart
69 [Documentation] Restarts logging service and verify error logs entry start
70 ... from entry "Id" 1.
71 # 1. Create error log.
72 # 2. Verify error log.
73 # 3. Delete error log.
74 # 4. Restart logging service.
75 # 5. Create error log.
76 # 6. Verify new error log entry starts with Id entry 1.
77
78 [Tags] Test_Error_Entry_Numbering_Reset_On_Restart
79 # Example Error logs:
80 # "/xyz/openbmc_project/logging/entry/1": {
81 # "AdditionalData": [
82 # "STRING=FOO"
83 # ],
84 # "Id": 1, <--- Entry value should be 1.
85 # "Message": "example.xyz.openbmc_project.Example.Elog.AutoTestSimple",
86 # "Resolved": 0,
87 # "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error",
88 # "Timestamp": 1490818990051,
89 # "associations": []
90 # },
91
92 Create Test Error Log
93 Verify Test Error Log
George Keishingcc71c3c2017-09-20 09:38:03 -050094 Delete All Error Logs
Joy Onyerikwu2ef965a2018-05-24 15:23:27 -050095 BMC Execute Command
George Keishing742b0602017-07-28 14:20:53 -050096 ... systemctl restart xyz.openbmc_project.Logging.service
97 Sleep 10s reason=Wait for logging service to restart properly.
98 Create Test Error Log
99 ${elog_entry}= Get URL List ${BMC_LOGGING_ENTRY}
100 ${entry_id}= Read Attribute ${elog_entry[0]} Id
101 Should Be Equal ${entry_id} ${1}
102
103
Michael Tritz935c18e2017-03-08 11:45:41 -0600104Test Error Persistency On Reboot
George Keishing184a89a2017-06-27 07:12:16 -0500105 [Documentation] Reboot BMC and verify error logs.
Michael Tritz935c18e2017-03-08 11:45:41 -0600106 [Tags] Test_Error_Persistency_On_Reboot
107
108 Create Test Error Log
109 Verify Test Error Log
110 Initiate BMC Reboot
111 Wait Until Keyword Succeeds 10 min 10 sec
112 ... Is BMC Ready
George Keishing184a89a2017-06-27 07:12:16 -0500113 Verify Test Error Log
Michael Tritz935c18e2017-03-08 11:45:41 -0600114
115
George Keishing04bc4812017-03-30 03:33:31 -0500116Create Test Error And Verify Resolved Field
117 [Documentation] Create error log and verify "Resolved"
118 ... field is 0.
119 [Tags] Create_Test_Error_And_Verify_Resolved_Field
120
121 # Example Error log:
122 # "/xyz/openbmc_project/logging/entry/1": {
123 # "AdditionalData": [
124 # "STRING=FOO"
125 # ],
126 # "Id": 1,
127 # "Message": "example.xyz.openbmc_project.Example.Elog.AutoTestSimple",
128 # "Resolved": 0,
129 # "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error",
130 # "Timestamp": 1490817164983,
131 # "associations": []
132 # },
133
134 # It's work in progress, but it's mnfg need. To mark an error as
135 # resolved, without deleting the error, mfg will set this bool
136 # property.
137 # In this test context we are making sure "Resolved" field is "0"
138 # by default.
139
George Keishingcc71c3c2017-09-20 09:38:03 -0500140 Delete All Error Logs
George Keishing04bc4812017-03-30 03:33:31 -0500141 Create Test Error Log
George Keishing184a89a2017-06-27 07:12:16 -0500142 ${elog_entry}= Get URL List ${BMC_LOGGING_ENTRY}
143 ${resolved}= Read Attribute ${elog_entry[0]} Resolved
George Keishing04bc4812017-03-30 03:33:31 -0500144 Should Be True ${resolved} == 0
145
146
147Create Test Errors And Verify Time Stamp
148 [Documentation] Create error logs and verify time stamp.
149 [Tags] Create_Test_Error_And_Verify_Time_Stamp
150
151 # Example Error logs:
152 # "/xyz/openbmc_project/logging/entry/1": {
153 # "AdditionalData": [
154 # "STRING=FOO"
155 # ],
156 # "Id": 1,
157 # "Message": "example.xyz.openbmc_project.Example.Elog.AutoTestSimple",
158 # "Resolved": 0,
159 # "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error",
160 # "Timestamp": 1490818990051, <--- Time stamp
161 # "associations": []
162 # },
163 # "/xyz/openbmc_project/logging/entry/2": {
164 # "AdditionalData": [
165 # "STRING=FOO"
166 # ],
167 # "Id": 2,
168 # "Message": "example.xyz.openbmc_project.Example.Elog.AutoTestSimple",
169 # "Resolved": 0,
170 # "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error",
171 # "Timestamp": 1490818992116, <---- Time stamp
172 # "associations": []
173 # },
174
George Keishingcc71c3c2017-09-20 09:38:03 -0500175 Delete All Error Logs
George Keishing04bc4812017-03-30 03:33:31 -0500176 Create Test Error Log
177 Create Test Error Log
178 # The error log generated is associated with the epoc time and unique
179 # for every error and in increasing time stamp.
George Keishing184a89a2017-06-27 07:12:16 -0500180 ${elog_entry}= Get URL List ${BMC_LOGGING_ENTRY}
181 ${time_stamp1}= Read Attribute ${elog_entry[0]} Timestamp
182 ${time_stamp2}= Read Attribute ${elog_entry[1]} Timestamp
George Keishing6eb10b82017-06-06 10:02:09 -0500183 Should Be True ${time_stamp2} > ${time_stamp1}
George Keishing04bc4812017-03-30 03:33:31 -0500184
Sweta Potthuri9ce8eeb2017-05-08 04:20:11 -0500185Create Test Error Log And Delete
186 [Documentation] Create an error log and delete it.
187 [Tags] Create_Test_Error_Log_And_Delete
188
189 Delete Error Logs And Verify
190 Create Test Error Log
191 Delete Error Logs And Verify
192
193Create Multiple Test Error Logs And Delete All
194 [Documentation] Create multiple error logs and delete all.
195 [Tags] Create_Multiple_Test_Error_Logs_And_Delete_All
196
197 Delete Error Logs And Verify
198 Create Test Error Log
199 Create Test Error Log
200 Create Test Error Log
201 Delete Error Logs And Verify
202
203Create Two Test Error Logs And Delete One
204 [Documentation] Create two error logs and delete the first entry.
205 [Tags] Create_Two_Test_Error_Logs_And_Delete_One
206
207 Delete Error Logs And Verify
208 Create Test Error Log
George Keishing184a89a2017-06-27 07:12:16 -0500209 ${elog_entry}= Get URL List ${BMC_LOGGING_ENTRY}
Sweta Potthuri9ce8eeb2017-05-08 04:20:11 -0500210 Create Test Error Log
George Keishing184a89a2017-06-27 07:12:16 -0500211 Delete Error log Entry ${elog_entry[0]}
212 ${resp}= OpenBMC Get Request ${elog_entry[0]}
Sweta Potthuri9ce8eeb2017-05-08 04:20:11 -0500213 Should Be Equal As Strings ${resp.status_code} ${HTTP_NOT_FOUND}
George Keishing04bc4812017-03-30 03:33:31 -0500214
Rahul Maheshwari92972e72017-06-22 00:59:59 -0500215
George Keishing845d9dc2017-06-16 14:49:29 -0500216Verify Watchdog Timedout Error
217 [Documentation] Trigger watchdog timed out and verify errorlog generated.
218 [Tags] Verify_Watchdog_Timedout_Error
219
George Keishingd397e6a2017-08-11 11:19:24 -0500220 REST Power Off
221 REST Power On
222
George Keishing845d9dc2017-06-16 14:49:29 -0500223 # Clear errors if there are any.
George Keishingcc71c3c2017-09-20 09:38:03 -0500224 Delete All Error Logs
George Keishing845d9dc2017-06-16 14:49:29 -0500225
George Keishing845d9dc2017-06-16 14:49:29 -0500226 Trigger Host Watchdog Error
227
George Keishing45921ea2017-11-23 04:32:56 -0600228 # Logging took time to generate the timedout error.
229 Wait Until Keyword Succeeds 2 min 30 sec
230 ... Verify Watchdog Errorlog Content
George Keishing845d9dc2017-06-16 14:49:29 -0500231
232
Rahul Maheshwarib44b6ec2017-07-05 00:23:03 -0500233Verify IPMI SEL Delete
234 [Documentation] Verify IPMI SEL delete operation.
235 [Tags] Verify_IPMI_SEL_Delete
236
237 Delete Error Logs And Verify
238 Create Test Error Log
239
240 ${sel_list}= Run IPMI Standard Command sel list
241 # Example of SEL List:
242 # 4 | 04/21/2017 | 10:51:16 | System Event #0x01 | Undetermined system hardware failure | Asserted
243
244 ${sel_entry}= Fetch from Left ${sel_list} |
245 ${sel_entry}= Evaluate $sel_entry.replace(' ','')
246 ${sel_entry}= Convert To Integer 0x${sel_entry}
247
248 ${sel_delete}= Run IPMI Standard Command sel delete ${sel_entry}
249 Should Be Equal As Strings ${sel_delete} Deleted entry ${sel_entry}
250 ... case_insensitive=True
251
252 ${sel_list}= Run IPMI Standard Command sel list
253 Should Be Equal As Strings ${sel_list} SEL has no entries
254 ... case_insensitive=True
255
256
Rahul Maheshwarib44b6ec2017-07-05 00:23:03 -0500257Delete Non Existing SEL Entry
258 [Documentation] Delete non existing SEL entry.
259 [Tags] Delete_Non_Existing_SEL_Entry
260
261 Delete Error Logs And Verify
262 ${sel_delete}= Run Keyword And Expect Error *
263 ... Run IPMI Standard Command sel delete 100
264 Should Contain ${sel_delete} Unable to delete entry
265 ... case_insensitive=True
266
267
268Delete Invalid SEL Entry
269 [Documentation] Delete invalid SEL entry.
270 [Tags] Delete_Invalid_SEL_Entry
271
272 ${sel_delete}= Run Keyword And Expect Error *
273 ... Run IPMI Standard Command sel delete abc
274 Should Contain ${sel_delete} Given SEL ID 'abc' is invalid
275 ... case_insensitive=True
276
277
Rahul Maheshwarie89b5092017-06-23 00:24:15 -0500278Verify IPMI SEL Entries
279 [Documentation] Verify IPMI SEL's entries info.
280 [Tags] Verify_IPMI_SEL_Entries
281
282 Delete Error Logs And Verify
283
284 # Generate error logs of random count.
285 ${count}= Evaluate random.randint(1, 5) modules=random
286 Repeat Keyword ${count} Create Test Error Log
287
288 ${sel_entries_count}= Get IPMI SEL Setting Entries
289 Should Be Equal As Strings ${sel_entries_count} ${count}
290
291
292Verify IPMI SEL Last Add Time
293 [Documentation] Verify IPMI SEL's last added timestamp.
294 [Tags] Verify_IPMI_SEL_Last_Add_Time
295
296 Create Test Error Log
297 ${sel_time}= Run IPMI Standard Command sel time get
298 ${sel_time}= Convert Date ${sel_time}
299 ... date_format=%m/%d/%Y %H:%M:%S exclude_millis=True
300
301 ${sel_last_add_time}= Get IPMI SEL Setting Last Add Time
302 ${sel_last_add_time}= Convert Date ${sel_last_add_time}
303 ... date_format=%m/%d/%Y %H:%M:%S exclude_millis=True
304
305 ${time-diff}=
306 ... Subtract Date From Date ${sel_last_add_time} ${sel_time}
307
308 # Verify if the delay in current time check and last add SEL time
309 # is less or equals to 2 seconds.
310 Should Be True ${time-diff} <= 2
311
Sweta Potthuri96d82492017-08-23 09:03:38 -0500312Verify Error Logs Capping
313 [Documentation] Verify error logs capping.
314 [Tags] Verify_Error_Logs_Capping
315
316 Delete Error Logs And Verify
George Keishingfa2fc162018-01-08 07:41:13 -0600317 ${cmd}= Catenate for i in {1..201}; do /tmp/tarball/bin/logging-test -c
318 ... AutoTestSimple; done
Joy Onyerikwu2ef965a2018-05-24 15:23:27 -0500319 BMC Execute Command ${cmd}
Sweta Potthuri96d82492017-08-23 09:03:38 -0500320 ${count}= Count Error Entries
George Keishingfa2fc162018-01-08 07:41:13 -0600321 Run Keyword If ${count} > 200
322 ... Fail Error logs created exceeded max capacity 200.
Rahul Maheshwarib44b6ec2017-07-05 00:23:03 -0500323
Sweta Potthurid9e746e2018-01-08 09:38:42 -0600324Test Error Log Rotation
325 [Documentation] Verify creation of 201 error log is replaced by entry id 1.
326 [Tags] Test_Error_Log_Rotation
327
328 Delete Error Logs And Verify
329
330 # Restart service.
331 BMC Execute Command
332 ... systemctl restart xyz.openbmc_project.Logging.service
333 Sleep 10s reason=Wait for logging service to restart properly.
334
335 # Create 200 error logs.
336 ${cmd}= Catenate for i in {1..200}; do /tmp/tarball/bin/logging-test -c
337 ... AutoTestSimple;done
338 BMC Execute Command ${cmd}
339
340 # Check the response for 200th error log.
341 ${resp}= OpenBMC Get Request ${BMC_LOGGING_ENTRY}${200}
342 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
343
344 # Check if error log with id 1 exists.
345 ${resp}= OpenBMC Get Request ${BMC_LOGGING_ENTRY}${1}
346 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
347
348 # Create error log and verify the entry ID is 201 and not 1.
349 Create Test Error Log
350 ${resp}= OpenBMC Get Request ${BMC_LOGGING_ENTRY}${201}
351 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
352
353 # Error log 1 is not present.
354 ${resp}= OpenBMC Get Request ${BMC_LOGGING_ENTRY}${1}
355 Should Be Equal As Strings ${resp.status_code} ${HTTP_NOT_FOUND}
356
Michael Tritz935c18e2017-03-08 11:45:41 -0600357*** Keywords ***
358
George Keishing95c371a2017-09-14 15:42:33 -0500359Test Setup Execution
360 [Documentation] Do test case setup tasks.
361
362 ${status}= Run Keyword And Return Status Logging Test Binary Exist
363 Run Keyword If ${status} == ${False} Install Tarball
364 Delete Error Logs And Verify
365
366
George Keishingfa2fc162018-01-08 07:41:13 -0600367Test Teardown Execution
George Keishing845d9dc2017-06-16 14:49:29 -0500368 [Documentation] Do the post test teardown.
369 # 1. Capture FFDC on test failure.
370 # 2. Delete error logs.
371 # 3. Close all open SSH connections.
372 # 4. Clear all REST sessions.
373
374 FFDC On Test Case Fail
George Keishingcc71c3c2017-09-20 09:38:03 -0500375 Delete All Error Logs
George Keishing845d9dc2017-06-16 14:49:29 -0500376 Close All Connections