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 14Force Tags Post_Codes 15 16*** Variables *** 17${max_view_count} 1000 18 19 20*** 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 31 ... /redfish/v1/Systems/system/LogServices/PostCodes/Entries 32 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 36Test 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 49 ... /redfish/v1/Systems/system/LogServices/PostCodes/Entries 50 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 67 ... /redfish/v1/Systems/system/LogServices/PostCodes/Entries 68 Log To Console BIOS POST Codes count: ${post_codes['Members@odata.count']} 69 Should Be True ${post_codes['Members@odata.count']} == 0 70 ... msg=BIOS POST Codes populated. 71 72 73Test 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 99 ... /redfish/v1/Systems/system/LogServices/PostCodes/Entries 100 ${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 107 ... /redfish/v1/Systems/system/LogServices/PostCodes/Entries 108 ${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 120 ... /redfish/v1/Systems/system/LogServices/PostCodes/Entries 121 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 127*** 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 159 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 192 ... /redfish/v1/Systems/system/LogServices/PostCodes/Entries 193 ${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 198 ... /redfish/v1/Systems/system/LogServices/PostCodes/Entries?$skip=${skip_count} 199 ${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 214 ... /redfish/v1/Systems/system/LogServices/PostCodes/Entries 215 Run Keyword If ${post_codes['Members@odata.count']} == 0 216 ... RF SYS GracefulRestart 217 218