1*** Settings *** 2Documentation Test IPMI sensor IDs. 3 4Resource ../lib/rest_client.robot 5Resource ../lib/ipmi_client.robot 6Resource ../lib/openbmc_ffdc.robot 7Resource ../lib/boot_utils.robot 8Resource ../lib/bmc_redfish_resource.robot 9Library ../lib/ipmi_utils.py 10 11Suite setup Suite Setup Execution 12Test Teardown Test Teardown Execution 13 14Force Tags SDR_Test 15 16 17*** Test Cases *** 18 19Verify SDR Info 20 [Documentation] Verify sdr info command output. 21 [Tags] Verify_SDR_Info 22 # Example of SDR info command output: 23 # SDR Version : 0x51 24 # Record Count : 216 25 # Free Space : unspecified 26 # Most recent Addition : 27 # Most recent Erase : 28 # SDR overflow : no 29 # SDR Repository Update Support : unspecified 30 # Delete SDR supported : no 31 # Partial Add SDR supported : no 32 # Reserve SDR repository supported : no 33 # SDR Repository Alloc info supported : no 34 35 ${sdr_info}= Get SDR Info 36 Should Be Equal ${sdr_info['sdr_version']} 0x51 37 38 # Get sensor count from "sdr elist all" command output. 39 ${sensor_count}= Get Sensor Count 40 Should Be Equal As Strings 41 ... ${sdr_info['record_count']} ${sensor_count} 42 43 Should Be Equal ${sdr_info['free_space']} unspecified 44 Should Be Equal ${sdr_info['most_recent_addition']} ${EMPTY} 45 Should Be Equal ${sdr_info['most_recent_erase']} ${EMPTY} 46 Should Be Equal ${sdr_info['sdr_overflow']} no 47 Should Be Equal ${sdr_info['sdr_repository_update_support']} unspecified 48 Should Be Equal ${sdr_info['delete_sdr_supported']} no 49 Should Be Equal ${sdr_info['partial_add_sdr_supported']} no 50 Should Be Equal ${sdr_info['reserve_sdr_repository_supported']} no 51 Should Be Equal ${sdr_info['sdr_repository_alloc_info_supported']} no 52 53 54Test CPU Core SDR Info At Power On 55 [Documentation] Verify CPU core SDR info via IPMI and Redfish at power on. 56 57 [Tags] Test_CPU_Core_SDR_Info_At_Power_On 58 59 Redfish Power On stack_mode=skip quiet=1 60 Test SDR Info core 61 62 63Test DIMM SDR Info At Power On 64 [Documentation] Verify DIMM SDR info via IPMI and Redfish at power on. 65 66 [Tags] Test_DIMM_SDR_Info_At_Power_On 67 68 Redfish Power On stack_mode=skip quiet=1 69 Test SDR Info dimm 70 71 72Test GPU SDR Info At Power On 73 [Documentation] Verify GPU SDR info via IPMI and Redfish at power on. 74 75 [Tags] Test_GPU_SDR_Info_At_Power_On 76 77 Redfish Power On stack_mode=skip quiet=1 78 Test SDR Info gv100card 79 80 81Test CPU Core SDR Info At Power Off 82 [Documentation] Verify CPU core SDR info via IPMI and Redfish at power off. 83 84 [Tags] Test_CPU_Core_SDR_Info_At_Power_Off 85 86 Redfish Hard Power Off stack_mode=skip quiet=1 87 Test SDR Info core 88 89 90Test DIMM SDR Info At Power Off 91 [Documentation] Verify DIMM SDR info via IPMI and Redfish at power off. 92 93 [Tags] Test_DIMM_SDR_Info_At_Power_Off 94 95 Redfish Hard Power Off stack_mode=skip quiet=1 96 Test SDR Info dimm 97 98 99Test Turbo Allowed SDR Info 100 [Documentation] Verify turbo allowed SDR info via IPMI and Redfish. 101 [Tags] Test_Turbo_Allowed_SDR_Info 102 103 ${component_uri_list}= Get Component URIs turbo_allowed 104 ${component_uri}= Get From List ${component_uri_list} 0 105 ${state_rest}= Read Attribute ${component_uri} TurboAllowed 106 107 ${state_ipmi}= Get SDR Presence Via IPMI turbo_allowed${SPACE} 108 109 Run Keyword If '${state_ipmi}' == 'Disabled' 110 ... Should Be True ${state_rest} == ${0} 111 ... ELSE IF '${state_ipmi}' == 'State Asserted' 112 ... Should Be True ${state_rest} == ${1} 113 114 115Test Auto Reboot SDR Info 116 [Documentation] Verify auto reboot SDR info via IPMI and Redfish. 117 [Tags] Test_Auto_Reboot_SDR_Info 118 119 120 ${component_uri_list}= Get Component URIs auto_reboot 121 ${component_uri}= Get From List ${component_uri_list} 0 122 ${state_rest}= Read Attribute ${component_uri} AutoReboot 123 124 ${state_ipmi}= Get SDR Presence Via IPMI auto_reboot${SPACE} 125 126 Run Keyword If '${state_ipmi}' == 'Disabled' 127 ... Should Be True ${state_rest} == ${0} 128 ... ELSE IF '${state_ipmi}' == 'State Asserted' 129 ... Should Be True ${state_rest} == ${1} 130 131 132Test TPM Enable SDR Info 133 [Documentation] Verify auto reboot SDR info via IPMI and Redfish. 134 [Tags] Test_TPM_Enable_SDR_Info 135 136 137 ${component_uri_list}= Get Component URIs TPMEnable 138 ${component_uri}= Get From List ${component_uri_list} 0 139 ${state_rest}= Read Attribute ${component_uri} TPMEnable 140 141 ${state_ipmi}= Get SDR Presence Via IPMI auto_reboot${SPACE} 142 143 Run Keyword If '${state_ipmi}' == 'Disabled' 144 ... Should Be True ${state_rest} == ${0} 145 ... ELSE IF '${state_ipmi}' == 'State Asserted' 146 ... Should Be True ${state_rest} == ${1} 147 148 149*** Keywords *** 150 151Get Sensor Count 152 [Documentation] Get sensors count using "sdr elist all" command. 153 # Example of "sdr elist all" command output: 154 # BootProgress | 03h | ok | 34.2 | 155 # OperatingSystemS | 05h | ok | 35.1 | 156 # AttemptsLeft | 07h | ok | 34.1 | 157 # occ0 | 08h | ok | 210.1 | Device Disabled 158 # occ1 | 09h | ok | 210.2 | Device Disabled 159 # p0_core0_temp | 11h | ns | 3.1 | Disabled 160 # cpu0_core0 | 12h | ok | 208.1 | Presence detected 161 # p0_core1_temp | 14h | ns | 3.2 | Disabled 162 # cpu0_core1 | 15h | ok | 208.2 | Presence detected 163 # p0_core2_temp | 17h | ns | 3.3 | Disabled 164 # .. 165 # .. 166 # .. 167 # .. 168 # .. 169 # .. 170 # fan3 | 00h | ns | 29.4 | Logical FRU @35h 171 # bmc | 00h | ns | 6.1 | Logical FRU @3Ch 172 # ethernet | 00h | ns | 1.1 | Logical FRU @46h 173 174 ${output}= Run IPMI Standard Command sdr elist all 175 ${sensor_list}= Split String ${output} \n 176 ${sensor_count}= Get Length ${sensor_list} 177 [Return] ${sensor_count} 178 179 180Get Component URIs 181 [Documentation] Get URIs for given component from given URIs 182 ... and return as a list. 183 [Arguments] ${component_name} ${uri_list}=${SYSTEM_URI} 184 185 # A sample result returned for the "core" component: 186 # /xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core0 187 # /xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core1 188 # /xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core10 189 # /xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core11 190 # /xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core12 191 # (etc.) 192 193 # Description of argument(s): 194 # component_name Component name (e.g. "core", "dimm", etc.). 195 # uri_list URI list. 196 197 ${component_uris}= Get Matches ${uri_list} 198 ... regexp=^.*[0-9a-z_].${component_name}\[0-9]*$ 199 [Return] ${component_uris} 200 201 202Get SDR Presence Via IPMI 203 [Documentation] Return presence info from IPMI sensor data record. 204 [Arguments] ${component_name} 205 206 # Description of argument(s): 207 # component_name Component name (e.g. "cpu0_core0", "dimm0", etc.). 208 209 # Example of IPMI SDR elist output. 210 # BootProgress | 03h | ok | 34.2 | 211 # OperatingSystemS | 05h | ok | 35.1 | boot completed - device not specified 212 # AttemptsLeft | 07h | ok | 34.1 | 213 # occ0 | 08h | ok | 210.1 | Device Disabled 214 # occ1 | 09h | ok | 210.2 | Device Disabled 215 # cpu0_core0 | 12h | ok | 208.1 | Presence detected 216 # cpu0_core1 | 15h | ok | 208.2 | Disabled 217 # cpu0_core2 | 18h | ok | 208.3 | Presence detected 218 # dimm0 | A6h | ok | 32.1 | Presence Detected 219 # dimm1 | A8h | ok | 32.2 | Presence Detected 220 # dimm2 | AAh | ok | 32.9 | Presence Detected 221 # gv100card0 | C5h | ok | 216.1 | 0 unspecified 222 # gv100card1 | C8h | ok | 216.2 | 0 unspecified 223 # TPMEnable | D7h | ok | 3.3 | State Asserted 224 # auto_reboot | DAh | ok | 33.2 | State Asserted 225 # volatile | DBh | ok | 33.1 | State Deasserted 226 227 ${sdr_elist_output}= Run IPMI Standard Command sdr elist 228 ${sdr_component_line}= 229 ... Get Lines Containing String ${sdr_elist_output} ${component_name} 230 ... case-insensitive 231 232 ${presence_ipmi}= Fetch From Right ${sdr_component_line} | 233 ${presence_ipmi}= Strip String ${presence_ipmi} 234 [Return] ${presence_ipmi} 235 236 237Verify SDR 238 [Documentation] Verify IPMI sensor data record for given component 239 ... with Redfish. 240 [Arguments] ${component_name} 241 242 # Description of argument(s): 243 # component_name Component name (e.g. "cpu0/core0", "dimm0", etc.). 244 245 ${presence_rest}= Read Attribute 246 ... ${HOST_INVENTORY_URI}system/chassis/motherboard/${component_name} 247 ... Present 248 ${functional_rest}= Read Attribute 249 ... ${HOST_INVENTORY_URI}system/chassis/motherboard/${component_name} 250 ... Functional 251 252 # Replace "/" with "_" if there is any "/" in component name. 253 # e.g. cpu0/core0 to cpu0_core0 254 ${component_name}= Replace String ${component_name} / _ 255 ${presence_ipmi}= Get SDR Presence Via IPMI ${component_name}${SPACE} 256 257 Run Keyword If '${presence_ipmi}' == 'Disabled' 258 ... Should Be True ${presence_rest} == ${0} and ${functional_rest} == ${0} 259 ... ELSE IF '${presence_ipmi}' == 'Presence Detected' or '${presence_ipmi}' == 'Presence detected' 260 ... Should Be True ${presence_rest} == ${1} and ${functional_rest} == ${1} 261 ... ELSE IF '${presence_ipmi}' == 'State Asserted' 262 ... Should Be True ${presence_rest} == ${1} and ${functional_rest} == ${1} 263 ... ELSE IF '${presence_ipmi}' == 'State Deasserted' 264 ... Should Be True ${presence_rest} == ${1} and ${functional_rest} == ${0} 265 ... ELSE Fail msg=Invalid Presence${presence_ipmi} 266 267 268Test SDR Info 269 [Documentation] Test SDR info for given component. 270 [Arguments] ${component_name} 271 272 # Description of argument(s): 273 # component_name Component name (e.g. "core", "dimm", etc.). 274 275 ${component_uri_list}= Get Component URIs ${component_name} 276 : FOR ${uri} IN @{component_uri_list} 277 \ ${component_name}= Fetch From Right ${uri} motherboard/ 278 \ Log To Console ${component_name} 279 \ Verify SDR ${component_name} 280 281 282Suite Setup Execution 283 [Documentation] Do the initial suite setup. 284 285 Redfish Power On stack_mode=skip quiet=1 286 287 ${uri_list}= Read Properties ${OPENBMC_BASE_URI}list 288 Set Suite Variable ${SYSTEM_URI} ${uri_list} 289 Log ${uri_list} 290 291 292Test Teardown Execution 293 [Documentation] Do the post test teardown. 294 295 FFDC On Test Case Fail 296