Adding new power test cases for PowerSubsystem.
Signed-off-by: Marissa Garza <garzam@us.ibm.com>
Change-Id: I8c85d6d23e777512dff9fb3eda85ead04d289652
diff --git a/redfish/systems/test_powersubsystem_settings.robot b/redfish/systems/test_powersubsystem_settings.robot
new file mode 100755
index 0000000..ec62703
--- /dev/null
+++ b/redfish/systems/test_powersubsystem_settings.robot
@@ -0,0 +1,160 @@
+*** 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
+ [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_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