| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 1 | *** Settings *** | 
 | 2 | Documentation  Test IPMI sensor IDs. | 
 | 3 |  | 
| George Keishing | d6bc1c1 | 2019-03-08 12:59:29 -0600 | [diff] [blame] | 4 | Resource               ../lib/rest_client.robot | 
 | 5 | Resource               ../lib/ipmi_client.robot | 
 | 6 | Resource               ../lib/openbmc_ffdc.robot | 
 | 7 | Resource               ../lib/boot_utils.robot | 
 | 8 | Resource               ../lib/bmc_redfish_resource.robot | 
| Rahul Maheshwari | bad5e82 | 2019-07-30 12:36:27 -0500 | [diff] [blame] | 9 | Library                ../lib/ipmi_utils.py | 
| nagarjunb22 | 87138e6 | 2022-04-19 16:49:16 +0530 | [diff] [blame] | 10 | Library                ../lib/utilities.py | 
 | 11 | Variables              ../data/ipmi_raw_cmd_table.py | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 12 |  | 
 | 13 | Suite setup             Suite Setup Execution | 
| George Keishing | 2d0edad | 2021-08-18 11:44:10 -0500 | [diff] [blame] | 14 | Suite Teardown          Redfish.Logout | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 15 | Test Teardown           Test Teardown Execution | 
 | 16 |  | 
 | 17 | Force Tags              SDR_Test | 
 | 18 |  | 
 | 19 |  | 
 | 20 | *** Test Cases *** | 
 | 21 |  | 
| Rahul Maheshwari | bad5e82 | 2019-07-30 12:36:27 -0500 | [diff] [blame] | 22 | Verify SDR Info | 
 | 23 |     [Documentation]  Verify sdr info command output. | 
 | 24 |     [Tags]  Verify_SDR_Info | 
 | 25 |     # Example of SDR info command output: | 
 | 26 |     # SDR Version                         : 0x51 | 
 | 27 |     # Record Count                        : 216 | 
 | 28 |     # Free Space                          : unspecified | 
 | 29 |     # Most recent Addition                : | 
 | 30 |     # Most recent Erase                   : | 
 | 31 |     # SDR overflow                        : no | 
 | 32 |     # SDR Repository Update Support       : unspecified | 
 | 33 |     # Delete SDR supported                : no | 
 | 34 |     # Partial Add SDR supported           : no | 
 | 35 |     # Reserve SDR repository supported    : no | 
 | 36 |     # SDR Repository Alloc info supported : no | 
 | 37 |  | 
| nagarjunb22 | 87138e6 | 2022-04-19 16:49:16 +0530 | [diff] [blame] | 38 |     # Check if delete, partially add, reserve SDR and get SDR alloc info command are supported or not. | 
 | 39 |     ${support_delete_sdr}=  Fetch IPMI Command Support Status | 
 | 40 |     ...  ${IPMI_RAW_CMD['SDR']['Delete SDR'][0]} | 
 | 41 |     ${support_partial_add}=  Fetch IPMI Command Support Status | 
 | 42 |     ...  ${IPMI_RAW_CMD['SDR']['Partially Add SDR'][0]} | 
 | 43 |     ${support_reserve_sdr_repository}=  Fetch IPMI Command Support Status | 
 | 44 |     ...  ${IPMI_RAW_CMD['SDR']['Reserve SDR Repository'][0]} | 
 | 45 |     ${support_sdr_repository_alloc_info}=  Fetch IPMI Command Support Status | 
 | 46 |     ...  ${IPMI_RAW_CMD['SDR']['Get SDR allocation Info'][0]} | 
 | 47 |  | 
| Rahul Maheshwari | bad5e82 | 2019-07-30 12:36:27 -0500 | [diff] [blame] | 48 |     ${sdr_info}=  Get SDR Info | 
 | 49 |     Should Be Equal  ${sdr_info['sdr_version']}  0x51 | 
 | 50 |  | 
 | 51 |     # Get sensor count from "sdr elist all" command output. | 
 | 52 |     ${sensor_count}=  Get Sensor Count | 
 | 53 |     Should Be Equal As Strings | 
 | 54 |     ...  ${sdr_info['record_count']}  ${sensor_count} | 
 | 55 |  | 
 | 56 |     Should Be Equal  ${sdr_info['free_space']}  unspecified | 
