blob: cb4a3537dc15bcbe734d50f985f6180a7433f774 [file] [log] [blame]
George Keishing78ea2dc2016-11-18 04:33:45 -06001*** Settings ***
2Documentation This module will take whatever action is necessary
3... to bring the BMC to a stable, standby state. For our
4... purposes, a stable state is defined as:
5... - BMC is communicating
6... (pinging, sshing and REST commands working)
7... - Power state is 0 (off)
Rahul Maheshwari2c725042017-01-29 22:55:28 -06008... - BMC state is "Ready"
9... - HOST state is "Off"
George Keishingefc3ff22017-12-12 11:49:25 -060010... - Boot policy is "ALWAYS_POWER_OFF"
George Keishing34d4b8d2016-12-07 08:35:29 -060011... Power cycle system via PDU if specified
George Keishing0bd59f12016-12-14 10:39:21 -060012... Prune archived journal logs
George Keishing78ea2dc2016-11-18 04:33:45 -060013
George Keishing78ea2dc2016-11-18 04:33:45 -060014Resource ../lib/utils.robot
George Keishing34d4b8d2016-12-07 08:35:29 -060015Resource ../lib/pdu/pdu.robot
Rahul Maheshwari9bd3abc2017-02-07 00:51:30 -060016Resource ../lib/state_manager.robot
Michael Walsh1b0ceb22017-05-31 16:03:01 -050017Resource ../lib/bmc_network_utils.robot
Sunil Mec6fe312017-06-19 04:21:25 -050018Resource ../lib/bmc_cleanup.robot
George Keishing27a1f202017-08-30 22:40:26 -050019Resource ../lib/dump_utils.robot
George Keishingcaa718b2019-03-10 00:08:33 -060020Resource ../lib/bmc_redfish_resource.robot
21Resource ../lib/bmc_redfish_utils.robot
George Keishingc7748be2018-07-12 05:40:37 -050022Library ../lib/gen_misc.py
George Keishing78ea2dc2016-11-18 04:33:45 -060023
George Keishing8dd04af2021-03-23 10:36:40 -050024# Force the test to timedout to prevent test hanging.
25Test Timeout 10 minutes
26
27
George Keishing78ea2dc2016-11-18 04:33:45 -060028*** Variables ***
29${HOST_SETTING} /org/openbmc/settings/host0
30
George Keishingc7748be2018-07-12 05:40:37 -050031${ERROR_REGEX} xyz.openbmc_project.Software.BMC.Updater.service: Failed with result 'core-dump'
32
Gunnar Mills7c8923f2016-12-12 21:19:52 -060033*** Test Cases ***
George Keishing78ea2dc2016-11-18 04:33:45 -060034
George Keishing62f94302017-01-31 07:00:52 -060035Get To Stable State
Rahul Maheshwari2c725042017-01-29 22:55:28 -060036 [Documentation] BMC cleanup drive to stable state
37 ... 1. PDU powercycle if specified
38 ... 1. Ping Test
39 ... 2. SSH Connection session Test
40 ... 3. REST Connection session Test
41 ... 4. Reboot BMC if REST Test failed
42 ... 5. Get BMC in Ready state if its not in this state
43 ... 6. Get Host in Off state if its not in this state
44 ... 7. Update restore policy
Sunil M89fb0f52017-05-26 05:25:33 -050045 ... 8. Verify and Update MAC address.
George Keishing62f94302017-01-31 07:00:52 -060046 [Tags] Get_To_Stable_State
George Keishing78ea2dc2016-11-18 04:33:45 -060047
Rahul Maheshwari2c725042017-01-29 22:55:28 -060048 Run Keyword And Ignore Error Powercycle System Via PDU
George Keishing34d4b8d2016-12-07 08:35:29 -060049
George Keishing13497eb2018-11-07 06:35:14 -060050 ${ping_status}= Run Keyword And Return Status
51 ... Wait For Host To Ping ${OPENBMC_HOST} 2 mins
52
53 # Check if the ping works using 1400 MTU.
George Keishinge31e2232020-10-05 12:25:25 -050054 #Run Keyword if ${ping_status} == ${True} MTU Ping Test
George Keishing13497eb2018-11-07 06:35:14 -060055
56 Run Keyword if ${ping_status} == ${False}
57 ... Fail ${OPENBMC_HOST} ping test failed.
58
59 Open Connection And Log In host=${OPENBMC_HOST}
George Keishing78ea2dc2016-11-18 04:33:45 -060060
George Keishing8dd04af2021-03-23 10:36:40 -050061 Run Keyword If ${REDFISH_SUPPORTED}
62 ... Redfish Clean Up
George Keishing334df292021-02-08 05:08:47 -060063 ... ELSE
George Keishing8dd04af2021-03-23 10:36:40 -050064 ... REST Clean Up
65
George Keishing78ea2dc2016-11-18 04:33:45 -060066
George Keishing0bd59f12016-12-14 10:39:21 -060067 Prune Journal Log
Charles Paul Hofer7cdb8b42018-09-10 12:12:04 -050068 Check For Current Boot Application Failures
George Keishing78ea2dc2016-11-18 04:33:45 -060069
70*** Keywords ***
71
George Keishing8dd04af2021-03-23 10:36:40 -050072
73REST Clean Up
74 [Documentation] Check states, reboot if needed and poweroff.
75
76 Wait Until Keyword Succeeds 1 min 30 sec Initialize OpenBMC
77
78 ${ready_status}= Run Keyword And Return Status Is BMC Ready
79 Run Keyword If '${ready_status}' == '${False}'
80 ... Put BMC State Ready
81 ... ELSE
82 ... REST Power Off stack_mode=skip
83
84 Run Keyword And Ignore Error Set BMC Power Policy ${ALWAYS_POWER_OFF}
85 Run Keyword And Ignore Error Delete All Error Logs
86 Run Keyword And Ignore Error Delete All Dumps
87
88
89Redfish Clean Up
90 [Documentation] Check states, reboot if needed and poweroff.
91
92 Wait Until Keyword Succeeds 1 min 30 sec Redfish.Login
93
94 Redfish Power Off stack_mode=skip
95
96 Run Keyword And Ignore Error Redfish Set Power Restore Policy AlwaysOff
97 Run Keyword And Ignore Error Redfish Purge Event Log
98 Run Keyword And Ignore Error Redfish Delete All BMC Dumps
George Keishing2ef6a7d2021-05-19 09:05:32 -050099 Run Keyword And Ignore Error Redfish Delete All System Dumps
Anusha Dathatri34298bf2021-06-17 00:00:01 -0500100 Run Keyword And Ignore Error Clear All Subscriptions
George Keishing8dd04af2021-03-23 10:36:40 -0500101 Run Keyword And Ignore Error Delete All Redfish Sessions
102
103
George Keishing78ea2dc2016-11-18 04:33:45 -0600104BMC Online Test
105 [Documentation] BMC ping, SSH, REST connection Test
106
Gunnar Mills597ffa02016-12-06 11:26:53 -0600107 ${l_status}= Run Keyword and Return Status
George Keishing78ea2dc2016-11-18 04:33:45 -0600108 ... Verify Ping and REST Authentication
109 Run Keyword If '${l_status}' == '${False}'
110 ... Fail msg=System not in ideal state to continue [ERROR]
111
112
George Keishing78ea2dc2016-11-18 04:33:45 -0600113Update Policy Setting
114 [Documentation] Update the given restore policy
Gunnar Mills38032802016-12-12 13:43:40 -0600115 [Arguments] ${policy}
George Keishing78ea2dc2016-11-18 04:33:45 -0600116
Gunnar Mills597ffa02016-12-06 11:26:53 -0600117 ${valueDict}= create dictionary data=${policy}
George Keishing78ea2dc2016-11-18 04:33:45 -0600118 Write Attribute ${HOST_SETTING} power_policy data=${valueDict}
119 ${currentPolicy}= Read Attribute ${HOST_SETTING} power_policy
120 Should Be Equal ${currentPolicy} ${policy}
121
George Keishingd5123f72016-12-07 09:54:51 -0600122
123Trigger Warm Reset via Reboot
124 [Documentation] Execute reboot command on the remote BMC and
125 ... returns immediately. This keyword "Start Command"
126 ... returns nothing and does not wait for the command
127 ... execution to be finished.
128 Open Connection And Log In
129
130 Start Command /sbin/reboot
George Keishing34d4b8d2016-12-07 08:35:29 -0600131
132
133Powercycle System Via PDU
Joy Onyerikwuf4a807b2018-06-20 08:43:54 -0500134 [Documentation] AC cycle the system via PDU.
George Keishing34d4b8d2016-12-07 08:35:29 -0600135
136 Validate Parameters
137 PDU Power Cycle
138 Check If BMC is Up 5 min 10 sec
139
140
Charles Paul Hofer7cdb8b42018-09-10 12:12:04 -0500141Check For Current Boot Application Failures
George Keishingc7748be2018-07-12 05:40:37 -0500142 [Documentation] Parse the journal log and check for failures.
143 [Arguments] ${error_regex}=${ERROR_REGEX}
144
145 ${error_regex}= Escape Bash Quotes ${error_regex}
146 ${journal_log} ${stderr} ${rc}= BMC Execute Command
Charles Paul Hoferbcae08b2018-08-09 11:33:33 -0500147 ... journalctl -b --no-pager | egrep '${error_regex}' ignore_err=1
George Keishingc7748be2018-07-12 05:40:37 -0500148
149 Should Be Empty ${journal_log}
150
151
George Keishing34d4b8d2016-12-07 08:35:29 -0600152Validate Parameters
Joy Onyerikwuf4a807b2018-06-20 08:43:54 -0500153 [Documentation] Validate PDU parameters.
George Keishing34d4b8d2016-12-07 08:35:29 -0600154 Should Not Be Empty ${PDU_IP}
155 Should Not Be Empty ${PDU_TYPE}
156 Should Not Be Empty ${PDU_SLOT_NO}
157 Should Not Be Empty ${PDU_USERNAME}
158 Should Not Be Empty ${PDU_PASSWORD}
George Keishing13497eb2018-11-07 06:35:14 -0600159
160
161MTU Ping Test
162 [Documentation] Ping test using MTU.
163 [Arguments] ${mtu}=${1400}
164
165 # Description of argument(s):
166 # mtu The maximum transmission unit (MTU) of a network interface.
167
168 ${rc} ${output}= Run And Return RC And Output
169 ... ping -M do -s ${mtu} -c 10 ${OPENBMC_HOST}
170 Should Be Equal As Integers ${rc} 0
171 Should Not Contain ${output} 100% packet loss
Anusha Dathatri34298bf2021-06-17 00:00:01 -0500172
173
174Clear All Subscriptions
175 [Documentation] Delete all subscriptions.
176
177 ${subscriptions}= Redfish.Get Attribute /redfish/v1/EventService/Subscriptions Members
178 FOR ${subscription} IN @{subscriptions}
179 Redfish.Delete ${subscription['@odata.id']}
180 END