xref: /openbmc/openbmc-test-automation/redfish/systems/test_powersubsystem_settings.robot (revision 2104d5f9bca1ab3b460f5255f6093d7b25a13c1a)
1 *** Settings ***
2 Documentation       Get the system power supply readings and power mode settings.
3 
4 Resource            ../../lib/bmc_redfish_resource.robot
5 Resource            ../../lib/bmc_redfish_utils.robot
6 Resource            ../../lib/openbmc_ffdc.robot
7 Library             ../../lib/gen_robot_valid.py
8 
9 Suite Setup         Suite Setup Execution
10 Suite Teardown      Suite Teardown Execution
11 Test Setup          Printn
12 Test Teardown       Test Teardown Execution
13 
14 *** Variables ***
15 
16 # Power Mode Settings
17 @{VALID_POWER_MODES}    Static  PowerSaving  MaximumPerformance
18 
19 
20 *** Test Cases ***
21 
22 Verify Current Power Mode Setting
23     [Documentation]  Verify the current power mode setting.
24     [Tags]  Verify_Current_Power_Mode_Setting
25 
26     # Example:
27     # /redfish/v1/Systems/system
28     #
29     # "PartNumber": "",
30     # "PowerMode": "MaximumPerformance",
31     # "PowerMode@Redfish.AllowableValues": [
32     #    "Static",
33     #    "MaximumPerformance",
34     #    "PowerSaving"
35     # ],
36 
37     ${current_power_mode}=  Redfish.Get Attribute  ${SYSTEM_BASE_URI}  PowerMode
38     Rprint Vars  current_power_mode
39 
40     Valid Value  current_power_mode  valid_values=${VALID_POWER_MODES}
41 
42 
43 Verify Allowable Power Mode Settings
44     [Documentation]  Verify the allowable power mode settings.
45     [Tags]  Verify_Allowable_Power_Mode_Settings
46 
47     ${allowed_power_modes}=  Redfish.Get Attribute  ${SYSTEM_BASE_URI}  PowerMode@Redfish.AllowableValues
48     Rprint Vars  allowed_power_modes
49 
50     Valid List  allowed_power_modes  valid_values=${VALID_POWER_MODES}
51 
52 
53 Verify Allowable Power Mode Settings Switch At Runtime
54     [Documentation]  Check the allowable power modes are set successfully at runtime.
55     [Tags]  Verify_Allowable_Power_Mode_Settings_Switch_At_Runtime
56     [Template]  Set and Verify Power Mode Switches
57 
58     # power_mode_type
59     Static
60     PowerSaving
61     MaximumPerformance
62 
63 
64 Verify State Of PowerSubsystem PowerSupplies
65     [Documentation]  Verify the state of the system's powersupplies is ok and enabled.
66     [Tags]  Verify_State_Of_PowerSubsystem_PowerSupplies
67 
68     ${total_num_supplies}=  Get Total Number Of PowerSupplies
69     Rprint Vars  total_num_supplies
70 
71     ${resp}=  Redfish.Get  ${REDFISH_CHASSIS_URI}/${CHASSIS_ID}/PowerSubsystem/PowerSupplies
72     FOR  ${entry}  IN RANGE  0  ${total_num_supplies}
73          ${resp_resource}=  Redfish.Get  ${resp.dict["Members"][${entry}]["@odata.id"]}
74          # Example:
75          # "Status": {
76          #     "Health": "OK",
77          #     "State": "Enabled"
78          # },
79          Should Be Equal As Strings  ${resp_resource.dict["Status"]["Health"]}  OK
80          Should Be Equal As Strings  ${resp_resource.dict["Status"]["State"]}  Enabled
81     END
82 
83 
84 Verify PowerSubsystem Efficiency Percent For All PowerSupplies
85     [Documentation]  Verify the efficiency percent for all powersupplies.
86     [Tags]  Verify_PowerSubsystem_Efficiency_Percent_For_All_PowerSupplies
87 
88     ${total_num_supplies}=  Get Total Number Of PowerSupplies
89     Rprint Vars  total_num_supplies
90 
91     # Example output:
92     # - Executing: get('/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply0')
93     # resp_resource:
94     #   [0]:
95     #     [EfficiencyPercent]:                          90
96     # - Executing: get('/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply1')
97     # resp_resource:
98     #   [0]:
99     #     [EfficiencyPercent]:                          90
100 
101     ${resp}=  Redfish.Get  ${REDFISH_CHASSIS_URI}/${CHASSIS_ID}/PowerSubsystem/PowerSupplies
102     FOR  ${entry}  IN RANGE  0  ${total_num_supplies}
103         ${resp_resource}=  Redfish.Get Attribute
104         ...  ${resp.dict["Members"][${entry}]["@odata.id"]}  EfficiencyRatings
105         Rprint Vars  resp_resource
106         ${efficiency_percentages}=  Nested Get  EfficiencyPercent  ${resp_resource}
107         Valid List  efficiency_percentages  [90]
108     END
109 
110 
111 
112 *** Keywords ***
113 
114 Get Total Number Of PowerSupplies
115     [Documentation]  Return total number of powersupplies.
116     ${total_num_powersupplies}=  Redfish.Get Attribute
117     ...  ${REDFISH_CHASSIS_URI}/${CHASSIS_ID}/PowerSubsystem/PowerSupplies  Members@odata.count
118 
119     # Entries "Members@odata.count": 4,
120     # {'@odata.id': '/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply0'}
121     # {'@odata.id': '/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply1'}
122     # {'@odata.id': '/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply2'}
123     # {'@odata.id': '/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply3'}
124     [Return]  ${total_num_powersupplies}
125 
126 
127 Set and Verify Power Mode Switches
128     [Documentation]  Verify the power mode switches successfully at standby or runtime.
129     [Arguments]  ${power_mode}
130 
131     # Description of Arguments(s):
132     # power_mode       Read the allowable power modes (e.g. "Static")
133 
134     Redfish.Login
135 
136     Redfish.patch  ${SYSTEM_BASE_URI}
137     ...  body={"PowerMode":"${power_mode}"}  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
138     ${current_power_mode}=  Redfish.Get Attribute  ${SYSTEM_BASE_URI}  PowerMode
139     Should Be Equal As Strings  ${power_mode}  ${current_power_mode}
140     ...  msg=The thermal mode does not match the current fan mode.
141     Rprint Vars  current_power_mode
142 
143 
144 Suite Teardown Execution
145     [Documentation]  Do the post suite teardown.
146 
147     Redfish.Logout
148 
149 
150 Suite Setup Execution
151     [Documentation]  Do test case setup tasks.
152 
153     Printn
154     Redfish.Login
155 
156 
157 Test Teardown Execution
158     [Documentation]  Do the post test teardown.
159 
160     FFDC On Test Case Fail
161