| nagarjunb22 | 87138e6 | 2022-04-19 16:49:16 +0530 | [diff] [blame] | 57 |     Should Not Be Equal  ${sdr_info['most_recent_addition']}  ${EMPTY} | 
 | 58 |     Should Not Be Equal  ${sdr_info['most_recent_erase']}  ${EMPTY} | 
 | 59 |     Should Be Equal  ${sdr_info['sdr_overflow']}  yes | 
| Rahul Maheshwari | bad5e82 | 2019-07-30 12:36:27 -0500 | [diff] [blame] | 60 |     Should Be Equal  ${sdr_info['sdr_repository_update_support']}  unspecified | 
| nagarjunb22 | 87138e6 | 2022-04-19 16:49:16 +0530 | [diff] [blame] | 61 |     Should Be Equal  ${sdr_info['delete_sdr_supported']}  ${support_delete_sdr} | 
 | 62 |     Should Be Equal  ${sdr_info['partial_add_sdr_supported']}  ${support_partial_add} | 
 | 63 |     Should Be Equal  ${sdr_info['reserve_sdr_repository_supported']}  ${support_reserve_sdr_repository} | 
 | 64 |     Should Be Equal  ${sdr_info['sdr_repository_alloc_info_supported']}  ${support_sdr_repository_alloc_info} | 
| Rahul Maheshwari | bad5e82 | 2019-07-30 12:36:27 -0500 | [diff] [blame] | 65 |  | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 66 |  | 
 | 67 | Test CPU Core SDR Info At Power On | 
| George Keishing | d6bc1c1 | 2019-03-08 12:59:29 -0600 | [diff] [blame] | 68 |     [Documentation]  Verify CPU core SDR info via IPMI and Redfish at power on. | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 69 |  | 
 | 70 |     [Tags]  Test_CPU_Core_SDR_Info_At_Power_On | 
 | 71 |  | 
| George Keishing | d6bc1c1 | 2019-03-08 12:59:29 -0600 | [diff] [blame] | 72 |     Redfish Power On  stack_mode=skip  quiet=1 | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 73 |     Test SDR Info  core | 
 | 74 |  | 
 | 75 |  | 
 | 76 | Test DIMM SDR Info At Power On | 
| George Keishing | d6bc1c1 | 2019-03-08 12:59:29 -0600 | [diff] [blame] | 77 |     [Documentation]  Verify DIMM SDR info via IPMI and Redfish at power on. | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 78 |  | 
 | 79 |     [Tags]  Test_DIMM_SDR_Info_At_Power_On | 
 | 80 |  | 
| George Keishing | d6bc1c1 | 2019-03-08 12:59:29 -0600 | [diff] [blame] | 81 |     Redfish Power On  stack_mode=skip  quiet=1 | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 82 |     Test SDR Info  dimm | 
 | 83 |  | 
| Rahul Maheshwari | cd7b19c | 2018-04-10 07:35:56 -0500 | [diff] [blame] | 84 |  | 
 | 85 | Test GPU SDR Info At Power On | 
| George Keishing | d6bc1c1 | 2019-03-08 12:59:29 -0600 | [diff] [blame] | 86 |     [Documentation]  Verify GPU SDR info via IPMI and Redfish at power on. | 
| Rahul Maheshwari | cd7b19c | 2018-04-10 07:35:56 -0500 | [diff] [blame] | 87 |  | 
 | 88 |     [Tags]  Test_GPU_SDR_Info_At_Power_On | 
 | 89 |  | 
| George Keishing | d6bc1c1 | 2019-03-08 12:59:29 -0600 | [diff] [blame] | 90 |     Redfish Power On  stack_mode=skip  quiet=1 | 
| Rahul Maheshwari | cd7b19c | 2018-04-10 07:35:56 -0500 | [diff] [blame] | 91 |     Test SDR Info  gv100card | 
 | 92 |  | 
 | 93 |  | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 94 | Test CPU Core SDR Info At Power Off | 
| George Keishing | d6bc1c1 | 2019-03-08 12:59:29 -0600 | [diff] [blame] | 95 |     [Documentation]  Verify CPU core SDR info via IPMI and Redfish at power off. | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 96 |  | 
 | 97 |     [Tags]  Test_CPU_Core_SDR_Info_At_Power_Off | 
 | 98 |  | 
| George Keishing | d6bc1c1 | 2019-03-08 12:59:29 -0600 | [diff] [blame] | 99 |     Redfish Hard Power Off  stack_mode=skip  quiet=1 | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 100 |     Test SDR Info  core | 
 | 101 |  | 
 | 102 |  | 
 | 103 | Test DIMM SDR Info At Power Off | 
