blob: ec62703d6bdd2b37c38bbfea5aa55acb3c27359d [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
14*** Variables ***
15
16# Power Mode Settings
17@{VALID_POWER_MODES} Static PowerSaving MaximumPerformance
18
19
20*** Test Cases ***
21
22Verify 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
43Verify 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
53Verify Allowable Power Mode Settings Switch
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
64Verify 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
84Verify PowerSubsystem Efficiency Percent For All PowerSupplies
85 [Documentation] Verify the efficiency percent for all powersupplies.
86 [Tags] Verify_PowerSubsystem_Efficiency_Percent_For_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
114Get 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
127Set 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
144Suite Teardown Execution
145 [Documentation] Do the post suite teardown.
146
147 Redfish.Logout
148
149
150Suite Setup Execution
151 [Documentation] Do test case setup tasks.
152
153 Printn
154 Redfish.Login
155
156
157Test Teardown Execution
158 [Documentation] Do the post test teardown.
159
160 FFDC On Test Case Fail