xref: /openbmc/openbmc-test-automation/redfish/extended/test_escale_base.robot (revision 94041a34a992d9b5f6418a43e1cd5273a6d9f9b2)
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