| George Keishing | d6bc1c1 | 2019-03-08 12:59:29 -0600 | [diff] [blame] | 104 |     [Documentation]  Verify DIMM SDR info via IPMI and Redfish at power off. | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 105 |  | 
 | 106 |     [Tags]  Test_DIMM_SDR_Info_At_Power_Off | 
 | 107 |  | 
| George Keishing | d6bc1c1 | 2019-03-08 12:59:29 -0600 | [diff] [blame] | 108 |     Redfish Hard Power Off  stack_mode=skip  quiet=1 | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 109 |     Test SDR Info  dimm | 
 | 110 |  | 
 | 111 |  | 
| Rahul Maheshwari | cd7b19c | 2018-04-10 07:35:56 -0500 | [diff] [blame] | 112 | Test Auto Reboot SDR Info | 
| George Keishing | d6bc1c1 | 2019-03-08 12:59:29 -0600 | [diff] [blame] | 113 |     [Documentation]  Verify auto reboot SDR info via IPMI and Redfish. | 
| Rahul Maheshwari | cd7b19c | 2018-04-10 07:35:56 -0500 | [diff] [blame] | 114 |     [Tags]  Test_Auto_Reboot_SDR_Info | 
 | 115 |  | 
 | 116 |  | 
 | 117 |     ${component_uri_list}=  Get Component URIs  auto_reboot | 
 | 118 |     ${component_uri}=  Get From List  ${component_uri_list}  0 | 
 | 119 |     ${state_rest}=  Read Attribute  ${component_uri}  AutoReboot | 
 | 120 |  | 
 | 121 |     ${state_ipmi}=  Get SDR Presence Via IPMI  auto_reboot${SPACE} | 
 | 122 |  | 
 | 123 |     Run Keyword If  '${state_ipmi}' == 'Disabled' | 
| George Keishing | 9a75e68 | 2019-10-24 00:22:08 -0500 | [diff] [blame] | 124 |     ...    Should Be True  ${state_rest} == ${0} | 
| Rahul Maheshwari | cd7b19c | 2018-04-10 07:35:56 -0500 | [diff] [blame] | 125 |     ...  ELSE IF  '${state_ipmi}' == 'State Asserted' | 
| George Keishing | 9a75e68 | 2019-10-24 00:22:08 -0500 | [diff] [blame] | 126 |     ...    Should Be True  ${state_rest} == ${1} | 
| Rahul Maheshwari | cd7b19c | 2018-04-10 07:35:56 -0500 | [diff] [blame] | 127 |  | 
 | 128 |  | 
 | 129 | Test TPM Enable SDR Info | 
| George Keishing | d6bc1c1 | 2019-03-08 12:59:29 -0600 | [diff] [blame] | 130 |     [Documentation]  Verify auto reboot SDR info via IPMI and Redfish. | 
| Rahul Maheshwari | cd7b19c | 2018-04-10 07:35:56 -0500 | [diff] [blame] | 131 |     [Tags]  Test_TPM_Enable_SDR_Info | 
 | 132 |  | 
 | 133 |  | 
 | 134 |     ${component_uri_list}=  Get Component URIs  TPMEnable | 
 | 135 |     ${component_uri}=  Get From List  ${component_uri_list}  0 | 
 | 136 |     ${state_rest}=  Read Attribute  ${component_uri}  TPMEnable | 
 | 137 |  | 
 | 138 |     ${state_ipmi}=  Get SDR Presence Via IPMI  auto_reboot${SPACE} | 
 | 139 |  | 
 | 140 |     Run Keyword If  '${state_ipmi}' == 'Disabled' | 
| George Keishing | 9a75e68 | 2019-10-24 00:22:08 -0500 | [diff] [blame] | 141 |     ...    Should Be True  ${state_rest} == ${0} | 
| Rahul Maheshwari | cd7b19c | 2018-04-10 07:35:56 -0500 | [diff] [blame] | 142 |     ...  ELSE IF  '${state_ipmi}' == 'State Asserted' | 
| George Keishing | 9a75e68 | 2019-10-24 00:22:08 -0500 | [diff] [blame] | 143 |     ...    Should Be True  ${state_rest} == ${1} | 
| Rahul Maheshwari | cd7b19c | 2018-04-10 07:35:56 -0500 | [diff] [blame] | 144 |  | 
| nagarjunb22 | 8ea859e | 2022-07-12 21:39:51 +0530 | [diff] [blame] | 145 |  | 
| nagarjunb22 | 87138e6 | 2022-04-19 16:49:16 +0530 | [diff] [blame] | 146 | Test Reserve SDR Repository | 
 | 147 |     [Documentation]  Verify Reserve SDR Repository IPMI command. | 
 | 148 |     [Tags]  Test_Reserve_SDR_Repository | 
 | 149 |  | 
 | 150 |     ${reservation_id}=  Get Reservation ID  convert_lsb_to_msb=True | 
 | 151 |  | 
 | 152 |     # Getting another Reservation ID and verify it is different from previous Reservation ID. | 
 | 153 |     ${new_reservation_id}=  Get Reservation ID  convert_lsb_to_msb=True | 
 | 154 |  | 
 | 155 |     Should Not Be Equal  ${reservation_id}  ${new_reservation_id} | 
