blob: 214dae84ae968583e2eb43511873b863b9b68ca0 [file] [log] [blame]
George Keishingcdfea1d2022-08-05 10:42:39 -05001*** Settings ***
2Documentation Test suite to verify BIOS POST code log entries.
3
4Resource ../../../lib/resource.robot
5Resource ../../../lib/bmc_redfish_resource.robot
6Resource ../../../lib/openbmc_ffdc.robot
7Resource ../../../lib/logging_utils.robot
8
9Suite Setup Suite Setup Execution
10Test Setup Test Setup Execution
11Test Teardown Test Teardown Execution
12Suite Teardown Suite Teardown Execution
13
George Keishingf699f552023-09-14 19:05:01 +053014Force Tags Post_Codes
aravinth0510649666a2022-09-23 05:27:27 +000015
16*** Variables ***
17${max_view_count} 1000
18
19
George Keishingcdfea1d2022-08-05 10:42:39 -050020*** Test Cases ***
21
22Test PostCodes When Host Boots
23 [Documentation] Boot the system and verify PostCodes from host are logged.
24 [Tags] Test_PostCodes_When_Host_Boots
25
26 Redfish Power On
27 ${post_code_list}= Redfish Get PostCodes
28 Rprint Vars post_code_list
29
30 ${post_codes}= Redfish.Get Properties
Yi Huc32434a2024-01-11 17:33:10 -080031 ... /redfish/v1/Systems/${SYSTEM_ID}/LogServices/PostCodes/Entries
George Keishingcdfea1d2022-08-05 10:42:39 -050032 Log To Console BIOS POST Codes count: ${post_codes['Members@odata.count']}
33 Should Be True ${post_codes['Members@odata.count']} >= 1 msg=No BIOS POST Codes populated.
34
35
George Keishing8b5d53a2022-08-08 06:39:17 -050036Test PostCodes When Host Reboot
37 [Documentation] Initiate Host reboot the system and verify PostCodes from host are logged.
38 [Tags] Test_PostCodes_When_Host_Reboot
39
40 # Boot to runtime and clear post codes.
41 Redfish Power On stack_mode=skip
42 Redfish Clear PostCodes
43
44 RF SYS GracefulRestart
45 ${post_code_list}= Redfish Get PostCodes
46 Rprint Vars post_code_list
47
48 ${post_codes}= Redfish.Get Properties
Yi Huc32434a2024-01-11 17:33:10 -080049 ... /redfish/v1/Systems/${SYSTEM_ID}/LogServices/PostCodes/Entries
George Keishing8b5d53a2022-08-08 06:39:17 -050050 Log To Console BIOS POST Codes count: ${post_codes['Members@odata.count']}
51 Should Be True ${post_codes['Members@odata.count']} >= 1 msg=No BIOS POST Codes populated.
52
53
54Test PostCodes When Host Powered Off
55 [Documentation] Power off the system and verify PostCodes from host are logged.
56 [Tags] Test_PostCodes_When_Host_Powered_Off
57
58 # Boot to runtime and clear post codes.
59 Redfish Power On stack_mode=skip
60 Redfish Clear PostCodes
61
62 Redfish Power Off
63 ${post_code_list}= Redfish Get PostCodes
64 Rprint Vars post_code_list
65
66 ${post_codes}= Redfish.Get Properties
Yi Huc32434a2024-01-11 17:33:10 -080067 ... /redfish/v1/Systems/${SYSTEM_ID}/LogServices/PostCodes/Entries
George Keishing8b5d53a2022-08-08 06:39:17 -050068 Log To Console BIOS POST Codes count: ${post_codes['Members@odata.count']}
George Keishing9bd171f2023-09-06 09:50:33 +053069 Should Be True ${post_codes['Members@odata.count']} == 0
70 ... msg=BIOS POST Codes populated.
George Keishing8b5d53a2022-08-08 06:39:17 -050071
72
aravinth0510649666a2022-09-23 05:27:27 +000073Test PostCode Id Value Incremented On Host Reboot
74 [Documentation] Verify the value of ID in postcode entry is incremented
75 ... on host reboot. In the ID value 'B2-49', '2' represents
76 ... the boot cycle count of the host system.
77 [Tags] Test_PostCode_Id_Value_Incremented_On_Host_Reboot
78 [Setup] Populate PostCode Logs Incase No Prior Entries Available
79
80 # Get boot count of current postcode logs.
81 ${initial_boot_count}= Get Boot Count For Last PostCode Entry
82 ${expected_boot_count}= Evaluate ${initial_boot_count} + 1
83
84 # Perform host reboot and verify boot count incremented in ID value.
85 RF SYS GracefulRestart
86 ${current_boot_count}= Get Boot Count For Last PostCode Entry
87 Should Be True ${current_boot_count} == ${expected_boot_count}
88
89
90Test PostCode Log Perisistency After BMC Reboot
91 [Documentation] Verify the post code log entries persist after BMC reboot.
92 [Tags] Test_PostCode_Log_Perisistency_After_BMC_Reboot
93 [Setup] Populate PostCode Logs Incase No Prior Entries Available
94
95 Redfish Power On stack_mode=skip
96
97 # Get log count before BMC reboot.
98 ${post_codes}= Redfish.Get Properties
Yi Huc32434a2024-01-11 17:33:10 -080099 ... /redfish/v1/Systems/${SYSTEM_ID}/LogServices/PostCodes/Entries
aravinth0510649666a2022-09-23 05:27:27 +0000100 ${initial_log_count}= Set Variable ${post_codes['Members@odata.count']}
101
102 # Reboot BMC.
103 OBMC Reboot (run)
104
105 # Get log count after BMC reboot and compare with initial log count.
106 ${post_codes}= Redfish.Get Properties
Yi Huc32434a2024-01-11 17:33:10 -0800107 ... /redfish/v1/Systems/${SYSTEM_ID}/LogServices/PostCodes/Entries
aravinth0510649666a2022-09-23 05:27:27 +0000108 ${current_log_count}= Set Variable ${post_codes['Members@odata.count']}
109 Should Be True ${current_log_count} == ${initial_log_count}
110
111
112Test Clear Post Code Log Action
113 [Documentation] Verify clear log action for post code entries.
114 [Tags] Test_Clear_Post_Code_Log_Action
115 [Setup] Populate PostCode Logs Incase No Prior Entries Available
116
117 # Perform clear postcode log action.
118 Redfish Clear PostCodes
119 ${post_codes}= Redfish.Get Properties
Yi Huc32434a2024-01-11 17:33:10 -0800120 ... /redfish/v1/Systems/${SYSTEM_ID}/LogServices/PostCodes/Entries
aravinth0510649666a2022-09-23 05:27:27 +0000121
122 # Verify if log count becomes zero.
123 Should Be True ${post_codes['Members@odata.count']} == 0
124 ... msg=BIOS POST code logs not cleared.
125
126
George Keishingcdfea1d2022-08-05 10:42:39 -0500127*** Keywords ***
128
129Test Setup Execution
130 [Documentation] Do test setup operation.
131
132 Redfish.Login
133 Redfish Clear PostCodes
134
135
136Test Teardown Execution
137 [Documentation] Do test teardown operation.
138
139 FFDC On Test Case Fail
140
141
142Suite Setup Execution
143 [Documentation] Do suite setup operation.
144
145 Redfish.Login
146 Redfish Power Off stack_mode=skip
147
148 Run Keyword And Ignore Error Redfish Delete All BMC Dumps
149 Run Keyword And Ignore Error Redfish Purge Event Log
150 Run Keyword And Ignore Error Delete All Redfish Sessions
151
152
153Suite Teardown Execution
154 [Documentation] Do suite teardown operation.
155
156 Run Keyword And Ignore Error Redfish Delete All BMC Dumps
157 Run Keyword And Ignore Error Redfish Purge Event Log
158 Run Keyword And Ignore Error Delete All Redfish Sessions
aravinth0510649666a2022-09-23 05:27:27 +0000159
160
161Get Boot Count For Last PostCode Entry
162 [Documentation] Get the latest boot count from post code log entry.
163 ... log entry has ID "B2-1000", latest boot count "2" is returned.
164
165 # {
166 # "@odata.id": "/redfish/v1/Systems/system/LogServices/PostCodes/Entries",
167 # "@odata.type": "#LogEntryCollection.LogEntryCollection",
168 # "Description": "Collection of POST Code Log Entries",
169 # "Members": [
170 # {
171 # "@odata.id": "/redfish/v1/Systems/system/LogServices/PostCodes/Entries/B1-1000",
172 # "@odata.type": "#LogEntry.v1_8_0.LogEntry",
173 # "Created": "1970-01-01T00:16:40+00:00",
174 # "EntryType": "Event",
175 # "Id": "B2-1000",
176 # "Message": "Boot Count: 2; Time Stamp Offset: 117.4928 seconds; POST Code: 0xac10",
177 # "MessageArgs": [
178 # "2",
179 # "117.4928",
180 # "0xac10"
181 # ],
182 # "MessageId": "OpenBMC.0.2.BIOSPOSTCode",
183 # "Name": "POST Code Log Entry",
184 # "Severity": "OK"
185 # }
186 # ],
187 # "Members@odata.count": 2240,
188 # "Members@odata.nextLink": "/redfish/v1/Systems/system/LogServices/PostCodes/Entries?$skip=1000",
189 # "Name": "BIOS POST Code Log Entries"
190 # }
191 ${post_codes}= Redfish.Get Properties
Yi Huc32434a2024-01-11 17:33:10 -0800192 ... /redfish/v1/Systems/${SYSTEM_ID}/LogServices/PostCodes/Entries
aravinth0510649666a2022-09-23 05:27:27 +0000193 ${total_log_count}= Set Variable ${post_codes['Members@odata.count']}
194
195 IF ${total_log_count} > ${max_view_count}
196 ${skip_count}= Evaluate (${total_log_count}//${max_view_count})*${max_view_count}
197 ${uri}= Set Variable
Yi Huc32434a2024-01-11 17:33:10 -0800198 ... /redfish/v1/Systems/${SYSTEM_ID}/LogServices/PostCodes/Entries?$skip=${skip_count}
aravinth0510649666a2022-09-23 05:27:27 +0000199 ${post_codes}= Redfish.Get Properties ${uri}
200 END
201
202 ${last_id}= Set Variable ${post_codes['Members'][-1]['Id']}
203 ${last_id}= Split String ${last_id} -
204 ${boot_count}= Set Variable ${last_id[0][1]}
205
206 Return From Keyword ${boot_count}
207
208
209Populate PostCode Logs Incase No Prior Entries Available
210 [Documentation] Trigger Redfish graceful restart action on host system
211 ... to populate postcode logs if there are no prior log entries.
212
213 ${post_codes}= Redfish.Get Properties
Yi Huc32434a2024-01-11 17:33:10 -0800214 ... /redfish/v1/Systems/${SYSTEM_ID}/LogServices/PostCodes/Entries
aravinth0510649666a2022-09-23 05:27:27 +0000215 Run Keyword If ${post_codes['Members@odata.count']} == 0
216 ... RF SYS GracefulRestart
217