| Marissa Garza | 839bc29 | 2021-11-10 10:58:27 -0600 | [diff] [blame] | 1 | *** Settings *** | 
 | 2 | Documentation       Get the system power supply readings and power mode settings. | 
 | 3 |  | 
 | 4 | Resource            ../../lib/bmc_redfish_resource.robot | 
 | 5 | Resource            ../../lib/bmc_redfish_utils.robot | 
 | 6 | Resource            ../../lib/openbmc_ffdc.robot | 
 | 7 | Library             ../../lib/gen_robot_valid.py | 
 | 8 |  | 
 | 9 | Suite Setup         Suite Setup Execution | 
 | 10 | Suite Teardown      Suite Teardown Execution | 
 | 11 | Test Setup          Printn | 
 | 12 | Test Teardown       Test Teardown Execution | 
 | 13 |  | 
 | 14 | *** Variables *** | 
 | 15 |  | 
 | 16 | # Power Mode Settings | 
 | 17 | @{VALID_POWER_MODES}    Static  PowerSaving  MaximumPerformance | 
 | 18 |  | 
 | 19 |  | 
 | 20 | *** Test Cases *** | 
 | 21 |  | 
 | 22 | Verify Current Power Mode Setting | 
 | 23 |     [Documentation]  Verify the current power mode setting. | 
 | 24 |     [Tags]  Verify_Current_Power_Mode_Setting | 
 | 25 |  | 
 | 26 |     # Example: | 
 | 27 |     # /redfish/v1/Systems/system | 
 | 28 |     # | 
 | 29 |     # "PartNumber": "", | 
 | 30 |     # "PowerMode": "MaximumPerformance", | 
 | 31 |     # "PowerMode@Redfish.AllowableValues": [ | 
 | 32 |     #    "Static", | 
 | 33 |     #    "MaximumPerformance", | 
 | 34 |     #    "PowerSaving" | 
 | 35 |     # ], | 
 | 36 |  | 
 | 37 |     ${current_power_mode}=  Redfish.Get Attribute  ${SYSTEM_BASE_URI}  PowerMode | 
 | 38 |     Rprint Vars  current_power_mode | 
 | 39 |  | 
 | 40 |     Valid Value  current_power_mode  valid_values=${VALID_POWER_MODES} | 
 | 41 |  | 
 | 42 |  | 
 | 43 | Verify Allowable Power Mode Settings | 
 | 44 |     [Documentation]  Verify the allowable power mode settings. | 
 | 45 |     [Tags]  Verify_Allowable_Power_Mode_Settings | 
 | 46 |  | 
 | 47 |     ${allowed_power_modes}=  Redfish.Get Attribute  ${SYSTEM_BASE_URI}  PowerMode@Redfish.AllowableValues | 
 | 48 |     Rprint Vars  allowed_power_modes | 
 | 49 |  | 
 | 50 |     Valid List  allowed_power_modes  valid_values=${VALID_POWER_MODES} | 
 | 51 |  | 
 | 52 |  | 
| George Keishing | 5236ec5 | 2022-01-31 12:07:58 -0600 | [diff] [blame] | 53 | Verify Allowable Power Mode Settings Switch At Runtime | 
| Marissa Garza | 839bc29 | 2021-11-10 10:58:27 -0600 | [diff] [blame] | 54 |     [Documentation]  Check the allowable power modes are set successfully at runtime. | 
 | 55 |     [Tags]  Verify_Allowable_Power_Mode_Settings_Switch_At_Runtime | 
 | 56 |     [Template]  Set and Verify Power Mode Switches | 
 | 57 |  | 
 | 58 |     # power_mode_type | 
 | 59 |     Static | 
 | 60 |     PowerSaving | 
 | 61 |     MaximumPerformance | 
 | 62 |  | 
 | 63 |  | 
 | 64 | Verify State Of PowerSubsystem PowerSupplies | 
 | 65 |     [Documentation]  Verify the state of the system's powersupplies is ok and enabled. | 
 | 66 |     [Tags]  Verify_State_Of_PowerSubsystem_PowerSupplies | 
 | 67 |  | 
 | 68 |     ${total_num_supplies}=  Get Total Number Of PowerSupplies | 
 | 69 |     Rprint Vars  total_num_supplies | 
 | 70 |  | 
 | 71 |     ${resp}=  Redfish.Get  ${REDFISH_CHASSIS_URI}/${CHASSIS_ID}/PowerSubsystem/PowerSupplies | 
 | 72 |     FOR  ${entry}  IN RANGE  0  ${total_num_supplies} | 
 | 73 |          ${resp_resource}=  Redfish.Get  ${resp.dict["Members"][${entry}]["@odata.id"]} | 
 | 74 |          # Example: | 
 | 75 |          # "Status": { | 
 | 76 |          #     "Health": "OK", | 
 | 77 |          #     "State": "Enabled" | 
 | 78 |          # }, | 
 | 79 |          Should Be Equal As Strings  ${resp_resource.dict["Status"]["Health"]}  OK | 
 | 80 |          Should Be Equal As Strings  ${resp_resource.dict["Status"]["State"]}  Enabled | 
 | 81 |     END | 
 | 82 |  | 
 | 83 |  | 
 | 84 | Verify PowerSubsystem Efficiency Percent For All PowerSupplies | 
 | 85 |     [Documentation]  Verify the efficiency percent for all powersupplies. | 
