1*** Settings *** 2Documentation Energy scale base tests. 3 4 5# Test Parameters: 6# OPENBMC_HOST The BMC host name or IP address. 7 8 9Resource ../../lib/energy_scale_utils.robot 10Resource ../../lib/openbmc_ffdc.robot 11Resource ../../lib/utils.robot 12Resource ../../lib/logging_utils.robot 13Library ../../lib/logging_utils.py 14 15 16Suite Setup Suite Setup Execution 17Test Teardown Test Teardown Execution 18 19 20*** Variables **** 21 22${over_max_power} 4001 23${max_power} 3050 24${mid_power} 1950 25${min_power} 600 26${below_min_power} 499 27${zero_power} 0 28# The power limits are documented in 29# open-power/witherspoon-xml/master/witherspoon.xml. 30 31 32*** Test Cases *** 33 34 35Escale Base Test Inactive Monitoring 36 [Documentation] Run base power tests with DCMI power monitoring off. 37 [Tags] Escale_Base_Test_Inactive_Monitoring 38 39 Deactivate DCMI Power And Verify 40 Verify Power Limits 41 42 43Escale Base Test Active Monitoring 44 [Documentation] Run base power tests with DCMI power monitoring on. 45 [Tags] Escale_Base_Test_Active_Monitoring 46 47 Activate DCMI Power And Verify 48 Verify Power Limits 49 50 51Escale Power Setting Via REST And Verify 52 [Documentation] Set power via REST and check using IPMI. 53 [Tags] Escale_Power_Setting_Via_REST_And_Verify 54 55 # A convenient power level bewtwwn maximum and minimum. 56 ${test_power}= Set Variable 1700 57 58 # Set the power limit via REST. 59 Set DCMI Power Limit Via REST ${test_power} 60 61 # Read the power limit using IPMI. 62 ${power_limit}= Get DCMI Power Limit 63 Should Be True ${power_limit} == ${test_power} 64 ... msg=Reading Power limit with IPMI failed after setting it with REST. 65 66 67Escale Power Setting Via IPMI And Verify 68 [Documentation] Set power via IPMI then check via REST. 69 [Tags] Escale_Power_Setting_Via_IPMI_And_Verify 70 71 # A convenient power level bewtwwn maximum and minimum. 72 ${test_power}= Set Variable 2200 73 74 # Set DCMI Power via IPMI. 75 Set DCMI Power Limit And Verify ${test_power} 76 77 # Read the limit via REST. 78 ${power_limit}= Get DCMI Power Limit Via REST 79 Should Be True ${power_limit} == ${test_power} 80 ... msg=Reading power limit with REST failed after setting it with IPMI. 81 82 83Escale Activation Test Via REST 84 [Documentation] Activate power monitoring via REST then check via IPMI. 85 [Tags] Escale_Activation_Test_Via_REST 86 87 Activate DCMI Power Via REST 88 # Confirm activation state using IPMI. 89 Fail If DCMI Power Is Not Activated 90 91 92Escale Deactivation Test Via REST 93 [Documentation] Deactivate power monitoring via REST and check via IPMI. 94 [Tags] Escale_Deactivation_Test_Via_REST 95 96 Deactivate DCMI Power Via REST 97 # Confirm activation state using IPMI. 98 Fail If DCMI Power Is Not Deactivated 99 100 101*** Keywords *** 102 103 104Verify Power Limits 105 [Documentation] Set power levels and verify limits. 106 107 Set DCMI Power Limit And Verify ${mid_power} 108 Test Power Limit ${min_power} ${below_min_power} 109 Test Power Limit ${min_power} ${zero_power} 110 Test Power Limit ${max_power} ${over_max_power} 111 112 ${power_limit}= Get DCMI Power Limit 113 Should Be True ${power_limit} == ${max_power} 114 ... msg=Power at ${power_limit}. Power should be at ${max_power}. 115 116 117Test Power Limit 118 [Documentation] Set power and check limit. 119 [Arguments] ${good_power} ${outside_bounds_power} 120 121 # Description of argument(s): 122 # good_power A valid power setting, usually at a limit. 123 # outside_bounds_power A power level that is beyond the limit. 124 125 Set DCMI Power Limit And Verify ${good_power} 126 127 # Attempt set power limit out of range. 128 ${int_power_limit}= Convert To Integer ${outside_bounds_power} 129 ${data}= Create Dictionary data=${int_power_limit} 130 Write Attribute ${CONTROL_HOST_URI}power_cap PowerCap data=${data} 131 132 133Suite Setup Execution 134 [Documentation] Do test setup initialization. 135 136 Redfish.Login 137 138 # Save the deactivation/activation setting. 139 ${cmd}= Catenate dcmi power get_limit | grep State 140 ${resp}= Run External IPMI Standard Command ${cmd} 141 # Response is either "Power Limit Active" or "No Active Power Limit". 142 ${initial_deactivation}= Get Count ${resp} No 143 # If deactivated: initial_deactivation = 1, 0 otherwise. 144 Set Suite Variable ${initial_deactivation} children=true 145 146 # Save the power limit setting. 147 ${initial_power_setting}= Get DCMI Power Limit 148 Set Suite Variable ${initial_power_setting} children=true 149 150 Delete All Error Logs 151 152 153Test Teardown Execution 154 [Documentation] Do the post test teardown. 155 156 FFDC On Test Case Fail 157 158 # Restore the system's initial power limit setting. 159 Run Keyword If '${initial_power_setting}' != '${0}' 160 ... Set DCMI Power Limit And Verify ${initial_power_setting} 161 162 # Restore the system's initial deactivation/activation setting. 163 Run Keyword If '${initial_deactivation}' == '${1}' 164 ... Deactivate DCMI Power And Verify ELSE Activate DCMI Power And Verify 165 166 # Clean up any error logs before exiting. 167 Delete All Error Logs 168 169 Redfish.Logout 170