| nagarjunb22 | 8ea859e | 2022-07-12 21:39:51 +0530 | [diff] [blame] | 156 |     ...  msg=Getting same reservation ID for second time, reservation ID must be different. | 
 | 157 |  | 
| nagarjunb22 | 87138e6 | 2022-04-19 16:49:16 +0530 | [diff] [blame] | 158 |  | 
 | 159 | Test Get SDR Using Reservation ID | 
 | 160 |    [Documentation]  Verify get SDR command using reservation ID obtained from Reserve SDR repository. | 
 | 161 |    [Tags]  Test_Get_SDR_Using_Reservation_ID | 
 | 162 |  | 
 | 163 |    ${reservation_id}=  Get Reservation ID  add_prefix=True | 
 | 164 |  | 
 | 165 |    # Get SDR full without using Reservation ID. | 
 | 166 |    Run External IPMI Raw Command  ${IPMI_RAW_CMD['SDR']['Get'][0]} | 
 | 167 |  | 
 | 168 |    # Get SDR Partially using Reservation ID. | 
 | 169 |    ${get_sdr_raw_cmd}=  Catenate | 
| nagarjunb22 | 8ea859e | 2022-07-12 21:39:51 +0530 | [diff] [blame] | 170 |    ...  ${IPMI_RAW_CMD['Get SDR']['Get'][1]} ${reservation_id} 0x${record_id} 0x00 | 
 | 171 |    ...  ${IPMI_RAW_CMD['Get SDR']['Get'][2]} | 
| nagarjunb22 | 87138e6 | 2022-04-19 16:49:16 +0530 | [diff] [blame] | 172 |    Run External IPMI Raw Command  ${get_sdr_raw_cmd} | 
 | 173 |  | 
 | 174 |    # Get SDR partially without using reservation ID and expect error. | 
 | 175 |    Verify Invalid IPMI Command  ${IPMI_RAW_CMD['SDR']['Get'][3]}  0xc5 | 
 | 176 |  | 
 | 177 |  | 
 | 178 | Test Get SDR Using Invalid Reservation ID | 
 | 179 |     [Documentation]  Verify get SDR command using invalid reservation ID. | 
 | 180 |     [Tags]  Test_Get_SDR_Using_Invalid_Reservation_ID | 
 | 181 |  | 
 | 182 |     # Generate two reservation ID and verify get SDR partial using old reservation ID. | 
 | 183 |     ${first_reservation_id}=  Get Reservation ID  add_prefix=True | 
 | 184 |     ${second_reservation_id}=  Get Reservation ID  add_prefix=True | 
 | 185 |  | 
| nagarjunb22 | 8ea859e | 2022-07-12 21:39:51 +0530 | [diff] [blame] | 186 |     # Creating the raw cmd with First reservation ID. | 
| nagarjunb22 | 87138e6 | 2022-04-19 16:49:16 +0530 | [diff] [blame] | 187 |     ${get_sdr_raw_cmd}=  Catenate | 
| nagarjunb22 | 8ea859e | 2022-07-12 21:39:51 +0530 | [diff] [blame] | 188 |     ...  ${IPMI_RAW_CMD['Get SDR']['Get'][1]} ${first_reservation_id} 0x${record_id} 0x00 | 
 | 189 |     ...  ${IPMI_RAW_CMD['Get SDR']['Get'][2]} | 
