1*f7ac0237SMarissa Garza*** Settings *** 2*f7ac0237SMarissa GarzaDocumentation Energy scale power capping tests. 3*f7ac0237SMarissa Garza 4*f7ac0237SMarissa Garza 5*f7ac0237SMarissa Garza# Acronyms 6*f7ac0237SMarissa Garza# PL Power Limit 7*f7ac0237SMarissa Garza# OCC On Chip Controller 8*f7ac0237SMarissa Garza 9*f7ac0237SMarissa Garza 10*f7ac0237SMarissa GarzaResource ../../lib/energy_scale_utils.robot 11*f7ac0237SMarissa GarzaResource ../../lib/rest_client.robot 12*f7ac0237SMarissa GarzaResource ../../lib/openbmc_ffdc.robot 13*f7ac0237SMarissa GarzaResource ../../lib/boot_utils.robot 14*f7ac0237SMarissa GarzaResource ../../lib/ipmi_client.robot 15*f7ac0237SMarissa GarzaResource ../../syslib/utils_os.robot 16*f7ac0237SMarissa Garza 17*f7ac0237SMarissa Garza 18*f7ac0237SMarissa GarzaSuite Setup Suite Setup Execution 19*f7ac0237SMarissa GarzaTest Teardown Test Teardown Execution 20*f7ac0237SMarissa Garza 21*f7ac0237SMarissa Garza 22*f7ac0237SMarissa Garza 23*f7ac0237SMarissa Garza*** Variables **** 24*f7ac0237SMarissa Garza 25*f7ac0237SMarissa Garza${max_power} 3050 26*f7ac0237SMarissa Garza${near_max_power_50} 3000 27*f7ac0237SMarissa Garza${near_max_power_100} 2950 28*f7ac0237SMarissa Garza 29*f7ac0237SMarissa Garza 30*f7ac0237SMarissa Garza 31*f7ac0237SMarissa Garza*** Test Cases *** 32*f7ac0237SMarissa Garza 33*f7ac0237SMarissa Garza 34*f7ac0237SMarissa GarzaEscale System On And PL Enabled 35*f7ac0237SMarissa Garza [Documentation] Change active power limit with system power on and 36*f7ac0237SMarissa Garza ... Power limit active. 37*f7ac0237SMarissa Garza [Tags] Escale_System_On_And_PL_Enabled 38*f7ac0237SMarissa Garza 39*f7ac0237SMarissa Garza Set DCMI Power Limit And Verify ${max_power} 40*f7ac0237SMarissa Garza 41*f7ac0237SMarissa Garza REST Power On stack_mode=skip 42*f7ac0237SMarissa Garza 43*f7ac0237SMarissa Garza Tool Exist opal-prd 44*f7ac0237SMarissa Garza OCC Tool Upload Setup 45*f7ac0237SMarissa Garza 46*f7ac0237SMarissa Garza # Get OCC data from OS. 47*f7ac0237SMarissa Garza ${cmd}= Set Variable /tmp/occtoolp9 -p | grep -e State: -e Sensor: 48*f7ac0237SMarissa Garza ${output} ${stderr} ${rc}= OS Execute Command ${cmd} 49*f7ac0237SMarissa Garza 50*f7ac0237SMarissa Garza # Check for expected responses. 51*f7ac0237SMarissa Garza Should Contain ${output} ACTIVE 52*f7ac0237SMarissa Garza Should Contain ${output} Sensor: TEMP 53*f7ac0237SMarissa Garza Should Contain ${output} Sensor: FREQ 54*f7ac0237SMarissa Garza Should Contain ${output} Sensor: POWR 55*f7ac0237SMarissa Garza 56*f7ac0237SMarissa Garza # Disable OCC. 57*f7ac0237SMarissa Garza ${output} ${stderr} ${rc}= OS Execute Command opal-prd occ disable 58*f7ac0237SMarissa Garza # With OCC disabled we should have OBSERVATION in output. 59*f7ac0237SMarissa Garza ${output} ${stderr} ${rc}= OS Execute Command ${cmd} 60*f7ac0237SMarissa Garza Should Contain ${output} OBSERVATION 61*f7ac0237SMarissa Garza 62*f7ac0237SMarissa Garza # Re-enable OCC for remaining tests. 63*f7ac0237SMarissa Garza ${output} ${stderr} ${rc}= OS Execute Command opal-prd occ enable 64*f7ac0237SMarissa Garza ${output} ${stderr} ${rc}= OS Execute Command ${cmd} 65*f7ac0237SMarissa Garza Should Contain ${output} ACTIVE 66*f7ac0237SMarissa Garza 67*f7ac0237SMarissa Garza ${power}= Get DCMI Power Limit 68*f7ac0237SMarissa Garza Should Be True ${power} == ${max_power} 69*f7ac0237SMarissa Garza ... msg=DCMI power limit should be ${max_power}. 70*f7ac0237SMarissa Garza 71*f7ac0237SMarissa Garza Activate DCMI Power And Verify 72*f7ac0237SMarissa Garza 73*f7ac0237SMarissa Garza Set DCMI Power Limit And Verify ${near_max_power_50} 74*f7ac0237SMarissa Garza 75*f7ac0237SMarissa Garza 76*f7ac0237SMarissa GarzaEscale System On And PL Disabled 77*f7ac0237SMarissa Garza [Documentation] Change active power limit with system power on and 78*f7ac0237SMarissa Garza ... deactivate power limit prior to change. 79*f7ac0237SMarissa Garza [Tags] Escale_System_On_And_PL_Disabled 80*f7ac0237SMarissa Garza 81*f7ac0237SMarissa Garza ${power_setting}= Set Variable ${near_max_power_100} 82*f7ac0237SMarissa Garza 83*f7ac0237SMarissa Garza REST Power On stack_mode=skip 84*f7ac0237SMarissa Garza 85*f7ac0237SMarissa Garza Set DCMI Power Limit And Verify ${power_setting} 86*f7ac0237SMarissa Garza 87*f7ac0237SMarissa Garza # Deactivate and check limit 88*f7ac0237SMarissa Garza Deactivate DCMI Power And Verify 89*f7ac0237SMarissa Garza 90*f7ac0237SMarissa Garza ${cmd}= Catenate dcmi power set_limit limit ${near_max_power_50} 91*f7ac0237SMarissa Garza Run External IPMI Standard Command ${cmd} 92*f7ac0237SMarissa Garza ${power}= Get DCMI Power Limit 93*f7ac0237SMarissa Garza 94*f7ac0237SMarissa Garza Should Be True ${power} == ${near_max_power_50} 95*f7ac0237SMarissa Garza ... msg=Could not set power limit when power limiting deactivated. 96*f7ac0237SMarissa Garza 97*f7ac0237SMarissa Garza 98*f7ac0237SMarissa GarzaEscale Check Settings System On Then Off 99*f7ac0237SMarissa Garza [Documentation] Set power limit and activate power limit before 100*f7ac0237SMarissa Garza ... BMC state is power on. 101*f7ac0237SMarissa Garza [Tags] Escale_Check_Settings_System_On_Then_Off 102*f7ac0237SMarissa Garza 103*f7ac0237SMarissa Garza ${power_setting}= Set Variable ${near_max_power_100} 104*f7ac0237SMarissa Garza 105*f7ac0237SMarissa Garza REST Power On stack_mode=skip 106*f7ac0237SMarissa Garza 107*f7ac0237SMarissa Garza Set DCMI Power Limit And Verify ${power_setting} 108*f7ac0237SMarissa Garza Deactivate DCMI Power And Verify 109*f7ac0237SMarissa Garza 110*f7ac0237SMarissa Garza ${power}= Get DCMI Power Limit 111*f7ac0237SMarissa Garza Should Be True ${power} == ${power_setting} 112*f7ac0237SMarissa Garza ... msg=dcmi power limit not set to ${power_setting} as expected. 113*f7ac0237SMarissa Garza 114*f7ac0237SMarissa Garza Smart Power Off 115*f7ac0237SMarissa Garza 116*f7ac0237SMarissa Garza Activate DCMI Power And Verify 117*f7ac0237SMarissa Garza 118*f7ac0237SMarissa Garza REST Power On 119*f7ac0237SMarissa Garza 120*f7ac0237SMarissa Garza ${power}= Get DCMI Power Limit 121*f7ac0237SMarissa Garza Should Be True ${power} == ${power_setting} 122*f7ac0237SMarissa Garza ... msg=Power limit setting of watts not retained at Runtime. 123*f7ac0237SMarissa Garza 124*f7ac0237SMarissa Garza Deactivate DCMI Power And Verify 125*f7ac0237SMarissa Garza 126*f7ac0237SMarissa Garza 127*f7ac0237SMarissa GarzaEscale Check Settings System Off Then On 128*f7ac0237SMarissa Garza [Documentation] Set and activate power limit with system power off. 129*f7ac0237SMarissa Garza [Tags] Escale_Check_Settings_System_Off_Then_On 130*f7ac0237SMarissa Garza 131*f7ac0237SMarissa Garza ${power_setting}= Set Variable ${near_max_power_50} 132*f7ac0237SMarissa Garza 133*f7ac0237SMarissa Garza Set DCMI Power Limit And Verify ${power_setting} 134*f7ac0237SMarissa Garza Deactivate DCMI Power and Verify 135*f7ac0237SMarissa Garza 136*f7ac0237SMarissa Garza Smart Power Off 137*f7ac0237SMarissa Garza 138*f7ac0237SMarissa Garza # Check deactivated and the power limit. 139*f7ac0237SMarissa Garza Fail If DCMI Power Is Not Deactivated 140*f7ac0237SMarissa Garza ${power}= Get DCMI Power Limit 141*f7ac0237SMarissa Garza Should Be True ${power} == ${power_setting} 142*f7ac0237SMarissa Garza ... msg=DCMI power not set at ${power_setting} as expected 143*f7ac0237SMarissa Garza 144*f7ac0237SMarissa Garza Activate DCMI Power And Verify 145*f7ac0237SMarissa Garza Set DCMI Power Limit And Verify ${power_setting} 146*f7ac0237SMarissa Garza 147*f7ac0237SMarissa Garza REST Power On 148*f7ac0237SMarissa Garza 149*f7ac0237SMarissa Garza Fail If DCMI Power Is Not Activated 150*f7ac0237SMarissa Garza 151*f7ac0237SMarissa Garza ${power}= Get DCMI Power Limit 152*f7ac0237SMarissa Garza Should Be True ${power} == ${power_setting} 153*f7ac0237SMarissa Garza ... msg=Power limit setting not retained at Runtime. 154*f7ac0237SMarissa Garza 155*f7ac0237SMarissa Garza 156*f7ac0237SMarissa GarzaEscale Change Limit At Runtime 157*f7ac0237SMarissa Garza [Documentation] Change power limit at runtime. 158*f7ac0237SMarissa Garza [Tags] Escale_Change_Limit_At_Runtime 159*f7ac0237SMarissa Garza 160*f7ac0237SMarissa Garza ${power_setting}= Set Variable ${near_max_power_100} 161*f7ac0237SMarissa Garza 162*f7ac0237SMarissa Garza Set DCMI Power Limit And Verify ${near_max_power_50} 163*f7ac0237SMarissa Garza 164*f7ac0237SMarissa Garza Smart Power Off 165*f7ac0237SMarissa Garza 166*f7ac0237SMarissa Garza REST Power On stack_mode=skip 167*f7ac0237SMarissa Garza 168*f7ac0237SMarissa Garza Set DCMI Power Limit And Verify ${power_setting} 169*f7ac0237SMarissa Garza 170*f7ac0237SMarissa Garza # Check that DCMI power limit setting = ${power_setting}. 171*f7ac0237SMarissa Garza ${power}= Get DCMI Power Limit 172*f7ac0237SMarissa Garza Should Be True ${power} == ${power_setting} 173*f7ac0237SMarissa Garza ... msg=DCMI power limit not set to ${power_setting} watts as expected. 174*f7ac0237SMarissa Garza 175*f7ac0237SMarissa Garza Set DCMI Power Limit And Verify ${max_power} 176*f7ac0237SMarissa Garza 177*f7ac0237SMarissa Garza 178*f7ac0237SMarissa GarzaEscale Disable And Enable At Runtime 179*f7ac0237SMarissa Garza [Documentation] Disable/enable power limit at runtime. 180*f7ac0237SMarissa Garza [Tags] Escale_Disable_And_Enable_At_Runtime 181*f7ac0237SMarissa Garza 182*f7ac0237SMarissa Garza ${power_setting}= Set Variable ${near_max_power_50} 183*f7ac0237SMarissa Garza 184*f7ac0237SMarissa Garza Smart Power Off 185*f7ac0237SMarissa Garza 186*f7ac0237SMarissa Garza Set DCMI Power Limit And Verify ${power_setting} 187*f7ac0237SMarissa Garza Activate DCMI Power And Verify 188*f7ac0237SMarissa Garza 189*f7ac0237SMarissa Garza # Power on the system. 190*f7ac0237SMarissa Garza REST Power On 191*f7ac0237SMarissa Garza 192*f7ac0237SMarissa Garza # Check that DCMI power limit setting = ${power_setting}. 193*f7ac0237SMarissa Garza ${power}= Get DCMI Power Limit 194*f7ac0237SMarissa Garza Should Be True ${power} == ${power_setting} 195*f7ac0237SMarissa Garza ... msg=DCMI power limit not set to ${power_setting} watts as expected. 196*f7ac0237SMarissa Garza 197*f7ac0237SMarissa Garza Deactivate DCMI Power And Verify 198*f7ac0237SMarissa Garza 199*f7ac0237SMarissa Garza Activate DCMI Power And Verify 200*f7ac0237SMarissa Garza 201*f7ac0237SMarissa Garza ${power}= Get DCMI Power Limit 202*f7ac0237SMarissa Garza Should Be True ${power} == ${power_setting} 203*f7ac0237SMarissa Garza ... msg=DCMI power limit not set to ${power_setting} watts as expected. 204*f7ac0237SMarissa Garza 205*f7ac0237SMarissa Garza 206*f7ac0237SMarissa Garza*** Keywords *** 207*f7ac0237SMarissa Garza 208*f7ac0237SMarissa Garza 209*f7ac0237SMarissa GarzaSuite Setup Execution 210*f7ac0237SMarissa Garza [Documentation] Do test setup initialization. 211*f7ac0237SMarissa Garza # Power Off if system if not already off. 212*f7ac0237SMarissa Garza # Save initial settings. 213*f7ac0237SMarissa Garza # Deactivate power and set limit. 214*f7ac0237SMarissa Garza 215*f7ac0237SMarissa Garza Smart Power Off 216*f7ac0237SMarissa Garza 217*f7ac0237SMarissa Garza # Save the deactivation/activation setting. 218*f7ac0237SMarissa Garza ${cmd}= Catenate dcmi power get_limit | grep State 219*f7ac0237SMarissa Garza ${resp}= Run External IPMI Standard Command ${cmd} 220*f7ac0237SMarissa Garza # Response is either "Power Limit Active" or "No Active Power Limit". 221*f7ac0237SMarissa Garza ${initial_deactivation}= Get Count ${resp} No 222*f7ac0237SMarissa Garza # If deactivated: initial_deactivation = 1, 0 otherwise. 223*f7ac0237SMarissa Garza Set Suite Variable ${initial_deactivation} children=true 224*f7ac0237SMarissa Garza 225*f7ac0237SMarissa Garza # Save the power limit setting. 226*f7ac0237SMarissa Garza ${initial_power_setting}= Get DCMI Power Limit 227*f7ac0237SMarissa Garza Set Suite Variable ${initial_power_setting} children=true 228*f7ac0237SMarissa Garza 229*f7ac0237SMarissa Garza # Set power limiting deactivated. 230*f7ac0237SMarissa Garza Deactivate DCMI Power And Verify 231*f7ac0237SMarissa Garza 232*f7ac0237SMarissa Garza # Set initial power setting value. 233*f7ac0237SMarissa Garza Set DCMI Power Limit And Verify ${max_power} 234*f7ac0237SMarissa Garza 235*f7ac0237SMarissa Garza 236*f7ac0237SMarissa GarzaTest Teardown Execution 237*f7ac0237SMarissa Garza [Documentation] Do the post test teardown. 238*f7ac0237SMarissa Garza # FFDC on test case fail. 239*f7ac0237SMarissa Garza # Power off the OS and wait for power off state. 240*f7ac0237SMarissa Garza # Return the system's initial deactivation/activation setting. 241*f7ac0237SMarissa Garza # Return the system's initial power limit setting. 242*f7ac0237SMarissa Garza 243*f7ac0237SMarissa Garza FFDC On Test Case Fail 244*f7ac0237SMarissa Garza 245*f7ac0237SMarissa Garza Smart Power Off 246*f7ac0237SMarissa Garza 247*f7ac0237SMarissa Garza Run Keyword If '${initial_power_setting}' != '${0}' 248*f7ac0237SMarissa Garza ... Set DCMI Power Limit And Verify ${initial_power_setting} 249*f7ac0237SMarissa Garza 250*f7ac0237SMarissa Garza Run Keyword If '${initial_deactivation}' == '${1}' 251*f7ac0237SMarissa Garza ... Deactivate DCMI Power And Verify ELSE Activate DCMI Power And Verify 252