Energy scale power capping tests.
Added:
- Escale System On And PL Enabled
- Escale System On And PL Disabled
- Escale Check Settings System On Then Off
- Escale Check Settings System Off Then On
- Escale Change Limit At Runtime
- Escale Disable And Enable At Runtime
Resolves openbmc/openbmc-test-automation#912
Change-Id: I6d90137fbad4fe40b6a626cc3ac09cef338f28fe
Signed-off-by: Steven Sombar <ssombar@us.ibm.com>
diff --git a/systest/test_power_capping.robot b/systest/test_power_capping.robot
new file mode 100644
index 0000000..a1f9d25
--- /dev/null
+++ b/systest/test_power_capping.robot
@@ -0,0 +1,214 @@
+*** Settings ***
+Documentation Energy scale power capping tests.
+
+Resource ../../lib/energy_scale_utils.robot
+Resource ../../lib/rest_client.robot
+Resource ../../lib/openbmc_ffdc.robot
+Resource ../../lib/boot_utils.robot
+Resource ../../lib/ipmi_client.robot
+
+Suite Setup Suite Setup Execution
+Test Teardown Test Teardown Execution
+
+
+*** Test Cases ***
+
+
+Escale System On And PL Enabled
+ [Documentation] With system power on, check values with occtoolp9.
+ [Tags] Escale_System_On_And_PL_Enabled
+
+ # Implements:
+ # - Change Active Power Limit with System Power On and Power Limit Active.
+
+ REST Power On stack_mode=skip
+
+ OCC Tool Upload Setup
+
+ # Get OCC data from OS.
+ ${cmd}= Set Variable /tmp/occtoolp9 -p | grep -e State: -e Sensor:
+ ${output} ${stderr} ${rc}= OS Execute Command ${cmd}
+
+ # Check for expected responses.
+ Should Contain ${output} ACTIVE
+ Should Contain ${output} Sensor: TEMP
+ Should Contain ${output} Sensor: FREQ
+ Should Contain ${output} Sensor: POWR
+
+ ${power}= Get DCMI Power Limit
+ Should Be True ${power} == ${0}
+ ... msg=Initial dcmi power limit should be zero.
+
+ Activate DCMI Power And Verify
+
+ Set DCMI Power Limit And Verify 300
+
+
+Escale System On And PL Disabled
+ [Documentation] With system power on, check values with occtoolp9.
+ [Tags] Escale_System_On_And_PL_Disabled
+
+ # Implements:
+ # - Change Active Power Limit with System Power On and Deactivate Power
+ # Limit Prior to Change.
+
+ ${power_setting}= Set Variable ${600}
+
+ REST Power On stack_mode=skip
+
+ Activate DCMI Power And Verify
+
+ Set DCMI Power Limit And Verify ${power_setting}
+
+ # Deactivate and check limit
+ Deactivate DCMI Power And Verify
+
+ ${cmd}= Catenate dcmi power set_limit limit 500
+ Run External IPMI Standard Command ${cmd}
+ ${power}= Get DCMI Power Limit
+
+ Should Be True ${power} == ${power_setting}
+ ... msg=Could set power limit when power limiting deactivated.
+
+
+Escale Check Settings System On Then Off
+ [Documentation] Set power activitation and limit when system
+ ... on, then check at power off.
+ [Tags] Escale_Check_Settings_System_On_Then_Off
+
+ # Implements:
+ # - Set Power Limit and Activate Power Limit Before BMC State is Power On.
+
+ ${power_setting}= Set Variable ${800}
+
+ REST Power On stack_mode=skip
+
+ Set DCMI Power Limit And Verify ${power_setting}
+ Deactivate DCMI Power And Verify
+
+ ${power}= Get DCMI Power Limit
+ Should Be True ${power} == ${power_setting}
+ ... msg=dcmi power limit not set to ${power_setting} as expected.
+
+ Smart Power Off
+
+ Activate DCMI Power And Verify
+
+ REST Power On
+
+ ${power}= Get DCMI Power Limit
+ Should Be True ${power} == ${power_setting}
+ ... msg=Power limit setting of watts not retained at Runtime.
+
+ Set DCMI Power Limit And Verify 0
+ Deactivate DCMI Power And Verify
+
+
+Escale Check Settings System Off Then On
+ [Documentation] Set power activitation and limit when system
+ ... off, then check at power on.
+ [Tags] Escale_Check_Settings_System_Off_Then_On
+
+ # Implements:
+ # - Set and Activate Power Limit with System Power Off.
+
+ ${power_setting}= Set Variable ${500}
+
+ Smart Power Off
+
+ # Check that DCMI power limiting is deactivated and that the initial
+ # power limit setting = 0.
+ Fail If DCMI Power Is Not Deactivated
+ ${power}= Get DCMI Power Limit
+ Should Be True ${power} == ${0}
+ ... msg=Initial dcmi power limit should be zero.
+
+ Activate DCMI Power And Verify
+ Set DCMI Power Limit And Verify ${power_setting}
+
+ REST Power On
+
+ Fail If DCMI Power Is Not Activated
+
+ ${power}= Get DCMI Power Limit
+ Should Be True ${power} == ${power_setting}
+ ... msg=Power limit setting not retained at Runtime.
+
+
+Escale Change Limit At Runtime
+ [Documentation] Change power setting while at runtime.
+ [Tags] Escale_Change_Limit_At_Runtime
+
+ # Implements:
+ # - Change Power Limit at Runtime.
+
+ ${power_setting}= Set Variable ${600}
+
+ Smart Power Off
+
+ Set DCMI Power Limit And Verify ${power_setting}
+ Activate DCMI Power And Verify
+
+ REST Power On stack_mode=skip
+
+ # Check that DCMI power limit setting = ${power_setting}.
+ ${power}= Get DCMI Power Limit
+ Should Be True ${power} == ${power_setting}
+ ... msg=DCMI power limit not set to ${power_setting} watts as expected.
+
+ Set DCMI Power Limit And Verify 800
+
+
+Escale Disable And Enable At Runtime
+ [Documentation] Disable and enable power at runtime.
+ [Tags] Escale_Disable_And_Enable_At_Runtime
+
+ # Implements:
+ # - Disable/Enable Power Limit at Runtime.
+
+ ${power_setting}= Set Variable ${500}
+
+ Smart Power Off
+
+ Set DCMI Power Limit And Verify ${power_setting}
+ Activate DCMI Power And Verify
+
+ # Power on the system.
+ REST Power On
+
+ # Check that DCMI power limit setting = ${power_setting}.
+ ${power}= Get DCMI Power Limit
+ Should Be True ${power} == ${power_setting}
+ ... msg=DCMI power limit not set to ${power_setting} watts as expected.
+
+ Deactivate DCMI Power And Verify
+
+ Activate DCMI Power And Verify
+
+ ${power}= Get DCMI Power Limit
+ Should Be True ${power} == ${power_setting}
+ ... msg=DCMI power limit not set to ${power_setting} watts as expected.
+
+
+*** Keywords ***
+
+
+Suite Setup Execution
+ [Documentation] Do test setup initialization.
+ # Power Off if system if not already off.
+ # Deactivate power and set limit = 0.
+ Smart Power Off
+ Deactivate DCMI Power And Verify
+ Set DCMI Power Limit And Verify 0
+
+
+Test Teardown Execution
+ [Documentation] Do the post test teardown.
+ # FFDC on test case fail.
+ # Power off the OS and wait for power off state.
+ # Set deactivated DCMI power enablement and power limit = 0.
+
+ FFDC On Test Case Fail
+ Smart Power Off
+ Deactivate DCMI Power And Verify
+ Set DCMI Power Limit And Verify 0