| Steven Sombar | c90c8e2 | 2019-05-21 11:28:48 -0500 | [diff] [blame] | 1 | *** Settings *** | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 2 | Documentation       Inventory of hardware FRUs under redfish. | 
| Steven Sombar | c90c8e2 | 2019-05-21 11:28:48 -0500 | [diff] [blame] | 3 |  | 
|  | 4 | Resource            ../../lib/bmc_redfish_resource.robot | 
|  | 5 | Resource            ../../lib/bmc_redfish_utils.robot | 
|  | 6 | Resource            ../../lib/openbmc_ffdc.robot | 
| Steven Sombar | bccfd51 | 2019-06-05 15:50:35 -0500 | [diff] [blame] | 7 | Library             ../../lib/gen_robot_valid.py | 
| Steven Sombar | c90c8e2 | 2019-05-21 11:28:48 -0500 | [diff] [blame] | 8 |  | 
|  | 9 | Suite Setup         Suite Setup Execution | 
|  | 10 | Suite Teardown      Suite Teardown Execution | 
| Steven Sombar | ecf10e3 | 2019-07-25 08:51:00 -0500 | [diff] [blame] | 11 | Test Setup          Printn | 
| Steven Sombar | c90c8e2 | 2019-05-21 11:28:48 -0500 | [diff] [blame] | 12 | Test Teardown       Test Teardown Execution | 
|  | 13 |  | 
|  | 14 | *** Variables *** | 
|  | 15 |  | 
|  | 16 | # The passing criteria.  Must have at least this many. | 
| Steven Sombar | bccfd51 | 2019-06-05 15:50:35 -0500 | [diff] [blame] | 17 | ${min_num_dimms}   2 | 
|  | 18 | ${min_num_cpus}    1 | 
| Steven Sombar | 815fa63 | 2019-07-16 14:24:40 -0500 | [diff] [blame] | 19 | ${min_num_cores}   18 | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 20 | ${min_num_power_supplies}  1 | 
| Steven Sombar | c90c8e2 | 2019-05-21 11:28:48 -0500 | [diff] [blame] | 21 |  | 
|  | 22 |  | 
|  | 23 | *** Test Cases *** | 
|  | 24 |  | 
| Steven Sombar | ecf10e3 | 2019-07-25 08:51:00 -0500 | [diff] [blame] | 25 |  | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 26 | Verify CPU And Core Count | 
|  | 27 | [Documentation]  Get the total number of CPUs and cores in the system. | 
|  | 28 | ...              Verify counts are above minimums. | 
|  | 29 | [Tags]  Verify_CPU_And_Core_Count | 
| Steven Sombar | c90c8e2 | 2019-05-21 11:28:48 -0500 | [diff] [blame] | 30 |  | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 31 | # Select only CPUs with Health = "OK". | 
|  | 32 | ${cpus_ok}=  Filter Struct  ${cpu_info}  [('Health', 'OK')] | 
|  | 33 | ${num_cpus}=   Get Length  ${cpus_ok} | 
| Steven Sombar | c90c8e2 | 2019-05-21 11:28:48 -0500 | [diff] [blame] | 34 |  | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 35 | Rprint Vars  num_cpus  min_num_cpus | 
| Steven Sombar | c90c8e2 | 2019-05-21 11:28:48 -0500 | [diff] [blame] | 36 |  | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 37 | # Assert that num_cpus is greater than or equal to min_num_cpus. | 
|  | 38 | Valid Range  num_cpus  ${min_num_cpus} | 
| Steven Sombar | 815fa63 | 2019-07-16 14:24:40 -0500 | [diff] [blame] | 39 |  | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 40 | # Get the number of cores. | 
| Steven Sombar | 815fa63 | 2019-07-16 14:24:40 -0500 | [diff] [blame] | 41 | ${total_num_cores}=  Set Variable  ${0} | 
| Sushma M M | d27fc31 | 2020-06-19 08:26:50 -0500 | [diff] [blame] | 42 | FOR  ${cpu}  IN  @{cpus_ok} | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 43 | ${cores}=   Get CPU TotalCores  ${cpu} | 
|  | 44 | ${total_num_cores}=  Evaluate  $total_num_cores + ${cores} | 
| Steven Sombar | 815fa63 | 2019-07-16 14:24:40 -0500 | [diff] [blame] | 45 | END | 
|  | 46 |  | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 47 | Rprint Vars  total_num_cores  min_num_cores | 
| Steven Sombar | ecf10e3 | 2019-07-25 08:51:00 -0500 | [diff] [blame] | 48 |  | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 49 | # Assert that total_num_cores is greater than or equal to | 
|  | 50 | # min_num_cores. | 
|  | 51 | Valid Range  total_num_cores  ${min_num_cores} | 
| Steven Sombar | 815fa63 | 2019-07-16 14:24:40 -0500 | [diff] [blame] | 52 |  | 
|  | 53 |  | 
| Steven Sombar | c90c8e2 | 2019-05-21 11:28:48 -0500 | [diff] [blame] | 54 | Get Memory Inventory Via Redfish And Verify | 
|  | 55 | [Documentation]  Get the number of DIMMs that are functional and enabled. | 
|  | 56 | [Tags]  Get_Memory_Inventory_Via_Redfish_And_Verify | 
|  | 57 |  | 
| Steven Sombar | bccfd51 | 2019-06-05 15:50:35 -0500 | [diff] [blame] | 58 | Verify FRU Inventory Minimums  Memory  ${min_num_dimms} | 
|  | 59 |  | 
|  | 60 |  | 
| Steven Sombar | c5d6584 | 2019-08-21 15:39:08 -0500 | [diff] [blame] | 61 | Get Memory Summary State And Verify Enabled | 
|  | 62 | [Documentation]  Check that the state of the MemorySummary attribute | 
|  | 63 | ...              under /redfish/v1/Systems/system is 'Enabled'. | 
|  | 64 | [Tags]  Get_Memory_Summary_State_And_Verify_Enabled | 
|  | 65 |  | 
|  | 66 | ${status}=  Redfish.Get Attribute  ${SYSTEM_BASE_URI}  MemorySummary | 
|  | 67 | ${memory_summary_state}=  Set Variable  ${status['Status']['State']} | 
|  | 68 | Rprint Vars  memory_summary_state | 
|  | 69 |  | 
|  | 70 | Should Be Equal As Strings  Enabled  ${memory_summary_state} | 
|  | 71 | ...  msg=MemorySummary State is not 'Enabled'. | 
|  | 72 |  | 
|  | 73 |  | 
| Steven Sombar | 815fa63 | 2019-07-16 14:24:40 -0500 | [diff] [blame] | 74 | Get System Serial And Verify Populated | 
|  | 75 | [Documentation]  Check that the System SerialNumber is non-blank. | 
|  | 76 | [Tags]  Get_System_Serial_And_Verify_Populated | 
| Steven Sombar | bccfd51 | 2019-06-05 15:50:35 -0500 | [diff] [blame] | 77 |  | 
|  | 78 | ${serial_number}=  Redfish.Get Attribute  ${SYSTEM_BASE_URI}  SerialNumber | 
| Michael Walsh | e7edb22 | 2019-08-19 17:39:38 -0500 | [diff] [blame] | 79 | Valid Value  serial_number | 
| Steven Sombar | bccfd51 | 2019-06-05 15:50:35 -0500 | [diff] [blame] | 80 | Rprint Vars  serial_number | 
|  | 81 |  | 
|  | 82 |  | 
|  | 83 | Get Model And Verify Populated | 
|  | 84 | [Documentation]  Check that the Model is non-blank. | 
|  | 85 | [Tags]  Get_Model_And_Verify_Populated | 
|  | 86 |  | 
|  | 87 | ${model}=  Redfish.Get Attribute  ${SYSTEM_BASE_URI}  Model | 
| Michael Walsh | e7edb22 | 2019-08-19 17:39:38 -0500 | [diff] [blame] | 88 | Valid Value  model | 
| Steven Sombar | bccfd51 | 2019-06-05 15:50:35 -0500 | [diff] [blame] | 89 | Rprint Vars  model | 
| Steven Sombar | c90c8e2 | 2019-05-21 11:28:48 -0500 | [diff] [blame] | 90 |  | 
|  | 91 |  | 
| Steven Sombar | 815fa63 | 2019-07-16 14:24:40 -0500 | [diff] [blame] | 92 | Get Available Power Supplies And Verify | 
|  | 93 | [Documentation]  Get the number of functional power supplies and | 
|  | 94 | ...              verify that it is at or above the minimum. | 
|  | 95 | [Tags]  Get_Available_Power_Supplies_And_Verify | 
|  | 96 |  | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 97 | # Select only power supplies with Health = "OK". | 
|  | 98 | ${power_supplies_ok}=  Filter Struct  ${power_supplies}  [('Health', 'OK')] | 
| Steven Sombar | 815fa63 | 2019-07-16 14:24:40 -0500 | [diff] [blame] | 99 |  | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 100 | # Count the power supplies that are Enabled or StandbyOffline. | 
|  | 101 | ${total_num_supplies}=  Set Variable  ${0} | 
| Sushma M M | d27fc31 | 2020-06-19 08:26:50 -0500 | [diff] [blame] | 102 | FOR  ${power_supply}  IN  @{power_supplies_ok} | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 103 | # Example of power_supply: | 
|  | 104 | # power_supply = {'@odata.id': '/redfish/v1/Chassis/chassis/Power#/PowerSupplies/0', | 
|  | 105 | # 'Manufacturer': '', 'MemberId': 'powersupply0', 'Model': '2100', 'Name': | 
|  | 106 | # 'powersupply0', 'PartNumber': 'PNPWR123', 'PowerInputWatts': 394.0, | 
|  | 107 | # 'SerialNumber': '75B12W', 'Status': {'Health': 'OK', 'State': 'Enabled'}} | 
|  | 108 | ${state}=  Set Variable  ${power_supply['Status']['State']} | 
|  | 109 | ${good_state}=  Evaluate | 
|  | 110 | ...  any(x in '${state}' for x in ('Enabled', 'StandbyOffline')) | 
|  | 111 | Run Keyword If  not ${good_state}  Continue For Loop | 
|  | 112 | ${total_num_supplies}=  Evaluate  $total_num_supplies + ${1} | 
| Steven Sombar | 815fa63 | 2019-07-16 14:24:40 -0500 | [diff] [blame] | 113 | END | 
|  | 114 |  | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 115 | Rprint Vars  total_num_supplies  min_num_power_supplies | 
| Steven Sombar | 815fa63 | 2019-07-16 14:24:40 -0500 | [diff] [blame] | 116 |  | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 117 | Valid Range  total_num_supplies  ${min_num_power_supplies} | 
| Steven Sombar | 815fa63 | 2019-07-16 14:24:40 -0500 | [diff] [blame] | 118 |  | 
|  | 119 |  | 
|  | 120 | Get Motherboard Serial And Verify Populated | 
|  | 121 | [Documentation]  Check that the Motherboard SerialNumber is non-blank. | 
|  | 122 | [Tags]  Get_Motherboard_Serial_And_Verify_Populated | 
|  | 123 |  | 
|  | 124 | ${serial_number}=  Redfish.Get Attribute | 
|  | 125 | ...  ${REDFISH_CHASSIS_URI}motherboard  SerialNumber | 
| Michael Walsh | e7edb22 | 2019-08-19 17:39:38 -0500 | [diff] [blame] | 126 | Valid Value  serial_number | 
| Steven Sombar | 815fa63 | 2019-07-16 14:24:40 -0500 | [diff] [blame] | 127 | Rprint Vars  serial_number | 
|  | 128 |  | 
|  | 129 |  | 
| Steven Sombar | c2ace20 | 2019-09-04 13:17:32 -0500 | [diff] [blame] | 130 | Verify Motherboard Manufacturer Field Value Populated | 
|  | 131 | [Documentation]  Check that the Motherboard manufacturer is non-blank. | 
|  | 132 | [Tags]  Verify_Motherboard_Manufacturer_Field_Value_Populated | 
|  | 133 |  | 
|  | 134 | ${motherboard_manufacturer}=  Redfish.Get Attribute | 
|  | 135 | ...  ${REDFISH_CHASSIS_URI}motherboard  Manufacturer | 
|  | 136 | Valid Value  motherboard_manufacturer | 
|  | 137 |  | 
|  | 138 |  | 
|  | 139 | Verify Motherboard Partnumber Field Value Populated | 
|  | 140 | [Documentation]  Check that the Motherboard partnumber is non-blank. | 
|  | 141 | [Tags]  Verify_Motherboard_Partnumber_Field_Value_Populated | 
|  | 142 |  | 
|  | 143 | ${motherboard_part_number}=  Redfish.Get Attribute | 
|  | 144 | ...  ${REDFISH_CHASSIS_URI}motherboard  PartNumber | 
|  | 145 | Valid Value  motherboard_part_number | 
|  | 146 |  | 
|  | 147 |  | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 148 | Check GPU States When Power On | 
|  | 149 | [Documentation]  Check the State of each of the GPUs | 
|  | 150 | ...              in the system.  A system may have 0-6 GPUs. | 
|  | 151 | [Tags]  Check_GPU_States_When_Power_On | 
| Steven Sombar | ecf10e3 | 2019-07-25 08:51:00 -0500 | [diff] [blame] | 152 |  | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 153 | # System was powered-on in Suite Setup. | 
|  | 154 | GPU State Check | 
| Steven Sombar | ecf10e3 | 2019-07-25 08:51:00 -0500 | [diff] [blame] | 155 |  | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 156 |  | 
|  | 157 | Check GPU States When Power Off | 
|  | 158 | [Documentation]  Check the State of the GPUs when power is Off. | 
|  | 159 | [Tags]  Check_GPU_States_When_Power_Off | 
|  | 160 |  | 
|  | 161 | Redfish Power Off | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 162 | GPU State Check | 
| Steven Sombar | ecf10e3 | 2019-07-25 08:51:00 -0500 | [diff] [blame] | 163 |  | 
|  | 164 |  | 
| Steven Sombar | c90c8e2 | 2019-05-21 11:28:48 -0500 | [diff] [blame] | 165 | *** Keywords *** | 
|  | 166 |  | 
|  | 167 |  | 
| Steven Sombar | ecf10e3 | 2019-07-25 08:51:00 -0500 | [diff] [blame] | 168 | Get CPU TotalCores | 
|  | 169 | [Documentation]  Return the TotalCores of a CPU. | 
|  | 170 | ...              Return 0 if this attribute is missing or NONE. | 
|  | 171 | [Arguments]      ${processor} | 
|  | 172 |  | 
|  | 173 | # Description of Argument(s): | 
|  | 174 | # processor     The Redfish URI of a CPU (e.g. | 
|  | 175 | #               "/redfish/v1/Systems/system/Processors/cpu0"). | 
|  | 176 |  | 
|  | 177 | ${total_cores}=  Redfish.Get Attribute  ${processor}  TotalCores | 
|  | 178 | Return From Keyword If  ${total_cores} is ${NONE}  ${0} | 
|  | 179 | [Return]  ${total_cores} | 
|  | 180 |  | 
|  | 181 |  | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 182 | GPU State Check | 
|  | 183 | [Documentation]  The state of every "OK" GPU should be | 
|  | 184 | ...              "Absent", "Enabled", or "UnavailableOffline". | 
|  | 185 |  | 
|  | 186 | # Select only GPUs with Health = "OK". | 
|  | 187 | ${gpus_ok}=  Filter Struct  ${gpu_info}  [('Health', 'OK')] | 
|  | 188 |  | 
| Sushma M M | d27fc31 | 2020-06-19 08:26:50 -0500 | [diff] [blame] | 189 | FOR  ${gpu}  IN  @{gpus_ok} | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 190 | ${status}=  Redfish.Get Attribute  ${gpu}  Status | 
|  | 191 | ${state}=  Set Variable  ${status['State']} | 
|  | 192 | ${good_state}=  Evaluate | 
|  | 193 | ...  any(x in '${state}' for x in ('Absent', 'Enabled', 'UnavailableOffline')) | 
|  | 194 | Rprint Vars  gpu  state | 
|  | 195 | Run Keyword If  not ${good_state}  Fail | 
|  | 196 | ...  msg=GPU State is not Absent, Enabled, or UnavailableOffline. | 
|  | 197 | END | 
|  | 198 |  | 
|  | 199 |  | 
|  | 200 | Get Inventory URIs | 
|  | 201 | [Documentation]  Get and return a tuple of lists of URIs for CPU, | 
|  | 202 | ...              GPU and PowerSupplies. | 
|  | 203 |  | 
|  | 204 | ${processor_info}=  Redfish_Utils.Enumerate Request | 
|  | 205 | ...  ${SYSTEM_BASE_URI}Processors  return_json=0 | 
|  | 206 |  | 
|  | 207 | ${cpu_info}=  Filter Struct  ${processor_info} | 
|  | 208 | ...  [('ProcessorType', 'CPU')]  regex=1 | 
|  | 209 |  | 
|  | 210 | ${gpu_info}=  Filter Struct  ${processor_info} | 
|  | 211 | ...  [('ProcessorType', 'Accelerator')]  regex=1 | 
|  | 212 |  | 
|  | 213 | ${power_supplies}=  Redfish.Get Attribute | 
|  | 214 | ...  ${REDFISH_CHASSIS_POWER_URI}  PowerSupplies | 
|  | 215 |  | 
|  | 216 | [Return]  ${cpu_info}  ${gpu_info}  ${power_supplies} | 
|  | 217 |  | 
|  | 218 |  | 
| Steven Sombar | bccfd51 | 2019-06-05 15:50:35 -0500 | [diff] [blame] | 219 | Verify FRU Inventory Minimums | 
| George Keishing | 3292d4a | 2019-06-19 02:04:53 -0500 | [diff] [blame] | 220 | [Documentation]  Verify a minimum number of FRUs. | 
| Steven Sombar | bccfd51 | 2019-06-05 15:50:35 -0500 | [diff] [blame] | 221 | [Arguments]  ${fru_type}  ${min_num_frus} | 
| Steven Sombar | c90c8e2 | 2019-05-21 11:28:48 -0500 | [diff] [blame] | 222 |  | 
|  | 223 | # Description of Argument(s): | 
| Steven Sombar | bccfd51 | 2019-06-05 15:50:35 -0500 | [diff] [blame] | 224 | # fru_type      The type of FRU (e.g. "Processors", "Memory", etc.). | 
|  | 225 | # min_num_frus  The minimum acceptable number of FRUs found. | 
| Steven Sombar | c90c8e2 | 2019-05-21 11:28:48 -0500 | [diff] [blame] | 226 |  | 
| Steven Sombar | bccfd51 | 2019-06-05 15:50:35 -0500 | [diff] [blame] | 227 | # A valid FRU  will have a "State" key of "Enabled" and a "Health" key | 
|  | 228 | # of "OK". | 
| Steven Sombar | c90c8e2 | 2019-05-21 11:28:48 -0500 | [diff] [blame] | 229 |  | 
| Steven Sombar | bccfd51 | 2019-06-05 15:50:35 -0500 | [diff] [blame] | 230 | ${status}  ${num_valid_frus}=  Run Key U  Get Num Valid FRUs \ ${fru_type} | 
| Steven Sombar | c90c8e2 | 2019-05-21 11:28:48 -0500 | [diff] [blame] | 231 |  | 
| Steven Sombar | ecf10e3 | 2019-07-25 08:51:00 -0500 | [diff] [blame] | 232 | Rprint Vars  fru_type  num_valid_frus  min_num_frus | 
|  | 233 |  | 
| Steven Sombar | bccfd51 | 2019-06-05 15:50:35 -0500 | [diff] [blame] | 234 | Return From Keyword If  ${num_valid_frus} >= ${min_num_frus} | 
|  | 235 | Fail  Too few "${fru_type}" FRUs found, found only ${num_valid_frus}. | 
| Steven Sombar | c90c8e2 | 2019-05-21 11:28:48 -0500 | [diff] [blame] | 236 |  | 
|  | 237 |  | 
|  | 238 | Suite Teardown Execution | 
|  | 239 | [Documentation]  Do the post suite teardown. | 
|  | 240 |  | 
|  | 241 | Redfish.Logout | 
|  | 242 |  | 
|  | 243 |  | 
|  | 244 | Suite Setup Execution | 
|  | 245 | [Documentation]  Do test case setup tasks. | 
|  | 246 |  | 
|  | 247 | Redfish.Login | 
| George Keishing | 07fb41f | 2020-06-16 08:09:19 -0500 | [diff] [blame] | 248 | Redfish Power On  stack_mode=skip | 
| Steven Sombar | ecf10e3 | 2019-07-25 08:51:00 -0500 | [diff] [blame] | 249 |  | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 250 | ${cpu_info}  ${gpu_info}  ${power_supplies}=  Get Inventory URIs | 
| Steven Sombar | ecf10e3 | 2019-07-25 08:51:00 -0500 | [diff] [blame] | 251 |  | 
| Steven Sombar | b76d4df | 2019-08-06 15:03:47 -0500 | [diff] [blame] | 252 | Set Suite Variable  ${cpu_info} | 
|  | 253 | Set Suite Variable  ${gpu_info} | 
|  | 254 | Set Suite Variable  ${power_supplies} | 
| Steven Sombar | c90c8e2 | 2019-05-21 11:28:48 -0500 | [diff] [blame] | 255 |  | 
|  | 256 |  | 
|  | 257 | Test Teardown Execution | 
|  | 258 | [Documentation]  Do the post test teardown. | 
|  | 259 |  | 
|  | 260 | FFDC On Test Case Fail |