| George Keishing | cdfea1d | 2022-08-05 10:42:39 -0500 | [diff] [blame] | 1 | *** Settings *** | 
|  | 2 | Documentation    Test suite to verify BIOS POST code log entries. | 
|  | 3 |  | 
|  | 4 | Resource         ../../../lib/resource.robot | 
|  | 5 | Resource         ../../../lib/bmc_redfish_resource.robot | 
|  | 6 | Resource         ../../../lib/openbmc_ffdc.robot | 
|  | 7 | Resource         ../../../lib/logging_utils.robot | 
|  | 8 |  | 
|  | 9 | Suite Setup      Suite Setup Execution | 
|  | 10 | Test Setup       Test Setup Execution | 
|  | 11 | Test Teardown    Test Teardown Execution | 
|  | 12 | Suite Teardown   Suite Teardown Execution | 
|  | 13 |  | 
| Matt Fischer | 6fb70d9 | 2023-10-24 19:06:33 -0600 | [diff] [blame] | 14 | Test Tags       Post_Codes | 
| aravinth0510 | 649666a | 2022-09-23 05:27:27 +0000 | [diff] [blame] | 15 |  | 
|  | 16 | *** Variables *** | 
|  | 17 | ${max_view_count}    1000 | 
|  | 18 |  | 
|  | 19 |  | 
| George Keishing | cdfea1d | 2022-08-05 10:42:39 -0500 | [diff] [blame] | 20 | *** Test Cases *** | 
|  | 21 |  | 
|  | 22 | Test 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 Hu | c32434a | 2024-01-11 17:33:10 -0800 | [diff] [blame] | 31 | ...  /redfish/v1/Systems/${SYSTEM_ID}/LogServices/PostCodes/Entries | 
| George Keishing | cdfea1d | 2022-08-05 10:42:39 -0500 | [diff] [blame] | 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 |  | 
| George Keishing | 8b5d53a | 2022-08-08 06:39:17 -0500 | [diff] [blame] | 36 | Test 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 Hu | c32434a | 2024-01-11 17:33:10 -0800 | [diff] [blame] | 49 | ...  /redfish/v1/Systems/${SYSTEM_ID}/LogServices/PostCodes/Entries | 
| George Keishing | 8b5d53a | 2022-08-08 06:39:17 -0500 | [diff] [blame] | 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 |  | 
|  | 54 | Test 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 Hu | c32434a | 2024-01-11 17:33:10 -0800 | [diff] [blame] | 67 | ...  /redfish/v1/Systems/${SYSTEM_ID}/LogServices/PostCodes/Entries | 
| George Keishing | 8b5d53a | 2022-08-08 06:39:17 -0500 | [diff] [blame] | 68 | Log To Console  BIOS POST Codes count: ${post_codes['Members@odata.count']} | 
| George Keishing | 9bd171f | 2023-09-06 09:50:33 +0530 | [diff] [blame] | 69 | Should Be True  ${post_codes['Members@odata.count']} == 0 | 
|  | 70 | ...  msg=BIOS POST Codes populated. | 
| George Keishing | 8b5d53a | 2022-08-08 06:39:17 -0500 | [diff] [blame] | 71 |  | 
|  | 72 |  | 
| aravinth0510 | 649666a | 2022-09-23 05:27:27 +0000 | [diff] [blame] | 73 | Test 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 |  | 
|  | 90 | Test 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 Hu | c32434a | 2024-01-11 17:33:10 -0800 | [diff] [blame] | 99 | ...  /redfish/v1/Systems/${SYSTEM_ID}/LogServices/PostCodes/Entries | 
| aravinth0510 | 649666a | 2022-09-23 05:27:27 +0000 | [diff] [blame] | 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 | 
| Yi Hu | c32434a | 2024-01-11 17:33:10 -0800 | [diff] [blame] | 107 | ...  /redfish/v1/Systems/${SYSTEM_ID}/LogServices/PostCodes/Entries | 
| aravinth0510 | 649666a | 2022-09-23 05:27:27 +0000 | [diff] [blame] | 108 | ${current_log_count}=  Set Variable  ${post_codes['Members@odata.count']} | 
|  | 109 | Should Be True  ${current_log_count} == ${initial_log_count} | 
|  | 110 |  | 
|  | 111 |  | 
|  | 112 | Test 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 Hu | c32434a | 2024-01-11 17:33:10 -0800 | [diff] [blame] | 120 | ...  /redfish/v1/Systems/${SYSTEM_ID}/LogServices/PostCodes/Entries | 
| aravinth0510 | 649666a | 2022-09-23 05:27:27 +0000 | [diff] [blame] | 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 |  | 
| George Keishing | cdfea1d | 2022-08-05 10:42:39 -0500 | [diff] [blame] | 127 | *** Keywords *** | 
|  | 128 |  | 
|  | 129 | Test Setup Execution | 
|  | 130 | [Documentation]  Do test setup operation. | 
|  | 131 |  | 
|  | 132 | Redfish.Login | 
|  | 133 | Redfish Clear PostCodes | 
|  | 134 |  | 
|  | 135 |  | 
|  | 136 | Test Teardown Execution | 
|  | 137 | [Documentation]  Do test teardown operation. | 
|  | 138 |  | 
|  | 139 | FFDC On Test Case Fail | 
|  | 140 |  | 
|  | 141 |  | 
|  | 142 | Suite 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 |  | 
|  | 153 | Suite 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 | 
| aravinth0510 | 649666a | 2022-09-23 05:27:27 +0000 | [diff] [blame] | 159 |  | 
|  | 160 |  | 
|  | 161 | Get 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 Hu | c32434a | 2024-01-11 17:33:10 -0800 | [diff] [blame] | 192 | ...  /redfish/v1/Systems/${SYSTEM_ID}/LogServices/PostCodes/Entries | 
| aravinth0510 | 649666a | 2022-09-23 05:27:27 +0000 | [diff] [blame] | 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 | 
| Yi Hu | c32434a | 2024-01-11 17:33:10 -0800 | [diff] [blame] | 198 | ...  /redfish/v1/Systems/${SYSTEM_ID}/LogServices/PostCodes/Entries?$skip=${skip_count} | 
| aravinth0510 | 649666a | 2022-09-23 05:27:27 +0000 | [diff] [blame] | 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 |  | 
| Sridevi Ramesh | e54be14 | 2025-05-05 00:52:45 -0500 | [diff] [blame] | 206 | RETURN  ${boot_count} | 
| aravinth0510 | 649666a | 2022-09-23 05:27:27 +0000 | [diff] [blame] | 207 |  | 
|  | 208 |  | 
|  | 209 | Populate 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 Hu | c32434a | 2024-01-11 17:33:10 -0800 | [diff] [blame] | 214 | ...  /redfish/v1/Systems/${SYSTEM_ID}/LogServices/PostCodes/Entries | 
| Sridevi Ramesh | 162c52a | 2025-05-13 23:47:09 -0500 | [diff] [blame] | 215 | IF  ${post_codes['Members@odata.count']} == 0 | 
|  | 216 | RF SYS GracefulRestart | 
|  | 217 | END |