blob: bb45fd01a3e49053cb91b61c93409752a9af761b [file] [log] [blame]
*** Settings ***
Documentation Get the system power supply readings and power mode settings.
Resource ../../lib/bmc_redfish_resource.robot
Resource ../../lib/bmc_redfish_utils.robot
Resource ../../lib/openbmc_ffdc.robot
Library ../../lib/gen_robot_valid.py
Suite Setup Suite Setup Execution
Suite Teardown Suite Teardown Execution
Test Setup Printn
Test Teardown Test Teardown Execution
*** Variables ***
# Power Mode Settings
@{VALID_POWER_MODES} Static PowerSaving MaximumPerformance
*** Test Cases ***
Verify Current Power Mode Setting
[Documentation] Verify the current power mode setting.
[Tags] Verify_Current_Power_Mode_Setting
# Example:
# /redfish/v1/Systems/system
#
# "PartNumber": "",
# "PowerMode": "MaximumPerformance",
# "PowerMode@Redfish.AllowableValues": [
# "Static",
# "MaximumPerformance",
# "PowerSaving"
# ],
${current_power_mode}= Redfish.Get Attribute ${SYSTEM_BASE_URI} PowerMode
Rprint Vars current_power_mode
Valid Value current_power_mode valid_values=${VALID_POWER_MODES}
Verify Allowable Power Mode Settings
[Documentation] Verify the allowable power mode settings.
[Tags] Verify_Allowable_Power_Mode_Settings
${allowed_power_modes}= Redfish.Get Attribute ${SYSTEM_BASE_URI} PowerMode@Redfish.AllowableValues
Rprint Vars allowed_power_modes
Valid List allowed_power_modes valid_values=${VALID_POWER_MODES}
Verify Allowable Power Mode Settings Switch At Runtime
[Documentation] Check the allowable power modes are set successfully at runtime.
[Tags] Verify_Allowable_Power_Mode_Settings_Switch_At_Runtime
[Template] Set and Verify Power Mode Switches
# power_mode_type
Static
PowerSaving
MaximumPerformance
Verify State Of PowerSubsystem PowerSupplies
[Documentation] Verify the state of the system's powersupplies is ok and enabled.
[Tags] Verify_State_Of_PowerSubsystem_PowerSupplies
${total_num_supplies}= Get Total Number Of PowerSupplies
Rprint Vars total_num_supplies
${resp}= Redfish.Get ${REDFISH_CHASSIS_URI}/${CHASSIS_ID}/PowerSubsystem/PowerSupplies
FOR ${entry} IN RANGE 0 ${total_num_supplies}
${resp_resource}= Redfish.Get ${resp.dict["Members"][${entry}]["@odata.id"]}
# Example:
# "Status": {
# "Health": "OK",
# "State": "Enabled"
# },
Should Be Equal As Strings ${resp_resource.dict["Status"]["Health"]} OK
Should Be Equal As Strings ${resp_resource.dict["Status"]["State"]} Enabled
END
Verify PowerSubsystem Efficiency Percent For All PowerSupplies
[Documentation] Verify the efficiency percent for all powersupplies.
[Tags] Verify_PowerSubsystem_Efficiency_Percent_For_All_PowerSupplies
${total_num_supplies}= Get Total Number Of PowerSupplies
Rprint Vars total_num_supplies
# Example output:
# - Executing: get('/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply0')
# resp_resource:
# [0]:
# [EfficiencyPercent]: 90
# - Executing: get('/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply1')
# resp_resource:
# [0]:
# [EfficiencyPercent]: 90
${resp}= Redfish.Get ${REDFISH_CHASSIS_URI}/${CHASSIS_ID}/PowerSubsystem/PowerSupplies
FOR ${entry} IN RANGE 0 ${total_num_supplies}
${resp_resource}= Redfish.Get Attribute
... ${resp.dict["Members"][${entry}]["@odata.id"]} EfficiencyRatings
Rprint Vars resp_resource
${efficiency_percentages}= Nested Get EfficiencyPercent ${resp_resource}
Valid List efficiency_percentages [90]
END
*** Keywords ***
Get Total Number Of PowerSupplies
[Documentation] Return total number of powersupplies.
${total_num_powersupplies}= Redfish.Get Attribute
... ${REDFISH_CHASSIS_URI}/${CHASSIS_ID}/PowerSubsystem/PowerSupplies Members@odata.count
# Entries "Members@odata.count": 4,
# {'@odata.id': '/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply0'}
# {'@odata.id': '/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply1'}
# {'@odata.id': '/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply2'}
# {'@odata.id': '/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply3'}
[Return] ${total_num_powersupplies}
Set and Verify Power Mode Switches
[Documentation] Verify the power mode switches successfully at standby or runtime.
[Arguments] ${power_mode}
# Description of Arguments(s):
# power_mode Read the allowable power modes (e.g. "Static")
Redfish.Login
Redfish.patch ${SYSTEM_BASE_URI}
... body={"PowerMode":"${power_mode}"} valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
${current_power_mode}= Redfish.Get Attribute ${SYSTEM_BASE_URI} PowerMode
Should Be Equal As Strings ${power_mode} ${current_power_mode}
... msg=The thermal mode does not match the current fan mode.
Rprint Vars current_power_mode
Suite Teardown Execution
[Documentation] Do the post suite teardown.
Redfish.Logout
Suite Setup Execution
[Documentation] Do test case setup tasks.
Printn
Redfish.Login
Test Teardown Execution
[Documentation] Do the post test teardown.
FFDC On Test Case Fail