1*** Settings *** 2Documentation Get the system power supply readings and power mode settings. 3 4Resource ../../lib/bmc_redfish_resource.robot 5Resource ../../lib/bmc_redfish_utils.robot 6Resource ../../lib/openbmc_ffdc.robot 7Library ../../lib/gen_robot_valid.py 8 9Suite Setup Suite Setup Execution 10Suite Teardown Suite Teardown Execution 11Test Setup Printn 12Test 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 22Verify 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 43Verify 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 53Verify Allowable Power Mode Settings Switch At Runtime 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 64Verify 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 84Verify PowerSubsystem Efficiency Percent For All PowerSupplies 85 [Documentation] Verify the efficiency percent for all powersupplies. 86 [Tags] Verify_PowerSubsystem_Efficiency_Percent_For_All_PowerSupplies 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 114Get 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'} 124 [Return] ${total_num_powersupplies} 125 126 127Set 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 144Suite Teardown Execution 145 [Documentation] Do the post suite teardown. 146 147 Redfish.Logout 148 149 150Suite Setup Execution 151 [Documentation] Do test case setup tasks. 152 153 Printn 154 Redfish.Login 155 156 157Test Teardown Execution 158 [Documentation] Do the post test teardown. 159 160 FFDC On Test Case Fail 161