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