blob: 4a8c5a7452c2ac1ee9f92241a108a42584d67662 [file] [log] [blame]
Rahul Maheshwari71525ad2019-08-01 05:54:06 -05001*** Settings ***
2
3Documentation Module to test IPMI asset tag functionality.
4Resource ../lib/ipmi_client.robot
5Resource ../lib/openbmc_ffdc.robot
Tony Lee3fdd31e2020-02-15 11:21:40 +08006Variables ../data/ipmi_raw_cmd_table.py
Tony Lee18c6f9a2020-02-18 17:00:20 +08007Variables ../data/ipmi_variable.py
8Library ../lib/bmc_network_utils.py
9Library ../lib/ipmi_utils.py
Rahul Maheshwari71525ad2019-08-01 05:54:06 -050010
11Test Teardown FFDC On Test Case Fail
12
13*** Test Cases ***
14
15Verify Get DCMI Capabilities
16 [Documentation] Verify get DCMI capabilities command output.
17 [Tags] Verify_Get_DCMI_Capabilities
18 ${cmd_output}= Run IPMI Standard Command dcmi discover
19
20 @{supported_capabilities}= Create List
21 # Supported DCMI capabilities:
22 ... Mandatory platform capabilties
23 ... Optional platform capabilties
24 ... Power management available
25 ... Managebility access capabilties
26 ... In-band KCS channel available
27 # Mandatory platform attributes:
28 ... 200 SEL entries
29 ... SEL automatic rollover is enabled
30 # Optional Platform Attributes:
31 ... Slave address of device: 0h (8bits)(Satellite/External controller)
32 ... Channel number is 0h (Primary BMC)
33 ... Device revision is 0
34 # Manageability Access Attributes:
35 ... Primary LAN channel number: 1 is available
36 ... Secondary LAN channel is not available for OOB
37 ... No serial channel is available
38
Rahul Maheshwari3a1d9912020-02-25 03:13:14 -060039 FOR ${capability} IN @{supported_capabilities}
40 Should Contain ${cmd_output} ${capability} ignore_case=True
41 ... msg=Supported DCMI capabilities not present.
42 END
Tony Lee3fdd31e2020-02-15 11:21:40 +080043
44
45Test Get Self Test Results via IPMI Raw Command
46 [Documentation] Get self test results via IPMI raw command and verify the output.
George Keishingb98036a2022-01-31 12:39:47 -060047 [Tags] Test_Get_Self_Test_Results_via_IPMI_Raw_Command
Tony Lee3fdd31e2020-02-15 11:21:40 +080048
49 ${resp}= Run IPMI Standard Command raw ${IPMI_RAW_CMD['Self_Test_Results']['Get'][0]}
50
51 # 55h = No error. All Self Tests Passed.
52 # 56h = Self Test function not implemented in this controller.
53 Should Contain Any ${resp} 55 00 56 00
54
55
56Test Get Device GUID Via IPMI Raw Command
57 [Documentation] Get device GUID via IPMI raw command and verify it using Redfish.
George Keishingb98036a2022-01-31 12:39:47 -060058 [Tags] Test_Get_Device_GUID_Via_IPMI_Raw_Command
Tony Lee3fdd31e2020-02-15 11:21:40 +080059 [Teardown] Run Keywords Redfish.Logout AND FFDC On Test Case Fail
60 # Get GUIDS via IPMI.
61 # This should match the /redfish/v1/Managers/bmc's UUID data.
62 ${guids}= Run IPMI Standard Command raw ${IPMI_RAW_CMD['Device GUID']['Get'][0]}
63 # Reverse the order and remove space delims.
64 ${guids}= Split String ${guids}
65 Reverse List ${guids}
66 ${guids}= Evaluate "".join(${guids})
67
68 Redfish.Login
69 ${uuid}= Redfish.Get Attribute /redfish/v1/Managers/bmc UUID
70 ${uuid}= Remove String ${uuid} -
71
72 Rprint Vars guids uuid
73 Valid Value uuid ['${guids}']
Tony Lee18c6f9a2020-02-18 17:00:20 +080074
75
76Verify Get Channel Info via IPMI
77 [Documentation] Verify get channel info via IPMI.
78 [Tags] Verify_Get_Channel_Info_via_IPMI
79
80 # Get channel info via ipmi command "ipmitool channel info [channel number]".
Tony Lee87c9cb92020-03-04 14:47:09 +080081 # Verify channel info with files "channel_access_volatile.json", "channel_access_nv.json"
82 # and "channel_config.json" in BMC.
Tony Lee18c6f9a2020-02-18 17:00:20 +080083
84 # Example output from 'Get Channel Info':
85 # channel_info:
86 # [channel_0x2_info]:
87 # [channel_medium_type]: 802.3 LAN
88 # [channel_protocol_type]: IPMB-1.0
89 # [session_support]: multi-session
90 # [active_session_count]: 0
91 # [protocol_vendor_id]: 7154
Tony Lee87c9cb92020-03-04 14:47:09 +080092 # [volatile(active)_settings]:
93 # [alerting]: enabled
94 # [per-message_auth]: enabled
95 # [user_level_auth]: enabled
96 # [access_mode]: always available
97 # [Non-Volatile Settings]:
98 # [alerting]: enabled
99 # [per-message_auth]: enabled
100 # [user_level_auth]: enabled
101 # [access_mode]: always available
Tony Lee18c6f9a2020-02-18 17:00:20 +0800102
103 ${channel_info_ipmi}= Get Channel Info ${CHANNEL_NUMBER}
104 ${active_channel_config}= Get Active Channel Config
Tony Lee87c9cb92020-03-04 14:47:09 +0800105 ${channel_volatile_data_config}= Get Channel Access Config /run/ipmi/channel_access_volatile.json
106 ${channel_nv_data_config}= Get Channel Access Config /var/lib/ipmi/channel_access_nv.json
107
George Keishing33be3592022-03-08 08:52:25 -0600108 Rprint Vars channel_info_ipmi
109 Rprint Vars active_channel_config
110 Rprint Vars channel_volatile_data_config
111 Rprint Vars channel_nv_data_config
Tony Lee18c6f9a2020-02-18 17:00:20 +0800112
113 Valid Value medium_type_ipmi_conf_map['${channel_info_ipmi['channel_0x${CHANNEL_NUMBER}_info']['channel_medium_type']}']
114 ... ['${active_channel_config['${CHANNEL_NUMBER}']['channel_info']['medium_type']}']
115
116 Valid Value protocol_type_ipmi_conf_map['${channel_info_ipmi['channel_0x${CHANNEL_NUMBER}_info']['channel_protocol_type']}']
117 ... ['${active_channel_config['${CHANNEL_NUMBER}']['channel_info']['protocol_type']}']
118
119 Valid Value channel_info_ipmi['channel_0x${CHANNEL_NUMBER}_info']['session_support']
120 ... ['${active_channel_config['${CHANNEL_NUMBER}']['channel_info']['session_supported']}']
121
122 Valid Value channel_info_ipmi['channel_0x${CHANNEL_NUMBER}_info']['active_session_count']
123 ... ['${active_channel_config['${CHANNEL_NUMBER}']['active_sessions']}']
124 # IPMI Spec: The IPMI Enterprise Number is: 7154 (decimal)
125 Valid Value channel_info_ipmi['channel_0x${CHANNEL_NUMBER}_info']['protocol_vendor_id'] ['7154']
126
Tony Lee87c9cb92020-03-04 14:47:09 +0800127 # Verify volatile(active)_settings
128 Valid Value disabled_ipmi_conf_map['${channel_info_ipmi['volatile(active)_settings']['alerting']}']
129 ... ['${channel_volatile_data_config['${CHANNEL_NUMBER}']['alerting_disabled']}']
Tony Lee18c6f9a2020-02-18 17:00:20 +0800130
Tony Lee87c9cb92020-03-04 14:47:09 +0800131 Valid Value disabled_ipmi_conf_map['${channel_info_ipmi['volatile(active)_settings']['per-message_auth']}']
132 ... ['${channel_volatile_data_config['${CHANNEL_NUMBER}']['per_msg_auth_disabled']}']
Tony Lee18c6f9a2020-02-18 17:00:20 +0800133
Tony Lee87c9cb92020-03-04 14:47:09 +0800134 Valid Value disabled_ipmi_conf_map['${channel_info_ipmi['volatile(active)_settings']['user_level_auth']}']
135 ... ['${channel_volatile_data_config['${CHANNEL_NUMBER}']['user_auth_disabled']}']
Tony Lee18c6f9a2020-02-18 17:00:20 +0800136
Tony Lee87c9cb92020-03-04 14:47:09 +0800137 Valid Value access_mode_ipmi_conf_map['${channel_info_ipmi['volatile(active)_settings']['access_mode']}']
138 ... ['${channel_volatile_data_config['${CHANNEL_NUMBER}']['access_mode']}']
139
140 # Verify Non-Volatile Settings
141 Valid Value disabled_ipmi_conf_map['${channel_info_ipmi['non-volatile_settings']['alerting']}']
142 ... ['${channel_nv_data_config['${CHANNEL_NUMBER}']['alerting_disabled']}']
143
144 Valid Value disabled_ipmi_conf_map['${channel_info_ipmi['non-volatile_settings']['per-message_auth']}']
145 ... ['${channel_nv_data_config['${CHANNEL_NUMBER}']['per_msg_auth_disabled']}']
146
147 Valid Value disabled_ipmi_conf_map['${channel_info_ipmi['non-volatile_settings']['user_level_auth']}']
148 ... ['${channel_nv_data_config['${CHANNEL_NUMBER}']['user_auth_disabled']}']
149
150 Valid Value access_mode_ipmi_conf_map['${channel_info_ipmi['non-volatile_settings']['access_mode']}']
151 ... ['${channel_nv_data_config['${CHANNEL_NUMBER}']['access_mode']}']
Tony Lee0754c5f2020-03-13 19:38:24 +0800152
153
154Test Get Channel Authentication Capabilities via IPMI
155 [Documentation] Test get channel authentication capabilities via IPMI.
156 [Tags] Test_Get_Channel_Authentication_Capabilities_via_IPMI
157
158 ${channel_auth_cap}= Get Channel Auth Capabilities ${CHANNEL_NUMBER}
159 Rprint Vars channel_auth_cap
160
161 Valid Value channel_auth_cap['channel_number'] ['${CHANNEL_NUMBER}']
162 Valid Value channel_auth_cap['kg_status'] ['default (all zeroes)']
163 Valid Value channel_auth_cap['per_message_authentication'] ['enabled']
164 Valid Value channel_auth_cap['user_level_authentication'] ['enabled']
165 Valid Value channel_auth_cap['non-null_user_names_exist'] ['yes']
166 Valid Value channel_auth_cap['null_user_names_exist'] ['no']
167 Valid Value channel_auth_cap['anonymous_login_enabled'] ['no']
168 Valid Value channel_auth_cap['channel_supports_ipmi_v1.5'] ['no']
169 Valid Value channel_auth_cap['channel_supports_ipmi_v2.0'] ['yes']
Tony Lee2d071822020-02-19 16:37:58 +0800170
171
172Verify Set Session Privilege Level via IPMI Raw Command
173 [Documentation] Set session privilege with given privilege level and verify the response with
174 ... expected level.
175 [Tags] Verify_Set_Session_Privilege_Level_via_IPMI_Raw_Command
176 [Template] Set Session Privilege Level And Verify
177
178 # privilege_level expected_level
179 0x00 04
180 0x02 02
181 0x03 03
182 0x04 04
183
184
George Keishingb98036a2022-01-31 12:39:47 -0600185Verify Set Invalid Session Privilege Level Via IPMI Raw Command
Tony Lee94f1a6c2020-03-25 10:37:46 +0800186 [Documentation] Verify set invalid session privilege level via IPMI raw command.
187 [Tags] Verify_Set_Invalid_Session_Privilege_Level_Via_IPMI_Raw_Command
188 [Template] Set Invalid Session Privilege Level And Verify
189
190 # invalid_privilege_level
191 0x05
192 0x06
193 0x07
194 0x0F
195
196
George Keishingb98036a2022-01-31 12:39:47 -0600197Verify Close Session Via IPMI
Tony Leed12b40d2020-03-19 10:45:21 +0800198 [Documentation] Verify close session via IPMI.
199 [Tags] Verify_Close_Session_Via_IPMI
200
201 # The "close session command" can be tested with any out-of-band IPMI command.
202 # When the session is about to close, it will execute the close session command at the end.
203
204 ${cmd}= Catenate mc info -vvv 2>&1 | grep "Closed Session"
205 ${cmd_output}= Run External IPMI Standard Command ${cmd}
206
207 Should Contain ${cmd_output} Closed Session
208
209
Ashwini Chandrappa4ec70852021-09-07 09:10:36 -0500210Verify Chassis Identify via IPMI
211 [Documentation] Set chassis identify using IPMI and verify.
212 [Tags] Verify_Chassis_Identify_via_IPMI
213 [Setup] Redfish.Login
214 [Teardown] Redfish.logout
215
216 # Set to default "chassis identify" and verify that LED blinks for 15s.
217 Run IPMI Standard Command chassis identify
218 Verify Identify LED State Via Redfish Lit
219
220 Sleep 18s
221 Verify Identify LED State Via Redfish Off
222
223 # Set "chassis identify" to 10s and verify that the LED blinks for 10s.
224 Run IPMI Standard Command chassis identify 10
225 Verify Identify LED State Via Redfish Lit
226
227 Sleep 12s
228 Verify Identify LED State Via Redfish Off
229
230
231Verify Chassis Identify Off And Force Identify On via IPMI
232 [Documentation] Set chassis identify to "off" and "force" using IPMI and verify.
233 [Tags] Verify_Chassis_Identify_Off_And_Force_Identify_On_via_IPMI
234 [Setup] Redfish.Login
235 [Teardown] Redfish.logout
236
237 # Set the LED to "Force Identify On".
238 Run IPMI Standard Command chassis identify force
239 Verify Identify LED State Via Redfish Lit
240
241 # Set "chassis identify" to 0 and verify that the LED turns off.
242 Run IPMI Standard Command chassis identify 0
243 Verify Identify LED State Via Redfish Off
244
245
Tony Lee2d071822020-02-19 16:37:58 +0800246*** Keywords ***
247
248Set Session Privilege Level And Verify
249 [Documentation] Set session privilege with given privilege level and verify the response with
250 ... expected level.
251 [Arguments] ${privilege_level} ${expected_level}
252 # Description of argument(s):
253 # privilege_level Requested Privilege Level.
George Keishing33be3592022-03-08 08:52:25 -0600254 # expected_level New Privilege Level (or present level if ‘return present privilege level’
255 # was selected).
Tony Lee2d071822020-02-19 16:37:58 +0800256
Tony Leeb49853c2020-06-03 15:27:56 +0800257 ${resp}= Run External IPMI Raw Command
Tony Lee94f1a6c2020-03-25 10:37:46 +0800258 ... 0x06 0x3b ${privilege_level}
Tony Lee2d071822020-02-19 16:37:58 +0800259 Should Contain ${resp} ${expected_level}
Tony Lee94f1a6c2020-03-25 10:37:46 +0800260
261
262Set Invalid Session Privilege Level And Verify
263 [Documentation] Set invalid session privilege level and verify the response.
264 [Arguments] ${privilege_level}
265 # Description of argument(s):
266 # privilege_level Requested Privilege Level.
267
268 # Verify requested level exceeds Channel and/or User Privilege Limit.
Tony Leeb49853c2020-06-03 15:27:56 +0800269 ${msg}= Run Keyword And Expect Error * Run External IPMI Raw Command
Tony Lee94f1a6c2020-03-25 10:37:46 +0800270 ... 0x06 0x3b ${privilege_level}
271 Should Contain ${msg} Unknown rsp=0x81
Ashwini Chandrappa4ec70852021-09-07 09:10:36 -0500272
273
274Verify Identify LED State Via Redfish
275 [Documentation] Verify that Redfish identify LED system with given state.
276 [Arguments] ${expected_state}
277 # Description of argument(s):
278 # expected_led_status Expected value of Identify LED.
279
George Keishing52eb7c22022-03-11 10:58:53 -0600280 # Python module: get_member_list(resource_path)
281 ${systems}= Redfish_Utils.Get Member List /redfish/v1/Systems
282 FOR ${system} IN @{systems}
283 ${led_value}= Redfish.Get Attribute ${system} IndicatorLED
284 Should Be True '${led_value}' == '${expected_state}'
285 END