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