blob: 90de51fd0a516f6575a4491fe01930eecaa55241 [file] [log] [blame]
Rahul Maheshwarifaa5d202020-02-24 23:32:57 -06001*** Settings ***
2Documentation This suite tests Platform Event Log (PEL) functionality of OpenBMC.
3
4Library ../../lib/pel_utils.py
Rahul Maheshwaria17a3392020-03-02 04:51:52 -06005Variables ../../data/pel_variables.py
Rahul Maheshwari8f5256f2020-02-26 23:53:55 -06006Resource ../../lib/list_utils.robot
Rahul Maheshwarifaa5d202020-02-24 23:32:57 -06007Resource ../../lib/openbmc_ffdc.robot
8
Rahul Maheshwarif575c902020-02-26 04:38:40 -06009Test Setup Redfish.Login
10Test Teardown Run Keywords Redfish.Logout AND FFDC On Test Case Fail
Rahul Maheshwarifaa5d202020-02-24 23:32:57 -060011
12
13*** Variables ***
14
15${CMD_INTERNAL_FAILURE} busctl call xyz.openbmc_project.Logging /xyz/openbmc_project/logging
16... xyz.openbmc_project.Logging.Create Create ssa{ss} xyz.openbmc_project.Common.Error.InternalFailure
17... xyz.openbmc_project.Logging.Entry.Level.Error 0
18
19
20*** Test Cases ***
21
22Create Test PEL Log And Verify
23 [Documentation] Create PEL log using busctl command and verify via peltool.
24 [Tags] Create_Test_PEL_Log_And_Verify
25
Rahul Maheshwarif575c902020-02-26 04:38:40 -060026 Redfish Purge Event Log
Rahul Maheshwarifaa5d202020-02-24 23:32:57 -060027 Create Test PEL Log
Rahul Maheshwarif575c902020-02-26 04:38:40 -060028 ${pel_id}= Get PEL Log Via BMC CLI
29 Should Not Be Empty ${pel_id} msg=System PEL log entry is empty.
30
31
Rahul Maheshwaria17a3392020-03-02 04:51:52 -060032Verify PEL Log Details
33 [Documentation] Verify PEL log details via peltool.
34 [Tags] Verify_PEL_Log_Details
35
36 Redfish Purge Event Log
37
38 ${bmc_time1}= CLI Get BMC DateTime
39 Create Test PEL Log
40 ${bmc_time2}= CLI Get BMC DateTime
41
42 ${pel_records}= Peltool -l
43
44 # Example output from 'Peltool -l':
45 # pel_records:
46 # [0x50000012]:
47 # [CreatorID]: BMC
48 # [CompID]: 0x1000
49 # [PLID]: 0x50000012
50 # [Subsystem]: BMC Firmware
51 # [Message]: An application had an internal failure
52 # [SRC]: BD8D1002
53 # [Commit Time]: 03/02/2020 09:35:15
54 # [Sev]: Unrecoverable Error
55
56 ${ids}= Get Dictionary Keys ${pel_records}
57 ${id}= Get From List ${ids} 0
58
59 @{pel_fields}= Create List CreatorID Subsystem Message Sev
60 FOR ${field} IN @{pel_fields}
61 Valid Value pel_records['${id}']['${field}'] ['${PEL_DETAILS['${field}']}']
62 END
63
64 Valid Value pel_records['${id}']['PLID'] ['${id}']
65
66 # Verify if "CompID" and "SRC" fields of PEL has alphanumeric value.
67 Should Match Regexp ${pel_records['${id}']['CompID']} [a-zA-Z0-9]
68 Should Match Regexp ${pel_records['${id}']['SRC']} [a-zA-Z0-9]
69
70 ${pel_date_time}= Convert Date ${pel_records['${id}']['Commit Time']}
71 ... date_format=%m/%d/%Y %H:%M:%S exclude_millis=yes
72
73 # Convert BMC and PEL time to epoch time before comparing.
74 ${bmc_time1_epoch}= Convert Date ${bmc_time1} epoch
75 ${pel_time_epoch}= Convert Date ${pel_date_time} epoch
76 ${bmc_time2_epoch}= Convert Date ${bmc_time2} epoch
77
78 Should Be True ${bmc_time1_epoch} <= ${pel_time_epoch} <= ${bmc_time2_epoch}
79
80
Rahul Maheshwarif575c902020-02-26 04:38:40 -060081Verify PEL Log Persistence After BMC Reboot
82 [Documentation] Verify PEL log persistence after BMC reboot.
83 [Tags] Verify_PEL_Log_Persistence_After_BMC_Reboot
84
85 Create Test PEL Log
86 ${pel_before_reboot}= Get PEL Log Via BMC CLI
87
88 Redfish OBMC Reboot (off)
89 ${pel_after_reboot}= Get PEL Log Via BMC CLI
90
91 List Should Contain Sub List ${pel_after_reboot} ${pel_before_reboot}
Rahul Maheshwarifaa5d202020-02-24 23:32:57 -060092
93
Rahul Maheshwari58b99fc2020-03-03 00:05:55 -060094Verify PEL ID Numbering
95 [Documentation] Verify PEL ID numbering.
96 [Tags] Verify_PEL_ID_Numbering
97
98 Redfish Purge Event Log
99 Create Test PEL Log
100 Create Test PEL Log
101
102 ${pel_ids}= Get PEL Log Via BMC CLI
103
104 # Example of PEL IDs from PEL logs.
105 # [0x50000012]: <--- First PEL ID
106 # [CreatorID]: BMC
107 # [CompID]: 0x1000
108 # [PLID]: 0x50000012
109 # [Subsystem]: BMC Firmware
110 # [Message]: An application had an internal failure
111 # [SRC]: BD8D1002
112 # [Commit Time]: 03/02/2020 09:35:15
113 # [Sev]: Unrecoverable Error
114 #
115 # [0x50000013]: <--- Second PEL ID
116 # [CreatorID]: BMC
117 # [CompID]: 0x1000
118 # [PLID]: 0x50000013
119 # [Subsystem]: BMC Firmware
120 # [Message]: An application had an internal failure
121 # [SRC]: BD8D1002
122 # [Commit Time]: 03/02/2020 09:35:15
123 # [Sev]: Unrecoverable Error
124
125 Should Be True ${pel_ids[1]} == ${pel_ids[0]}+1
126
Rahul Maheshwari371e4f82020-04-06 22:53:52 -0500127Verify Machine Type Model And Serial Number
128 [Documentation] Verify machine type model and serial number from PEL.
129 [Tags] Verify_Machine_Type_Model_And_Serial_Number
130
131 Create Test PEL Log
132
133 ${pel_ids}= Get PEL Log Via BMC CLI
134 ${id}= Get From List ${pel_ids} -1
Rahul Maheshwari56dba362020-05-12 00:59:48 -0500135
Rahul Maheshwari371e4f82020-04-06 22:53:52 -0500136 ${pel_serial_number}= Get PEL Field Value ${id} Failing MTMS Serial Number
Rahul Maheshwari56dba362020-05-12 00:59:48 -0500137 ${pel_serial_number}= Replace String Using Regexp ${pel_serial_number} ^0+ ${EMPTY}
Rahul Maheshwari371e4f82020-04-06 22:53:52 -0500138 ${pel_machine_type_model}= Get PEL Field Value ${id} Failing MTMS Machine Type Model
Rahul Maheshwari56dba362020-05-12 00:59:48 -0500139 ${pel_machine_type_model}= Replace String Using Regexp ${pel_machine_type_model} ^0+ ${EMPTY}
Rahul Maheshwari371e4f82020-04-06 22:53:52 -0500140
141 # Example of "Machine Type Model" and "Serial Number" fields value from "Failing MTMS" section of PEL.
142 # [Failing MTMS]:
143 # [Created by]: 0x2000
144 # [Machine Type Model]: 1234-ABC <---- Machine type
145 # [Section Version]: 1
146 # [Serial Number]: ABCDEFG <---- Serial number
147 # [Sub-section type]: 0
148
149 ${redfish_machine_model}= Redfish.Get Attribute /redfish/v1/Systems/system/ Model
Rahul Maheshwari56dba362020-05-12 00:59:48 -0500150 ${redfish_machine_model}= Replace String Using Regexp ${redfish_machine_model} ^0+ ${EMPTY}
Rahul Maheshwari371e4f82020-04-06 22:53:52 -0500151 ${redfish_serial_number}= Redfish.Get Attribute /redfish/v1/Systems/system/ SerialNumber
Rahul Maheshwari56dba362020-05-12 00:59:48 -0500152 ${redfish_serial_number}= Replace String Using Regexp ${redfish_serial_number} ^0+ ${EMPTY}
Rahul Maheshwari371e4f82020-04-06 22:53:52 -0500153
154 Valid Value pel_machine_type_model ['${redfish_machine_model}']
155 Valid Value pel_serial_number ['${redfish_serial_number}']
156
157 # Check "Machine Type Model" and "Serial Number" fields value from "Extended User Header" section of PEL.
158 ${pel_machine_type_model}= Get PEL Field Value ${id} Extended User Header Reporting Machine Type
Rahul Maheshwari56dba362020-05-12 00:59:48 -0500159 ${pel_machine_type_model}= Replace String Using Regexp ${pel_machine_type_model} ^0+ ${EMPTY}
Rahul Maheshwari371e4f82020-04-06 22:53:52 -0500160 ${pel_serial_number}= Get PEL Field Value ${id} Extended User Header Reporting Serial Number
Rahul Maheshwari56dba362020-05-12 00:59:48 -0500161 ${pel_serial_number}= Replace String Using Regexp ${pel_serial_number} ^0+ ${EMPTY}
Rahul Maheshwari371e4f82020-04-06 22:53:52 -0500162
163 Valid Value pel_machine_type_model ['${redfish_machine_model}']
164 Valid Value pel_serial_number ['${redfish_serial_number}']
165
Rahul Maheshwari58b99fc2020-03-03 00:05:55 -0600166
Rahul Maheshwari1bea6cc2020-03-31 00:53:14 -0500167Verify Host Off State From PEL
168 [Documentation] Verify Host off state from PEL.
169 [Tags] Verify_Host_Off_State_From_PEL
170
171 Redfish Power Off stack_mode=skip
172 Create Test PEL Log
173
174 ${pel_ids}= Get PEL Log Via BMC CLI
175 ${id}= Get From List ${pel_ids} -1
176 ${pel_host_state}= Get PEL Field Value ${id} User Data HostState
177
178 Valid Value pel_host_state ['Off']
179
180
181Verify BMC Version From PEL
182 [Documentation] Verify BMC Version from PEL.
183 [Tags] Verify_BMC_Version_From_PEL
184
185 Create Test PEL Log
186
187 ${pel_ids}= Get PEL Log Via BMC CLI
188 ${id}= Get From List ${pel_ids} -1
189 ${pel_bmc_version}= Get PEL Field Value ${id} User Data BMC Version ID
190
191 ${bmc_version}= Get BMC Version
192 Valid Value bmc_version ['${bmc_version}']
193
194
Rahul Maheshwari8f5256f2020-02-26 23:53:55 -0600195Verify PEL Log After Host Poweron
196 [Documentation] Verify PEL log generation while booting host.
197 [Tags] Verify_PEL_Log_After_Host_Poweron
198
199 Redfish Power Off stack_mode=skip
200 Redfish Purge Event Log
201 Redfish Power On stack_mode=skip
202
203 ${pel_informational_error}= Get PEL Log IDs User Header Event Severity Informational Event
204 ${pel_bmc_created_error}= Get PEL Log IDs Private Header Creator Subsystem BMC
205
206 # Get BMC created non-infomational error.
207 ${pel_bmc_error}= Subtract Lists ${pel_bmc_created_error} ${pel_informational_error}
208
209 Should Be Empty ${pel_bmc_error} msg=Unexpected error log generated during Host poweron.
210
211
Rahul Maheshwari089615b2020-04-02 01:01:38 -0500212Verify BMC Event Log ID
213 [Documentation] Verify BMC Event Log ID from PEL.
214 [Tags] Verify_BMC_Event_Log_ID
215
216 Redfish Purge Event Log
217 Create Test PEL Log
218
219 ${pel_ids}= Get PEL Log Via BMC CLI
220 ${pel_bmc_event_log_id}= Get PEL Field Value ${pel_ids[0]} Private Header BMC Event Log Id
221
222 # Example "BMC Event Log Id" field value from "Private Header" section of PEL.
223 # [Private Header]:
224 # [Created at]: 08/24/1928 12:04:06
225 # [Created by]: 0x584D
226 # [Sub-section type]: 0
227 # [Entry Id]: 0x50000BB7
228 # [Platform Log Id]: 0x8200061D
229 # [CSSVER]:
230 # [Section Version]: 1
231 # [Creator Subsystem]: PHYP
232 # [BMC Event Log Id]: 341 <---- BMC event log id value
233 # [Committed at]: 03/25/1920 12:06:22
234
235 ${redfish_event_logs}= Redfish.Get Properties /redfish/v1/Systems/system/LogServices/EventLog/Entries
236
237 # Example of redfish_event_logs output:
238 # redfish_event_logs:
239 # [@odata.id]: /redfish/v1/Systems/system/LogServices/EventLog/Entries
240 # [Name]: System Event Log Entries
241 # [Members@odata.count]: 1
242 # [@odata.type]: #LogEntryCollection.LogEntryCollection
243 # [Description]: Collection of System Event Log Entries
244 # [Members]:
245 # [0]:
246 # [@odata.id]: /redfish/v1/Systems/system/LogServices/EventLog/Entries/235
247 # [Name]: System Event Log Entry
248 # [Severity]: Critical
249 # [EntryType]: Event
250 # [Created]: 2020-04-02T07:25:13+00:00
251 # [@odata.type]: #LogEntry.v1_5_1.LogEntry
252 # [Id]: 235 <----- Event log ID
253 # [Message]: xyz.openbmc_project.Common.Error.InternalFailure
254
255 Valid Value pel_bmc_event_log_id ['${redfish_event_logs['Members'][0]['Id']}']
256
257
Rahul Maheshwari326d0642020-04-07 06:13:38 -0500258Verify Delete All PEL
259 [Documentation] Verify deleting all PEL logs.
260 [Tags] Verify_Delete_All_PEL
261
262 Create Test PEL Log
263 Create Test PEL Log
264 Peltool --delete-all False
265
266 ${pel_ids}= Get PEL Log Via BMC CLI
267 Should Be Empty ${pel_ids}
268
269
Rahul Maheshwarifaa5d202020-02-24 23:32:57 -0600270*** Keywords ***
271
272Create Test PEL Log
273 [Documentation] Generate test PEL log.
274
275 # Test PEL log entry example:
276 # {
277 # "0x5000002D": {
278 # "SRC": "BD8D1002",
279 # "Message": "An application had an internal failure",
280 # "PLID": "0x5000002D",
281 # "CreatorID": "BMC",
282 # "Subsystem": "BMC Firmware",
283 # "Commit Time": "02/25/2020 04:47:09",
284 # "Sev": "Unrecoverable Error",
285 # "CompID": "0x1000"
286 # }
287 # }
288
289 BMC Execute Command ${CMD_INTERNAL_FAILURE}
290
291
Rahul Maheshwari8f5256f2020-02-26 23:53:55 -0600292Get PEL Log IDs
293 [Documentation] Returns the list of PEL log IDs which contains given field's value.
294 [Arguments] ${pel_section} ${pel_field} @{pel_field_value}
295
296 # Description of argument(s):
297 # pel_section The section of PEL (e.g. Private Header, User Header).
298 # pel_field The PEL field (e.g. Event Severity, Event Type).
299 # pel_field_value The list of PEL's field value (e.g. Unrecoverable Error).
300
301 ${pel_ids}= Get PEL Log Via BMC CLI
302 @{pel_id_list}= Create List
303
304 FOR ${id} IN @{pel_ids}
305 ${pel_output}= Peltool -i ${id}
306 # Example of PEL output from "peltool -i <id>" command.
307 # [Private Header]:
308 # [Created at]: 08/24/1928 12:04:06
309 # [Created by]: 0x584D
310 # [Sub-section type]: 0
311 # [Entry Id]: 0x50000BB7
312 # [Platform Log Id]: 0x8200061D
313 # [CSSVER]:
314 # [Section Version]: 1
315 # [Creator Subsystem]: PHYP
316 # [BMC Event Log Id]: 341
317 # [Committed at]: 03/25/1920 12:06:22
318 # [User Header]:
319 # [Log Committed by]: 0x4552
320 # [Action Flags]:
321 # [0]: Report Externally
322 # [Subsystem]: I/O Subsystem
323 # [Event Type]: Miscellaneous, Informational Only
324 # [Sub-section type]: 0
325 # [Event Scope]: Entire Platform
326 # [Event Severity]: Informational Event
327 # [Host Transmission]: Not Sent
328 # [Section Version]: 1
329
330 ${pel_section_output}= Get From Dictionary ${pel_output} ${pel_section}
331 ${pel_field_output}= Get From Dictionary ${pel_section_output} ${pel_field}
332 Run Keyword If '${pel_field_output}' in @{pel_field_value} Append To List ${pel_id_list} ${id}
333 END
334 Sort List ${pel_id_list}
335
336 [Return] ${pel_id_list}
337
338
Rahul Maheshwarif575c902020-02-26 04:38:40 -0600339Get PEL Log Via BMC CLI
340 [Documentation] Returns the list of PEL IDs using BMC CLI.
Rahul Maheshwarifaa5d202020-02-24 23:32:57 -0600341
342 ${pel_records}= Peltool -l
Rahul Maheshwarif575c902020-02-26 04:38:40 -0600343 ${ids}= Get Dictionary Keys ${pel_records}
Rahul Maheshwari1cffc4b2020-04-02 02:58:16 -0500344 Sort List ${ids}
Rahul Maheshwarifaa5d202020-02-24 23:32:57 -0600345
Rahul Maheshwarif575c902020-02-26 04:38:40 -0600346 [Return] ${ids}
Rahul Maheshwari60b58a82020-04-02 02:40:19 -0500347
348
349Get PEL Field Value
350 [Documentation] Returns the value of given PEL's field.
351 [Arguments] ${pel_id} ${pel_section} ${pel_field}
352
353 # Description of argument(s):
354 # pel_id The ID of PEL (e.g. 0x5000002D, 0x5000002E).
355 # pel_section The section of PEL (e.g. Private Header, User Header)
356 # pel_field The PEL field (e.g. Event Severity, Event Type).
357
358 ${pel_output}= Peltool -i ${pel_id}
359
360 # Example of PEL output from "peltool -i <id>" command.
361 # [Private Header]:
362 # [Created at]: 08/24/1928 12:04:06
363 # [Created by]: 0x584D
364 # [Sub-section type]: 0
365 # [Entry Id]: 0x50000BB7
366 # [Platform Log Id]: 0x8200061D
367 # [CSSVER]:
368 # [Section Version]: 1
369 # [Creator Subsystem]: PHYP
370 # [BMC Event Log Id]: 341
371 # [Committed at]: 03/25/1920 12:06:22
372 # [User Header]:
373 # [Log Committed by]: 0x4552
374 # [Action Flags]:
375 # [0]: Report Externally
376 # [Subsystem]: I/O Subsystem
377 # [Event Type]: Miscellaneous, Informational Only
378 # [Sub-section type]: 0
379 # [Event Scope]: Entire Platform
380 # [Event Severity]: Informational Event
381 # [Host Transmission]: Not Sent
382 # [Section Version]: 1
383
384 ${pel_section_output}= Get From Dictionary ${pel_output} ${pel_section}
385 ${pel_field_output}= Get From Dictionary ${pel_section_output} ${pel_field}
386
387 [Return] ${pel_field_output}