Library for energy scale power tests
Add: lib/energy_scale_utils.robot.
Resolves openbmc/openbmc-test-automation#983
Change-Id: Ie2e5eb243a8ec3b6f634a98472ca98563cf9d654
Signed-off-by: Steven Sombar <ssombar@us.ibm.com>
diff --git a/lib/energy_scale_utils.robot b/lib/energy_scale_utils.robot
new file mode 100755
index 0000000..fdb9479
--- /dev/null
+++ b/lib/energy_scale_utils.robot
@@ -0,0 +1,100 @@
+*** Settings ***
+Documentation Utilities for power management tests.
+
+Resource ../lib/rest_client.robot
+Resource ../lib/openbmc_ffdc.robot
+Resource ../lib/boot_utils.robot
+Resource ../lib/ipmi_client.robot
+Library ../lib/var_funcs.py
+
+
+*** Keywords ***
+
+DCMI Power Get Limits
+ [Documentation] Run dcmi power get_limit and return values as a
+ ... dictionary.
+
+ # This keyword packages the five lines returned by dcmi power get_limit
+ # command into a dictionary. For example, the dcmi command may return:
+ # Current Limit State: No Active Power Limit
+ # Exception actions: Hard Power Off & Log Event to SEL
+ # Power Limit: 500 Watts
+ # Correction time: 0 milliseconds
+ # Sampling period: 0 seconds
+ # The power limit setting can be obtained with the following:
+ # &{limits}= DCMI Power Get Limits
+ # ${power_setting}= Set Variable ${limits['power_limit']}
+
+ ${output}= Run External IPMI Standard Command dcmi power get_limit
+ ${output}= Remove String ${output} Watts
+ ${output}= Remove String ${output} milliseconds
+ ${output}= Remove String ${output} seconds
+ &{limits}= Key Value Outbuf To Dict ${output}
+ [Return] &{limits}
+
+
+Get DCMI Power Limit
+ [Documentation] Return the system's current DCMI power_limit
+ ... watts setting.
+
+ &{limits}= DCMI Power Get Limits
+ ${power_setting}= Get From Dictionary ${limits} power_limit
+ [Return] ${power_setting}
+
+
+Set DCMI Power Limit And Verify
+ [Documentation] Set system power limit via IPMI DCMI command.
+ [Arguments] ${power_limit}
+
+ # Description of argument(s):
+ # limit The power limit in watts
+
+ ${cmd}= Catenate dcmi power set_limit limit ${power_limit}
+ Run External IPMI Standard Command ${cmd}
+ ${power}= Get DCMI Power Limit
+ Should Be True ${power} == ${power_limit}
+ ... msg=Faied setting dcmi power limit to ${power_limit} watts.
+
+
+Activate DCMI Power And Verify
+ [Documentation] Activate DCMI power limiting.
+
+ ${resp}= Run External IPMI Standard Command dcmi power activate
+ Should Contain ${resp} successfully activated
+ ... msg=Command failed: dcmi power activate.
+
+
+Fail If DCMI Power Is Not Activated
+ [Documentation] Fail if DCMI power limiting is not activated.
+
+ ${cmd}= Catenate dcmi power get_limit | grep State:
+ ${resp}= Run External IPMI Standard Command ${cmd}
+ Should Contain ${resp} Power Limit Active msg=DCMI power is not active.
+
+
+Deactivate DCMI Power And Verify
+ [Documentation] Deactivate DCMI power power limiting.
+
+ ${cmd}= Catenate dcmi power deactivate | grep deactivated
+ ${resp}= Run External IPMI Standard Command ${cmd}
+ Should Contain ${resp} successfully deactivated
+ ... msg=Command failed: dcmi power deactivater.
+
+
+Fail If DCMI Power Is Not Deactivated
+ [Documentation] Fail if DCMI power limiting is not deactivated.
+
+ ${cmd}= Catenate dcmi power get_limit | grep State:
+ ${resp}= Run External IPMI Standard Command ${cmd}
+ Should Contain ${resp} No Active Power Limit
+ ... msg=DCMI power is not deactivated.
+
+
+OCC Tool Upload Setup
+ [Documentation] Upload occtoolp9 to /tmp on the OS.
+
+ ${cmd}= Catenate wget --no-check-certificate
+ ... -O/tmp/occtoolp9 --content-disposition
+ ... https://github.com/open-power/occ/raw/master/src/tools/occtoolp9
+ ... && chmod 777 /tmp/occtoolp9
+ ${output} ${stderr} ${rc}= OS Execute Command ${cmd}