| George Keishing | 5236ec5 | 2022-01-31 12:07:58 -0600 | [diff] [blame] | 86 |     [Tags]  Verify_PowerSubsystem_Efficiency_Percent_For_All_PowerSupplies | 
| Marissa Garza | 839bc29 | 2021-11-10 10:58:27 -0600 | [diff] [blame] | 87 |  | 
 | 88 |     ${total_num_supplies}=  Get Total Number Of PowerSupplies | 
 | 89 |     Rprint Vars  total_num_supplies | 
 | 90 |  | 
 | 91 |     # Example output: | 
 | 92 |     # - Executing: get('/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply0') | 
 | 93 |     # resp_resource: | 
 | 94 |     #   [0]: | 
 | 95 |     #     [EfficiencyPercent]:                          90 | 
 | 96 |     # - Executing: get('/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply1') | 
 | 97 |     # resp_resource: | 
 | 98 |     #   [0]: | 
 | 99 |     #     [EfficiencyPercent]:                          90 | 
 | 100 |  | 
 | 101 |     ${resp}=  Redfish.Get  ${REDFISH_CHASSIS_URI}/${CHASSIS_ID}/PowerSubsystem/PowerSupplies | 
 | 102 |     FOR  ${entry}  IN RANGE  0  ${total_num_supplies} | 
 | 103 |         ${resp_resource}=  Redfish.Get Attribute | 
 | 104 |         ...  ${resp.dict["Members"][${entry}]["@odata.id"]}  EfficiencyRatings | 
 | 105 |         Rprint Vars  resp_resource | 
 | 106 |         ${efficiency_percentages}=  Nested Get  EfficiencyPercent  ${resp_resource} | 
 | 107 |         Valid List  efficiency_percentages  [90] | 
 | 108 |     END | 
 | 109 |  | 
 | 110 |  | 
 | 111 |  | 
 | 112 | *** Keywords *** | 
 | 113 |  | 
 | 114 | Get Total Number Of PowerSupplies | 
 | 115 |     [Documentation]  Return total number of powersupplies. | 
 | 116 |     ${total_num_powersupplies}=  Redfish.Get Attribute | 
 | 117 |     ...  ${REDFISH_CHASSIS_URI}/${CHASSIS_ID}/PowerSubsystem/PowerSupplies  Members@odata.count | 
 | 118 |  | 
 | 119 |     # Entries "Members@odata.count": 4, | 
 | 120 |     # {'@odata.id': '/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply0'} | 
 | 121 |     # {'@odata.id': '/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply1'} | 
 | 122 |     # {'@odata.id': '/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply2'} | 
 | 123 |     # {'@odata.id': '/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply3'} | 
| George Keishing | 409df05 | 2024-01-17 22:36:14 +0530 | [diff] [blame] | 124 |     RETURN  ${total_num_powersupplies} | 
| Marissa Garza | 839bc29 | 2021-11-10 10:58:27 -0600 | [diff] [blame] | 125 |  | 
 | 126 |  | 
 | 127 | Set and Verify Power Mode Switches | 
 | 128 |     [Documentation]  Verify the power mode switches successfully at standby or runtime. | 
 | 129 |     [Arguments]  ${power_mode} | 
 | 130 |  | 
 | 131 |     # Description of Arguments(s): | 
 | 132 |     # power_mode       Read the allowable power modes (e.g. "Static") | 
 | 133 |  | 
 | 134 |     Redfish.Login | 
 | 135 |  | 
 | 136 |     Redfish.patch  ${SYSTEM_BASE_URI} | 
 | 137 |     ...  body={"PowerMode":"${power_mode}"}  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}] | 
 | 138 |     ${current_power_mode}=  Redfish.Get Attribute  ${SYSTEM_BASE_URI}  PowerMode | 
 | 139 |     Should Be Equal As Strings  ${power_mode}  ${current_power_mode} | 
 | 140 |     ...  msg=The thermal mode does not match the current fan mode. | 
 | 141 |     Rprint Vars  current_power_mode | 
 | 142 |  | 
 | 143 |  | 
 | 144 | Suite Teardown Execution | 
 | 145 |     [Documentation]  Do the post suite teardown. | 
 | 146 |  | 
 | 147 |     Redfish.Logout | 
 | 148 |  | 
 | 149 |  | 
 | 150 | Suite Setup Execution | 
 | 151 |     [Documentation]  Do test case setup tasks. | 
 | 152 |  | 
 | 153 |     Printn | 
 | 154 |     Redfish.Login | 
 | 155 |  | 
 | 156 |  | 
 | 157 | Test Teardown Execution | 
 | 158 |     [Documentation]  Do the post test teardown. | 
 | 159 |  | 
 | 160 |     FFDC On Test Case Fail |