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