blob: baa9227904f7040dda2966d33f13b929f5cfd527 [file] [log] [blame]
George Keishing22872e52019-01-30 22:44:04 -06001*** Settings ***
Joy Onyerikwudbfe97d2019-03-11 19:44:56 -05002Documentation Test BMC Manager functionality.
George Keishing2db7bca2019-02-14 13:03:08 -06003Resource ../../lib/resource.robot
George Keishing22872e52019-01-30 22:44:04 -06004Resource ../../lib/bmc_redfish_resource.robot
5Resource ../../lib/common_utils.robot
George Keishing3298d5c2019-02-12 06:59:25 -06006Resource ../../lib/openbmc_ffdc.robot
George Keishingba0441c2019-03-09 22:22:57 -06007Resource ../../lib/boot_utils.robot
George Keishing44f890b2019-04-22 13:32:15 -05008Resource ../../lib/open_power_utils.robot
George Keishing224377b2019-07-15 14:15:09 -05009Resource ../../lib/bmc_network_utils.robot
10Library ../../lib/gen_robot_valid.py
George Keishing22872e52019-01-30 22:44:04 -060011
George Keishing97c93942019-03-04 12:45:07 -060012Test Setup Test Setup Execution
George Keishing49f46332019-03-26 08:13:05 -050013Test Teardown Test Teardown Execution
George Keishing22872e52019-01-30 22:44:04 -060014
George Keishing912094b2019-06-07 09:49:03 -050015
16*** Variables ***
17
18${SYSTEM_SHUTDOWN_TIME} ${5}
19
20# Strings to check from journald.
aravinth05109fae1662022-06-29 16:42:27 +000021${REBOOT_REGEX} ^\-- Boot | Startup finished
George Keishing912094b2019-06-07 09:49:03 -050022
George Keishing22872e52019-01-30 22:44:04 -060023*** Test Cases ***
24
George Keishing5ee33d92019-02-02 12:33:25 -060025Verify Redfish BMC Firmware Version
George Keishing22872e52019-01-30 22:44:04 -060026 [Documentation] Get firmware version from BMC manager.
George Keishing5ee33d92019-02-02 12:33:25 -060027 [Tags] Verify_Redfish_BMC_Firmware_Version
George Keishing22872e52019-01-30 22:44:04 -060028
George Keishing97c93942019-03-04 12:45:07 -060029 Redfish.Login
ganesanb4d430282023-04-27 14:33:23 +000030 ${resp}= Redfish.Get /redfish/v1/Managers/${MANAGER_ID}
George Keishing22872e52019-01-30 22:44:04 -060031 Should Be Equal As Strings ${resp.status} ${HTTP_OK}
32 ${bmc_version}= Get BMC Version
33 Should Be Equal As Strings
34 ... ${resp.dict["FirmwareVersion"]} ${bmc_version.strip('"')}
George Keishing22872e52019-01-30 22:44:04 -060035
36
George Keishing5ee33d92019-02-02 12:33:25 -060037Verify Redfish BMC Manager Properties
George Keishing22872e52019-01-30 22:44:04 -060038 [Documentation] Verify BMC managers resource properties.
George Keishing5ee33d92019-02-02 12:33:25 -060039 [Tags] Verify_Redfish_BMC_Manager_Properties
George Keishing22872e52019-01-30 22:44:04 -060040
George Keishing97c93942019-03-04 12:45:07 -060041 Redfish.Login
ganesanb4d430282023-04-27 14:33:23 +000042 ${resp}= Redfish.Get /redfish/v1/Managers/${MANAGER_ID}
George Keishing22872e52019-01-30 22:44:04 -060043 Should Be Equal As Strings ${resp.status} ${HTTP_OK}
44 # Example:
45 # "Description": "Baseboard Management Controller"
46 # "Id": "bmc"
47 # "Model": "OpenBmc",
48 # "Name": "OpenBmc Manager",
49 # "UUID": "xxxxxxxx-xxx-xxx-xxx-xxxxxxxxxxxx"
50 # "PowerState": "On"
51
52 Should Be Equal As Strings
53 ... ${resp.dict["Description"]} Baseboard Management Controller
54 Should Be Equal As Strings ${resp.dict["Id"]} bmc
George Keishing22872e52019-01-30 22:44:04 -060055 Should Be Equal As Strings ${resp.dict["Name"]} OpenBmc Manager
56 Should Not Be Empty ${resp.dict["UUID"]}
57 Should Be Equal As Strings ${resp.dict["PowerState"]} On
George Keishing22872e52019-01-30 22:44:04 -060058
59
George Keishing224377b2019-07-15 14:15:09 -050060Verify MAC Address Property Is Populated
61 [Documentation] Verify BMC managers resource properties.
62 [Tags] Verify_MAC_Address_Property_Is_Populated
63
George Keishing11789a22020-07-17 14:38:00 -050064 # Get OrderedDict from the BMC which contains active ethernet channel.
65 # Example: ([('1', {'name': 'eth0',
66 # 'is_valid': True,
67 # 'active_sessions': 0,
68 # 'channel_info': {'medium_type': 'lan-802.3',
69 # 'protocol_type': 'ipmb-1.0',
70 # 'session_supported': 'multi-session',
71 # 'is_ipmi': True
72 # }
73 # }
74 # )])
75
76 ${active_channel_config}= Get Active Channel Config
77
78 FOR ${channel_number} IN @{active_channel_config.keys()}
79 Log Dictionary ${active_channel_config["${channel_number}"]}
80
aravinth0510a3b203c2022-09-12 10:18:36 +000081 # Skip channel if is_valid is false for the channel number
Sridevi Rameshac155722025-05-02 05:09:40 -050082 IF ${active_channel_config["${channel_number}"]["is_valid"]}==${FALSE} CONTINUE
aravinth0510a3b203c2022-09-12 10:18:36 +000083
George Keishing11789a22020-07-17 14:38:00 -050084 # Get ethernet valid paths in redfish.
ganesanb4d430282023-04-27 14:33:23 +000085 # Example: ['/redfish/v1/Managers/${MANAGER_ID}/EthernetInterfaces']
George Keishing11789a22020-07-17 14:38:00 -050086 ${eth_interface}= redfish_utils.Get Endpoint Path List
87 ... /redfish/v1/Managers/ EthernetInterfaces
88
89 # Get the MACAddress attrivute value with the 'name': 'eth0'.
ganesanb4d430282023-04-27 14:33:23 +000090 # Example: /redfish/v1/Managers/${MANAGER_ID}/EthernetInterfaces/eth0
George Keishing11789a22020-07-17 14:38:00 -050091 ${redfish_mac_addr}= Redfish.Get Attribute
92 ... ${eth_interface[0]}/${active_channel_config["${channel_number}"]["name"]}
93 ... MACAddress
94 END
95
George Keishing224377b2019-07-15 14:15:09 -050096 Rprint Vars redfish_mac_addr fmt=terse
Michael Walshe7edb222019-08-19 17:39:38 -050097 Valid Value redfish_mac_addr
George Keishing224377b2019-07-15 14:15:09 -050098
99 ${ipaddr_mac_addr}= Get BMC MAC Address List
100 Rprint Vars ipaddr_mac_addr fmt=terse
101
102 List Should Contain Value ${ipaddr_mac_addr} ${redfish_mac_addr}
103
104
George Keishingba0441c2019-03-09 22:22:57 -0600105Redfish BMC Manager GracefulRestart When Host Off
106 [Documentation] BMC graceful restart when host is powered off.
107 [Tags] Redfish_BMC_Manager_GracefulRestart_When_Host_Off
George Keishing22872e52019-01-30 22:44:04 -0600108
George Keishing22872e52019-01-30 22:44:04 -0600109 # "Actions": {
110 # "#Manager.Reset": {
111 # "ResetType@Redfish.AllowableValues": [
Sushil Singhb910d892021-11-17 05:34:29 -0600112 # "GracefulRestart",
113 # "ForceRestart"
George Keishing22872e52019-01-30 22:44:04 -0600114 # ],
ganesanb4d430282023-04-27 14:33:23 +0000115 # "target": "/redfish/v1/Managers/${MANAGER_ID}/Actions/Manager.Reset"
George Keishing22872e52019-01-30 22:44:04 -0600116 # }
117
George Keishing912094b2019-06-07 09:49:03 -0500118 ${test_file_path}= Set Variable /tmp/before_bmcreboot
119 BMC Execute Command touch ${test_file_path}
120
Sushil Singhb910d892021-11-17 05:34:29 -0600121 Redfish Power Off stack_mode=skip
122
123 Redfish BMC Reset Operation reset_type=GracefulRestart
124
125 Is BMC Standby
126
George Keishinge9ebf912022-07-19 10:23:26 -0500127 ${stdout} ${stderr} ${rc}= BMC Execute Command test ! -f ${test_file_path} print_out=1
Sushil Singhb910d892021-11-17 05:34:29 -0600128 Verify BMC RTC And UTC Time Drift
129
130 # Check for journald persistency post reboot.
aravinth05109fae1662022-06-29 16:42:27 +0000131 Wait Until Keyword Succeeds 3 min 10 sec
132 ... Check For Regex In Journald ${REBOOT_REGEX} error_check=${1}
Sushil Singhb910d892021-11-17 05:34:29 -0600133
134
135Redfish BMC Manager ForceRestart When Host Off
136 [Documentation] BMC force restart when host is powered off.
137 [Tags] Redfish_BMC_Manager_ForceRestart_When_Host_Off
138
139 # "Actions": {
140 # "#Manager.Reset": {
141 # "ResetType@Redfish.AllowableValues": [
142 # "GracefulRestart",
143 # "ForceRestart"
144 # ],
ganesanb4d430282023-04-27 14:33:23 +0000145 # "target": "/redfish/v1/Managers/${MANAGER_ID}/Actions/Manager.Reset"
Sushil Singhb910d892021-11-17 05:34:29 -0600146 # }
147
148 ${test_file_path}= Set Variable /tmp/before_bmcreboot
149 BMC Execute Command touch ${test_file_path}
150
151 Redfish Power Off stack_mode=skip
152
153 Redfish BMC Reset Operation reset_type=ForceRestart
154
155 Is BMC Standby
George Keishing22872e52019-01-30 22:44:04 -0600156
George Keishinge9ebf912022-07-19 10:23:26 -0500157 ${stdout} ${stderr} ${rc}= BMC Execute Command test ! -f ${test_file_path} print_out=1
George Keishing912094b2019-06-07 09:49:03 -0500158 Verify BMC RTC And UTC Time Drift
159
160 # Check for journald persistency post reboot.
aravinth05109fae1662022-06-29 16:42:27 +0000161 Wait Until Keyword Succeeds 3 min 10 sec
162 ... Check For Regex In Journald ${REBOOT_REGEX} error_check=${1}
George Keishing912094b2019-06-07 09:49:03 -0500163
George Keishingba0441c2019-03-09 22:22:57 -0600164
George Keishinge210d592019-06-11 11:18:35 -0500165Verify Boot Count After BMC Reboot
166 [Documentation] Verify boot count increments on BMC reboot.
167 [Tags] Verify_Boot_Count_After_BMC_Reboot
aravinth051083f31182022-09-30 12:32:57 +0000168 [Setup] Run Keywords Update NTP Test Initial Status AND
169 ... Set NTP state ${TRUE}
170 [Teardown] Restore NTP Status
George Keishinge210d592019-06-11 11:18:35 -0500171
172 Set BMC Boot Count ${0}
173 Redfish OBMC Reboot (off)
174 ${boot_count}= Get BMC Boot Count
175 Should Be Equal ${boot_count} ${1} msg=Boot count is not incremented.
176
177
George Keishingba0441c2019-03-09 22:22:57 -0600178Redfish BMC Manager GracefulRestart When Host Booted
179 [Documentation] BMC graceful restart when host is running.
180 [Tags] Redfish_BMC_Manager_GracefulRestart_When_Host_Booted
181
182 Redfish OBMC Reboot (run)
183
George Keishing44f890b2019-04-22 13:32:15 -0500184 # TODO: Replace OCC state check with redfish property when available.
George Keishinge9ebf912022-07-19 10:23:26 -0500185 Wait Until Keyword Succeeds 10 min 30 sec Verify OCC State
George Keishing44f890b2019-04-22 13:32:15 -0500186
George Keishing22872e52019-01-30 22:44:04 -0600187
George Keishing97c93942019-03-04 12:45:07 -0600188*** Keywords ***
George Keishing22872e52019-01-30 22:44:04 -0600189
George Keishing97c93942019-03-04 12:45:07 -0600190Test Setup Execution
191 [Documentation] Do test case setup tasks.
192
193 redfish.Login
194
195
196Test Teardown Execution
197 [Documentation] Do the post test teardown.
198
199 FFDC On Test Case Fail
George Keishing780ee112021-02-02 23:27:22 -0600200 Run Keyword And Ignore Error redfish.Logout
aravinth051083f31182022-09-30 12:32:57 +0000201
202
203Update NTP Test Initial Status
204 [Documentation] Update the initial status of NTP.
205
George Keishinga69ca6a2022-10-12 09:02:47 -0500206 Redfish.Login
aravinth051083f31182022-09-30 12:32:57 +0000207 ${original_ntp}= Redfish.Get Attribute ${REDFISH_NW_PROTOCOL_URI} NTP
208 Set Suite Variable ${original_ntp}
209
210
211Set NTP state
212 [Documentation] Set NTP service inactive.
213 [Arguments] ${state}
214
George Keishinga69ca6a2022-10-12 09:02:47 -0500215 Redfish.Login
aravinth051083f31182022-09-30 12:32:57 +0000216 Redfish.Patch ${REDFISH_NW_PROTOCOL_URI} body={'NTP':{'ProtocolEnabled': ${state}}}
217 ... valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
218
219
220Restore NTP Status
221 [Documentation] Restore NTP Status.
222
George Keishinge6e161e2025-05-08 10:18:30 +0530223 IF '${original_ntp["ProtocolEnabled"]}' == 'True'
224 Set NTP state ${TRUE}
225 ELSE
226 Set NTP state ${FALSE}
227 END