| *** 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} |