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