xref: /openbmc/openbmc-test-automation/redfish/extended/test_escale_base.robot (revision 2104d5f9bca1ab3b460f5255f6093d7b25a13c1a)
1 *** Settings ***
2 Documentation     Energy scale base tests.
3 
4 
5 # Test Parameters:
6 # OPENBMC_HOST        The BMC host name or IP address.
7 
8 
9 Resource          ../../lib/energy_scale_utils.robot
10 Resource          ../../lib/openbmc_ffdc.robot
11 Resource          ../../lib/utils.robot
12 Resource          ../../lib/logging_utils.robot
13 Library           ../../lib/logging_utils.py
14 
15 
16 Suite Setup      Suite Setup Execution
17 Test 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 
35 Escale 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 
43 Escale 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 
51 Escale 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 
67 Escale 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 
83 Escale 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 
92 Escale 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 
104 Verify 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 
117 Test 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 
133 Suite 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 
153 Test 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