| nagarjunb22 | 87138e6 | 2022-04-19 16:49:16 +0530 | [diff] [blame] | 190 |  | 
| nagarjunb22 | 87138e6 | 2022-04-19 16:49:16 +0530 | [diff] [blame] | 191 |  | 
 | 192 | Test Reserve SDR Repository After BMC Reboot | 
 | 193 |     [Documentation]  Verify reserve SDR repository reservation ID after BMC Reboot. | 
 | 194 |     [Tags]  Test_Reserve_SDR_Repository_After_BMC_Reboot | 
 | 195 |  | 
 | 196 |     #  Get Reservation ID before reboot. | 
 | 197 |     ${reservation_id_before_reboot}=  Get Reservation ID  add_prefix=True | 
 | 198 |  | 
 | 199 |     # Cold reset BMC | 
 | 200 |     IPMI MC Reset Cold (run) | 
 | 201 |  | 
| nagarjunb22 | 8ea859e | 2022-07-12 21:39:51 +0530 | [diff] [blame] | 202 |     # Waiting to for sdr to populate. | 
 | 203 |     Sleep  10s | 
 | 204 |  | 
| nagarjunb22 | 87138e6 | 2022-04-19 16:49:16 +0530 | [diff] [blame] | 205 |     # Create Get SDR Partially command using reservation ID which got before reboot. | 
 | 206 |     ${get_sdr_raw_cmd}=  Catenate | 
| nagarjunb22 | 8ea859e | 2022-07-12 21:39:51 +0530 | [diff] [blame] | 207 |     ...  ${IPMI_RAW_CMD['Get SDR']['Get'][1]} ${reservation_id_before_reboot} 0x${record_id} 0x00 | 
 | 208 |     ...  ${IPMI_RAW_CMD['Get SDR']['Get'][2]} | 
| nagarjunb22 | 87138e6 | 2022-04-19 16:49:16 +0530 | [diff] [blame] | 209 |  | 
 | 210 |     Verify Invalid IPMI Command  ${get_sdr_raw_cmd}  0xc5 | 
 | 211 |  | 
 | 212 |     #  Verify get SDR partially with new reservation ID after reboot. | 
 | 213 |     ${reservation_id_after_reboot}=  Get Reservation ID  add_prefix=True | 
 | 214 |     ${get_sdr_raw_cmd}=  Catenate | 
| nagarjunb22 | 8ea859e | 2022-07-12 21:39:51 +0530 | [diff] [blame] | 215 |     ...  ${IPMI_RAW_CMD['Get SDR']['Get'][1]} ${reservation_id_after_reboot} 0x${record_id} 0x00 | 
 | 216 |     ...  ${IPMI_RAW_CMD['Get SDR']['Get'][2]} | 
| nagarjunb22 | 87138e6 | 2022-04-19 16:49:16 +0530 | [diff] [blame] | 217 |     Run External IPMI Raw Command  ${get_sdr_raw_cmd} | 
 | 218 |  | 
| Rahul Maheshwari | cd7b19c | 2018-04-10 07:35:56 -0500 | [diff] [blame] | 219 |  | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 220 | *** Keywords *** | 
 | 221 |  | 
| nagarjunb22 | 87138e6 | 2022-04-19 16:49:16 +0530 | [diff] [blame] | 222 | Get Reservation ID | 
 | 223 |     [Documentation]  Get reservation ID using reserve SDR repository. | 
 | 224 |     [Arguments]  ${add_prefix}=False  ${convert_lsb_to_msb}=False | 
 | 225 |  | 
 | 226 |     # Description of argument(s): | 
 | 227 |     # add_prefix             If True will prefix "0x" to the reservation ID. | 
 | 228 |     #                        e.g. IPMI response for Reservation ID command will be  like 01 00 | 
 | 229 |     #                        return reservation ID will be "0x01" for above response. | 
 | 230 |  | 
 | 231 |     # convert_lsb_to_msb     If True will convert the reservation ID from LSB first to MSB first. | 
 | 232 |     #                        e.g. IPMI response for reservation ID command will be like  01 0a | 
 | 233 |     #                        return reservation ID will be "a1" for above response. | 
 | 234 |  | 
 | 235 |     ${reservation_id}=  Run External IPMI Raw Command | 
 | 236 |     ...  ${IPMI_RAW_CMD['SDR']['Reserve SDR Repository'][0]} | 
 | 237 |  | 
 | 238 |     ${reservation_id}=  Run Keyword If  ${add_prefix} | 
 | 239 |     ...  Add Prefix To String  ${reservation_id}  0x | 
 | 240 |     ...  ELSE IF  ${convert_lsb_to_msb} | 
 | 241 |     ...  Convert LSB To MSB  ${reservation_id} | 
 | 242 |     ...  ELSE | 
 | 243 |     ...  Return From Keyword  ${reservation_id} | 
 | 244 |  | 
 | 245 |     [Return]  ${reservation_id} | 
 | 246 |  | 
 | 247 |  | 
| Rahul Maheshwari | bad5e82 | 2019-07-30 12:36:27 -0500 | [diff] [blame] | 248 | Get Sensor Count | 
 | 249 |     [Documentation]  Get sensors count using "sdr elist all" command. | 
 | 250 |     # Example of "sdr elist all" command output: | 
 | 251 |     # BootProgress     | 03h | ok  | 34.2 | | 
 | 252 |     # OperatingSystemS | 05h | ok  | 35.1 | | 
 | 253 |     # AttemptsLeft     | 07h | ok  | 34.1 | | 
 | 254 |     # occ0             | 08h | ok  | 210.1 | Device Disabled | 
 | 255 |     # occ1             | 09h | ok  | 210.2 | Device Disabled | 
 | 256 |     # p0_core0_temp    | 11h | ns  |  3.1 | Disabled | 
 | 257 |     # cpu0_core0       | 12h | ok  | 208.1 | Presence detected | 
 | 258 |     # p0_core1_temp    | 14h | ns  |  3.2 | Disabled | 
 | 259 |     # cpu0_core1       | 15h | ok  | 208.2 | Presence detected | 
 | 260 |     # p0_core2_temp    | 17h | ns  |  3.3 | Disabled | 
 | 261 |     # .. | 
 | 262 |     # .. | 
 | 263 |     # .. | 
 | 264 |     # .. | 
 | 265 |     # .. | 
 | 266 |     # .. | 
 | 267 |     # fan3             | 00h | ns  | 29.4 | Logical FRU @35h | 
 | 268 |     # bmc              | 00h | ns  |  6.1 | Logical FRU @3Ch | 
 | 269 |     # ethernet         | 00h | ns  |  1.1 | Logical FRU @46h | 
 | 270 |  | 
 | 271 |     ${output}=  Run IPMI Standard Command  sdr elist all | 
 | 272 |     ${sensor_list}=  Split String  ${output}  \n | 
 | 273 |     ${sensor_count}=  Get Length  ${sensor_list} | 
 | 274 |     [Return]  ${sensor_count} | 
 | 275 |  | 
 | 276 |  | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 277 | Get Component URIs | 
 | 278 |     [Documentation]  Get URIs for given component from given URIs | 
 | 279 |     ...  and return as a list. | 
 | 280 |     [Arguments]  ${component_name}  ${uri_list}=${SYSTEM_URI} | 
 | 281 |  | 
 | 282 |     # A sample result returned for the "core" component: | 
 | 283 |     # /xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core0 | 
 | 284 |     # /xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core1 | 
 | 285 |     # /xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core10 | 
 | 286 |     # /xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core11 | 
 | 287 |     # /xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core12 | 
 | 288 |     # (etc.) | 
 | 289 |  | 
 | 290 |     # Description of argument(s): | 
 | 291 |     # component_name    Component name (e.g. "core", "dimm", etc.). | 
 | 292 |     # uri_list          URI list. | 
 | 293 |  | 
 | 294 |     ${component_uris}=  Get Matches  ${uri_list} | 
| Jayashree-D | 5ddaf9b | 2020-07-15 13:50:02 +0530 | [diff] [blame] | 295 |     ...  regexp=^.*[0-9a-z_].${component_name}\[_0-9a-z]*$ | 
 | 296 |     ...  case_insensitive=${True} | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 297 |     [Return]  ${component_uris} | 
 | 298 |  | 
 | 299 |  | 
 | 300 | Get SDR Presence Via IPMI | 
 | 301 |     [Documentation]  Return presence info from IPMI sensor data record. | 
 | 302 |     [Arguments]  ${component_name} | 
 | 303 |  | 
 | 304 |     # Description of argument(s): | 
 | 305 |     # component_name    Component name (e.g. "cpu0_core0", "dimm0", etc.). | 
 | 306 |  | 
 | 307 |     # Example of IPMI SDR elist output. | 
 | 308 |     # BootProgress     | 03h | ok  | 34.2 | | 
 | 309 |     # OperatingSystemS | 05h | ok  | 35.1 | boot completed - device not specified | 
 | 310 |     # AttemptsLeft     | 07h | ok  | 34.1 | | 
 | 311 |     # occ0             | 08h | ok  | 210.1 | Device Disabled | 
 | 312 |     # occ1             | 09h | ok  | 210.2 | Device Disabled | 
 | 313 |     # cpu0_core0       | 12h | ok  | 208.1 | Presence detected | 
 | 314 |     # cpu0_core1       | 15h | ok  | 208.2 | Disabled | 
 | 315 |     # cpu0_core2       | 18h | ok  | 208.3 | Presence detected | 
 | 316 |     # dimm0            | A6h | ok  | 32.1 | Presence Detected | 
 | 317 |     # dimm1            | A8h | ok  | 32.2 | Presence Detected | 
 | 318 |     # dimm2            | AAh | ok  | 32.9 | Presence Detected | 
 | 319 |     # gv100card0       | C5h | ok  | 216.1 | 0 unspecified | 
 | 320 |     # gv100card1       | C8h | ok  | 216.2 | 0 unspecified | 
 | 321 |     # TPMEnable        | D7h | ok  |  3.3 | State Asserted | 
 | 322 |     # auto_reboot      | DAh | ok  | 33.2 | State Asserted | 
 | 323 |     # volatile         | DBh | ok  | 33.1 | State Deasserted | 
 | 324 |  | 
 | 325 |     ${sdr_elist_output}=  Run IPMI Standard Command  sdr elist | 
 | 326 |     ${sdr_component_line}= | 
 | 327 |     ...  Get Lines Containing String  ${sdr_elist_output}  ${component_name} | 
 | 328 |     ...  case-insensitive | 
 | 329 |  | 
 | 330 |     ${presence_ipmi}=  Fetch From Right  ${sdr_component_line}  | | 
 | 331 |     ${presence_ipmi}=  Strip String  ${presence_ipmi} | 
 | 332 |     [Return]  ${presence_ipmi} | 
 | 333 |  | 
 | 334 |  | 
 | 335 | Verify SDR | 
 | 336 |     [Documentation]  Verify IPMI sensor data record for given component | 
| George Keishing | d6bc1c1 | 2019-03-08 12:59:29 -0600 | [diff] [blame] | 337 |     ...  with Redfish. | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 338 |     [Arguments]  ${component_name} | 
 | 339 |  | 
 | 340 |     # Description of argument(s): | 
 | 341 |     # component_name    Component name (e.g. "cpu0/core0", "dimm0", etc.). | 
 | 342 |  | 
 | 343 |     ${presence_rest}=  Read Attribute | 
 | 344 |     ...  ${HOST_INVENTORY_URI}system/chassis/motherboard/${component_name} | 
 | 345 |     ...  Present | 
 | 346 |     ${functional_rest}=  Read Attribute | 
 | 347 |     ...  ${HOST_INVENTORY_URI}system/chassis/motherboard/${component_name} | 
 | 348 |     ...  Functional | 
 | 349 |  | 
 | 350 |     # Replace "/" with "_" if there is any "/" in component name. | 
 | 351 |     # e.g. cpu0/core0 to cpu0_core0 | 
 | 352 |     ${component_name}=  Replace String  ${component_name}  /  _ | 
 | 353 |     ${presence_ipmi}=  Get SDR Presence Via IPMI  ${component_name}${SPACE} | 
 | 354 |  | 
| Tim Lee | ada4b0c | 2021-08-25 14:52:42 +0800 | [diff] [blame] | 355 |     Run Keyword If  '${presence_ipmi}' == 'Disabled' or '${presence_ipmi}' == '' | 
| George Keishing | 9a75e68 | 2019-10-24 00:22:08 -0500 | [diff] [blame] | 356 |     ...    Should Be True  ${presence_rest} == ${0} and ${functional_rest} == ${0} | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 357 |     ...  ELSE IF  '${presence_ipmi}' == 'Presence Detected' or '${presence_ipmi}' == 'Presence detected' | 
| George Keishing | 9a75e68 | 2019-10-24 00:22:08 -0500 | [diff] [blame] | 358 |     ...    Should Be True  ${presence_rest} == ${1} and ${functional_rest} == ${1} | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 359 |     ...  ELSE IF  '${presence_ipmi}' == 'State Asserted' | 
| George Keishing | 9a75e68 | 2019-10-24 00:22:08 -0500 | [diff] [blame] | 360 |     ...    Should Be True  ${presence_rest} == ${1} and ${functional_rest} == ${1} | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 361 |     ...  ELSE IF  '${presence_ipmi}' == 'State Deasserted' | 
| George Keishing | 9a75e68 | 2019-10-24 00:22:08 -0500 | [diff] [blame] | 362 |     ...    Should Be True  ${presence_rest} == ${1} and ${functional_rest} == ${0} | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 363 |     ...  ELSE  Fail  msg=Invalid Presence${presence_ipmi} | 
 | 364 |  | 
 | 365 |  | 
 | 366 | Test SDR Info | 
 | 367 |     [Documentation]  Test SDR info for given component. | 
 | 368 |     [Arguments]  ${component_name} | 
 | 369 |  | 
 | 370 |     # Description of argument(s): | 
 | 371 |     # component_name    Component name (e.g. "core", "dimm", etc.). | 
 | 372 |  | 
 | 373 |     ${component_uri_list}=  Get Component URIs  ${component_name} | 
| Sushil Singh | ab209cd | 2020-07-01 09:01:14 -0500 | [diff] [blame] | 374 |  | 
 | 375 |     FOR  ${uri}  IN  @{component_uri_list} | 
 | 376 |       ${component_name}=  Fetch From Right  ${uri}  motherboard/ | 
 | 377 |       Log To Console  ${component_name} | 
 | 378 |       Verify SDR  ${component_name} | 
 | 379 |     END | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 380 |  | 
| nagarjunb22 | 87138e6 | 2022-04-19 16:49:16 +0530 | [diff] [blame] | 381 | Fetch IPMI Command Support Status | 
 | 382 |     [Documentation]  Return yes if IPMI command is supported. | 
 | 383 |     [Arguments]  ${ipmi_cmd} | 
 | 384 |  | 
 | 385 |     # Description of argument(s): | 
 | 386 |     # ipmi_cmd    IPMI command. | 
 | 387 |  | 
 | 388 |     ${resp}=  Run External IPMI Raw Command  ${ipmi_cmd}  fail_on_err=0 | 
 | 389 |     ${resp_code_match}=  Get Regexp Matches  ${resp}  rsp=0xc1 | 
 | 390 |  | 
 | 391 |     ${cmd_support}=  Set Variable If  ${resp_code_match} != []  no  yes | 
 | 392 |  | 
 | 393 |     [Return]  ${cmd_support} | 
 | 394 |  | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 395 |  | 
| nagarjunb22 | 8ea859e | 2022-07-12 21:39:51 +0530 | [diff] [blame] | 396 | Get SDR Record ID | 
 | 397 |     [Documentation]  Fetch one record ID from SDR elist IPMI cmd response. | 
 | 398 |  | 
 | 399 |     ${resp}=  Run External IPMI Standard Command  sdr elist | 
 | 400 |     ${record_id}=  Get Regexp Matches  ${resp}  \\|\\s+([0-9]+)h\\s+\\|  1 | 
 | 401 |  | 
 | 402 |     [Return]  ${record_id[0]} | 
 | 403 |  | 
 | 404 |  | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 405 | Suite Setup Execution | 
 | 406 |     [Documentation]  Do the initial suite setup. | 
 | 407 |  | 
| George Keishing | 2d0edad | 2021-08-18 11:44:10 -0500 | [diff] [blame] | 408 |     Redfish.Login | 
| Rahul Maheshwari | b6ebe4c | 2019-07-17 02:02:17 -0500 | [diff] [blame] | 409 |     Redfish Power On  stack_mode=skip  quiet=1 | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 410 |  | 
| nagarjunb22 | 8ea859e | 2022-07-12 21:39:51 +0530 | [diff] [blame] | 411 |     ${record_id}=  Get SDR Record ID | 
 | 412 |     Set Suite Variable  ${record_id} | 
 | 413 |  | 
| Nagarjun B | 1168d69 | 2023-02-16 16:29:57 +0530 | [diff] [blame] | 414 |     # If REST is supported, then the uri_list will be returned. | 
 | 415 |     ${resp}=  OpenBMC Get Request  ${OPENBMC_BASE_URI} | 
 | 416 |     IF  '${resp.status_code}' == '${HTTP_OK}' | 
 | 417 |       ${uri_list}=  Read Properties  ${OPENBMC_BASE_URI}list | 
 | 418 |       Set Suite Variable  ${SYSTEM_URI}  ${uri_list} | 
 | 419 |       Log  ${uri_list} | 
 | 420 |     END | 
| Rahul Maheshwari | 77ab160 | 2018-02-28 07:21:55 -0600 | [diff] [blame] | 421 |  | 
 | 422 |  | 
 | 423 | Test Teardown Execution | 
 | 424 |     [Documentation]  Do the post test teardown. | 
 | 425 |  | 
 | 426 |     FFDC On Test Case Fail |