blob: 11b3386cd32446199944419701074a95cd5724dc [file] [log] [blame]
Sathyajith M S4f26ae72018-01-16 04:45:05 -06001*** Settings ***
2Documentation This is a resource file of OpenBMC ASMI It contains the
3... user-defined keywords which are available to all gui modules
4
5Library String
6Library Collections
7Library DateTime
8Library XvfbRobot
9Library OperatingSystem
10Library Selenium2Library 120 120
11Library AngularJSLibrary
12Library SSHLibrary 30 Seconds
13Library Process
14Library supporting_libs.py
Rahul Maheshwari439ce712019-03-07 03:23:13 -060015Library ../../lib/gen_print.py
16Library ../../lib/gen_robot_print.py
17Library ../../lib/gen_valid.py
18Library ../../lib/gen_robot_ssh.py
19Library ../../lib/bmc_ssh_utils.py
20Resource ../../lib/resource.robot
21Resource ../../lib/rest_client.robot
22Resource ../../lib/state_manager.robot
Sathyajith M S4f26ae72018-01-16 04:45:05 -060023Variables ../data/resource_variables.py
24
25*** Variables ***
Sivas SRRc70e9ae2018-02-14 23:53:49 -060026${obmc_gui_url} https://${OPENBMC_HOST}
Sathyajith M S2cdab0a2018-02-13 19:36:28 -060027
Sathyajith M S4f26ae72018-01-16 04:45:05 -060028${obmc_PowerOff_state} Off
29${obmc_PowerRunning_state} Running
Sathyajith M Sf52d6fc2018-01-24 10:11:18 -060030${obmc_PowerStandby_state} Standby
Sathyajith M S4f26ae72018-01-16 04:45:05 -060031
Rahul Maheshwaridd38aef2018-11-15 23:33:10 -060032# Default GUI broswer and mode is set to "Firefox" and "headless"
33# respectively here.
34${GUI_BROWSER} ff
35${GUI_MODE} headless
36
Sathyajith M S4f26ae72018-01-16 04:45:05 -060037*** Keywords ***
38Launch OpenBMC GUI Browser
39 [Documentation] Launch the OpenBMC GUI URL on a browser.
40 # By default uses headless mode, otherwise, the GUI browser.
41
42 ${op_system}= Get Operating System
43 Run Keyword If '${op_system}' == 'windows'
Sivas SRRa0113482018-02-22 22:27:05 -060044 ... Launch Header Browser
45 ... ELSE IF '${op_system}' == 'Darwin'
46 # Mac OS is currently having some issues with firefox, so using
47 # chrome.
48 # TODO: Need to add support for other browsers. Issue #1280.
49 ... Launch Header Browser chrome
Sathyajith M S4f26ae72018-01-16 04:45:05 -060050 ... ELSE
Sivas SRRa0113482018-02-22 22:27:05 -060051 # Linux OS.
Sathyajith M S4f26ae72018-01-16 04:45:05 -060052 ... Launch Headless Browser
53
54Get Operating System
55 [Documentation] Identify platform/OS.
56
57 ${curdir_lower_case}= Convert To Lowercase ${CURDIR}
58 ${windows_platform}= Run Keyword And Return Status
59 ... Should Contain ${curdir_lower_case} c:\
60 ${op_system}= Run Keyword If '${windows_platform}' == 'True'
Sivas SRRa0113482018-02-22 22:27:05 -060061 ... Set Variable windows
62 ... ELSE
63 ... Run uname
Sathyajith M S4f26ae72018-01-16 04:45:05 -060064 [Return] ${op_system}
65
Sivas SRRa0113482018-02-22 22:27:05 -060066Launch Header Browser
Sathyajith M S4f26ae72018-01-16 04:45:05 -060067 [Documentation] Open the browser with the URL and
68 ... login on windows platform.
Rahul Maheshwaridd38aef2018-11-15 23:33:10 -060069 [Arguments] ${browser_type}=${GUI_BROWSER}
Sathyajith M S4f26ae72018-01-16 04:45:05 -060070
Sivas SRRa0113482018-02-22 22:27:05 -060071 # Description of argument(s):
72 # browser_type Type of browser (e.g. "firefox", "chrome", etc.).
Sathyajith M S2cdab0a2018-02-13 19:36:28 -060073
Sivas SRRa0113482018-02-22 22:27:05 -060074 ${BROWSER_ID}= Open Browser ${obmc_gui_url} ${browser_type}
Sathyajith M S4f26ae72018-01-16 04:45:05 -060075 Maximize Browser Window
76 Set Global Variable ${BROWSER_ID}
77
78Launch Headless Browser
79 [Documentation] Launch headless browser.
Rahul Maheshwaridd38aef2018-11-15 23:33:10 -060080 [Arguments] ${URL}=${obmc_gui_url} ${browser}=${GUI_BROWSER}
Sathyajith M S4f26ae72018-01-16 04:45:05 -060081
Rahul Maheshwari79e276c2018-06-11 01:23:15 -050082 # Description of argument(s):
83 # URL Openbmc GUI URL to be open
84 # (e.g. https://openbmc-test.mybluemix.net/#/login).
85 # browser Browser to open given URL in headless way
86 # (e.g. gc for google chrome, ff for firefox).
87
88 Start Virtual Display
89 ${browser_ID}= Open Browser ${URL}
Sathyajith M S4f26ae72018-01-16 04:45:05 -060090 Set Window Size 1920 1080
91
Rahul Maheshwari79e276c2018-06-11 01:23:15 -050092 [Return] ${browser_ID}
93
Sathyajith M S4f26ae72018-01-16 04:45:05 -060094Login OpenBMC GUI
95 [Documentation] Perform login to open BMC GUI.
96 [Arguments] ${username}=${OPENBMC_USERNAME}
97 ... ${password}=${OPENBMC_PASSWORD}
Sathyajith M S2cdab0a2018-02-13 19:36:28 -060098
Sathyajith M S4f26ae72018-01-16 04:45:05 -060099 # Description of argument(s):
100 # username The username.
101 # password The password.
102
Sivas SRRc70e9ae2018-02-14 23:53:49 -0600103 Go To ${obmc_gui_url}
Sivas SRRa6925352018-02-19 08:59:03 -0600104 Wait Until Element Is Enabled ${xpath_textbox_hostname}
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600105 Input Text ${xpath_textbox_hostname} ${OPENBMC_HOST}
106 Input Text ${xpath_textbox_username} ${username}
107 Input Password ${xpath_textbox_password} ${password}
Sivas SRRffa42692018-01-17 05:17:35 -0600108 Click Element login__submit
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600109 Wait Until Element Is Enabled ${xpath_button_logout}
Sivas SRRffa42692018-01-17 05:17:35 -0600110 Page Should Contain Server information
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600111
112
113Test Setup Execution
114 [Documentation] Verify all the preconditions to be tested.
Sathyajith M Sf52d6fc2018-01-24 10:11:18 -0600115 [Arguments] ${obmc_test_setup_state}=${OBMC_PowerOff_state}
Sathyajith M S2cdab0a2018-02-13 19:36:28 -0600116
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600117 # Description of argument(s):
118 # obmc_test_setup The OpenBMC required state.
119
Michael Walshc108e422019-03-28 12:27:18 -0500120 Print Timen ${TEST NAME} ==> [STARTED]
Rahul Maheshwari7872f052018-06-19 01:12:34 -0500121 Launch Browser And Login OpenBMC GUI
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600122 Log To Console Verifying the system state and stablity...
Rahul Maheshwari8b5b5a42018-11-30 01:41:35 -0600123
Anusha Dathatrif7a407c2019-07-22 00:59:38 -0500124 Click Element ${xpath_select_server_power}
Anusha Dathatrif93a5c42019-07-24 05:29:44 -0500125 Wait Until Page Does Not Contain Unreachable
Rahul Maheshwari8b5b5a42018-11-30 01:41:35 -0600126 ${obmc_current_state}= Get Text ${xpath_power_indicator}
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600127 Rpvars obmc_current_state
Sathyajith M Sf52d6fc2018-01-24 10:11:18 -0600128
129 ${obmc_state_status}= Run Keyword And Return Status
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600130 ... Should Contain ${obmc_current_state} ${obmc_test_setup_state}
Sathyajith M Sf52d6fc2018-01-24 10:11:18 -0600131 Return From Keyword If '${obmc_state_status}' == 'True'
132
133 ${obmc_standby_state}= Run Keyword And Return Status
134 ... Should Contain ${obmc_current_state} ${obmc_standby_state}
135
136 Run Keyword If '${obmc_standby_state}' == 'True'
137 ... Reboot OpenBMC
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600138 Run Keyword If '${obmc_test_setup_state}' == '${obmc_PowerRunning_state}'
Rahul Maheshwari1ea8fec2018-12-07 12:42:04 -0600139 ... Run Keywords Power On OpenBMC AND
140 ... Wait Until Keyword Succeeds 10 min 60 sec Is Host Running
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600141 Run Keyword If '${obmc_test_setup_state}' == '${obmc_PowerOff_state}'
142 ... Power Off OpenBMC
143
144Power Off OpenBMC
145 [Documentation] Power off the OBMC system.
146
147 Log To Console Power Off OpenBMC...
Anusha Dathatrif93a5c42019-07-24 05:29:44 -0500148 Click Element ${xpath_select_server_power}
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600149 Execute JavaScript window.scrollTo(0, document.body.scrollHeight)
Sathyajith M Sf52d6fc2018-01-24 10:11:18 -0600150 Click Button ${xpath_select_button_orderly_shutdown}
151 Click Yes Button ${xpath_select_button_orderly_shutdown_yes}
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600152 Wait OpenBMC To Become Stable ${obmc_off_state}
153
154Power On OpenBMC
155 [Documentation] Power on the OBMC system.
156
157 Log To Console Power On OpenBMC...
Anusha Dathatrif93a5c42019-07-24 05:29:44 -0500158 Click Element ${xpath_select_server_power}
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600159 Click Button ${xpath_select_button_power_on }
160 Wait OpenBMC To Become Stable ${obmc_running_state}
161
162Reboot OpenBMC
163 [Documentation] Rebooting the OBMC system.
164
165 Log To Console Reboting the OpenBMC...
Anusha Dathatrif93a5c42019-07-24 05:29:44 -0500166 Click Element ${xpath_select_server_power}
Sathyajith M Sf52d6fc2018-01-24 10:11:18 -0600167 Click Button ${xpath_select_button_orderly_shutdown}
168 Click Yes Button ${xpath_select_button_orderly_shutdown_yes}
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600169 Wait OpenBMC To Become Stable ${obmc_off_state}
170
171Wait OpenBMC To Become Stable
172 [Documentation] Power off the OBMC.
Sathyajith M S2cdab0a2018-02-13 19:36:28 -0600173 [Arguments] ${obmc_expected_state} ${retry_time}=15 min
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600174 ... ${retry_interval}=45 sec
Sathyajith M S2cdab0a2018-02-13 19:36:28 -0600175
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600176 # Description of argument(s):
177 # OBMC_expected_state The OBMC state which is required for test.
178 # retry_time Total wait time after executing the command.
179 # retry_interval Time interval for to keep checking with in the
180 # above total wait time.
181
182 Wait Until Keyword Succeeds ${retry_time} ${retry_interval}
Anusha Dathatrif93a5c42019-07-24 05:29:44 -0500183 ... Wait Until Element Contains ${xpath_select_server_power}
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600184 ... ${obmc_expected_state}
185 Wait Until Keyword Succeeds ${retry_time} ${retry_interval}
186 ... Verify OpenBMC State From REST Interface ${obmc_expected_state}
187
188Verify OpenBMC State From REST Interface
189 [Documentation] Verify system state from REST Interface.
190 [Arguments] ${obmc_required_state}
Sathyajith M S2cdab0a2018-02-13 19:36:28 -0600191
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600192 # Description of argument(s):
193 # obmc_required_state The OBMC state which is required for test.
194
195 ${obmc_current_state_REST}= Get Host State
196 Should Be Equal ${obmc_current_state_REST} ${obmc_required_state}
197
198Click Yes Button
Sathyajith M Sf52d6fc2018-01-24 10:11:18 -0600199 [Documentation] Click the 'Yes' button.
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600200 [Arguments] ${xpath_button_yes}
Sathyajith M S2cdab0a2018-02-13 19:36:28 -0600201
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600202 # Description of argument(s):
Sathyajith M Sf52d6fc2018-01-24 10:11:18 -0600203 # xpath_button_yes The xpath of 'Yes' button.
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600204
205 Click Button ${xpath_button_yes}
206
207LogOut OpenBMC GUI
208 [Documentation] Log out of OpenBMC GUI.
209 SSHLibrary.Close All Connections
Sivas SRRae39abe2018-02-26 02:40:46 -0600210 # Passing direct id element "header" as an argument to Click Element.
Rahul Maheshwarid36b6ac2018-06-19 01:44:06 -0500211 Click Element ${xpath_button_logout}
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600212 Wait Until Page Contains Element ${xpath_button_login}
213
214Test Teardown Execution
215 [Documentation] Do final closure activities of test case execution.
Michael Walshc108e422019-03-28 12:27:18 -0500216 Print Pgm Footer
Sathyajith M S4f26ae72018-01-16 04:45:05 -0600217 Print Dashes 0 100 1 =
Rahul Maheshwaricfdec852018-11-30 03:44:49 -0600218 Close Browser
Sivas SRRffa42692018-01-17 05:17:35 -0600219
Rahul Maheshwari1b5369b2018-06-11 00:57:03 -0500220
Sivas SRRffa42692018-01-17 05:17:35 -0600221Open Browser With URL
222 [Documentation] Open browser with specified URL and returns browser id.
Rahul Maheshwaridd38aef2018-11-15 23:33:10 -0600223 [Arguments] ${URL} ${browser}=ff ${mode}=${GUI_MODE}
Sathyajith M S2cdab0a2018-02-13 19:36:28 -0600224
Sivas SRRffa42692018-01-17 05:17:35 -0600225 # Description of argument(s):
226 # URL Openbmc GUI URL to be open
Rahul Maheshwari79e276c2018-06-11 01:23:15 -0500227 # (e.g. https://openbmc-test.mybluemix.net/#/login).
228 # browser Browser used to open above URL
229 # (e.g. gc for google chrome, ff for firefox).
230 # mode Browser opening mode(e.g. headless, header).
Sathyajith M S2cdab0a2018-02-13 19:36:28 -0600231
Rahul Maheshwari79e276c2018-06-11 01:23:15 -0500232 ${browser_ID}= Run Keyword If '${mode}' == 'headless'
233 ... Launch Headless Browser ${URL} ${browser}
234 ... ELSE Open Browser ${URL} ${browser}
235
Sivas SRRffa42692018-01-17 05:17:35 -0600236 [Return] ${browser_ID}
237
Rahul Maheshwari1b5369b2018-06-11 00:57:03 -0500238
Sivas SRRffa42692018-01-17 05:17:35 -0600239Controller Server Power Click Button
240 [Documentation] Click main server power in the header section.
241 [Arguments] ${controller_element}
Sathyajith M S2cdab0a2018-02-13 19:36:28 -0600242
Sivas SRRffa42692018-01-17 05:17:35 -0600243 # Description of argument(s):
244 # controller_element Server power controller element
245 # (e.g. power__power-on.)
246
Rahul Maheshwaridbbf1792018-10-31 05:36:29 -0500247 Click Element ${xpath_select_server_power}
Sivas SRRffa42692018-01-17 05:17:35 -0600248 Wait Until Element Is Visible ${controller_element}
249 Page Should Contain Button ${controller_element}
250 Click Element ${controller_element}
251
252Controller Power Operations Confirmation Click Button
253 [Documentation] Click Common Power Operations Confirmation.
254 [Arguments] ${main_element} ${sub_element} ${confirm_msg_elt} ${confirmation}
Sathyajith M S2cdab0a2018-02-13 19:36:28 -0600255
Sivas SRRffa42692018-01-17 05:17:35 -0600256 # Description of argument(s):
257 # main_element Server power operations element
258 # (e.g. power_operations.)
259 # sub_element Server power operations sub element
260 # (e.g. warm_boot, shut_down.)
261 # confirm_msg_elt Server power operations confirm message element
262 # (e.g. confirm_msg.)
263 # confirmation Server power operations confirmation
264 # (e.g. yes.)
265
Joy Onyerikwuf4a807b2018-06-20 08:43:54 -0500266 ${element_path}= Catenate //*[@id='power-operations']/div[${main_element}]/div[${sub_element}]
267 ... /confirm/div/div[${confirm_msg_elt}]/button[${confirmation}]
268 Click Element ${element_path.replace(" ","")}
269
Sivas SRRffa42692018-01-17 05:17:35 -0600270
271GUI Power On
Sathyajith M Sf52d6fc2018-01-24 10:11:18 -0600272 [Documentation] Power on the host using GUI.
Sivas SRRffa42692018-01-17 05:17:35 -0600273
Sivas SRRffa42692018-01-17 05:17:35 -0600274 Controller Server Power Click Button power__power-on
275 Page Should Contain Running
276
Sathyajith M Sf52d6fc2018-01-24 10:11:18 -0600277Verify Display Content
278 [Documentation] Verify text content display.
279 [Arguments] ${display_text}
280
281 # Description of argument(s):
282 # display_text The text which is expected to be found on the web page.
283
284 Page Should Contain ${display_text}
285
286Warm Reboot openBMC
287 [Documentation] Warm reboot the OBMC system.
288
289 Log To Console Warm Reboting the OpenBMC...
290 Click Element ${xpath_select_button_warm_reboot}
Anusha Dathatrif93a5c42019-07-24 05:29:44 -0500291 Verify Warning Message Display Text ${xpath_operation_warning_message}
Sathyajith M Sf52d6fc2018-01-24 10:11:18 -0600292 ... ${text_warm_reboot_warning_message}
293 Click Yes Button ${xpath_select_button_warm_reboot_yes}
294 Wait OpenBMC To Become Stable ${obmc_running_state}
295
296Click No Button
297 [Documentation] Click the 'No' button.
298 [Arguments] ${xpath_button_no}
299
300 # Description of argument(s):
301 # xpath_button_no The xpath of 'No' button.
302
303 Click Button ${xpath_button_no}
304
305Cold Reboot openBMC
306 [Documentation] Cold reboot the OBMC system.
307
308 Log To Console Cold Reboting the OpenBMC...
309 Click Element ${xpath_select_button_cold_reboot}
Anusha Dathatrif93a5c42019-07-24 05:29:44 -0500310 Verify Warning Message Display Text ${xpath_operation_warning_message}
Sathyajith M Sf52d6fc2018-01-24 10:11:18 -0600311 ... ${text_cold_reboot_warning_message}
312 Click Yes Button ${xpath_select_button_cold_reboot_yes}
313 Wait OpenBMC To Become Stable ${obmc_running_state}
314
315Orderly Shutdown OpenBMC
316 [Documentation] Do orderly shutdown the OBMC system.
317
318 Log To Console Orderly Shutdown the OpenBMC...
319 Click Element ${xpath_select_button_orderly_shutdown}
Anusha Dathatrif93a5c42019-07-24 05:29:44 -0500320 Verify Warning Message Display Text ${xpath_operation_warning_message}
Sathyajith M Sf52d6fc2018-01-24 10:11:18 -0600321 ... ${text_orderly_shutdown_warning_message}
322 Click Yes Button ${xpath_select_button_orderly_shutdown_yes}
323 Wait OpenBMC To Become Stable ${obmc_off_state}
324
325Immediate Shutdown openBMC
326 [Documentation] Do immediate shutdown the OBMC system.
327
328 Log To Console Immediate Shutdown the OpenBMC...
329 Click Element ${xpath_select_button_immediate_shutdown}
330 Verify Warning Message Display Text
Anusha Dathatrif93a5c42019-07-24 05:29:44 -0500331 ... ${xpath_operation_warning_message}
Sathyajith M Sf52d6fc2018-01-24 10:11:18 -0600332 ... ${text_immediate_shutdown_warning_message}
333 Click Yes Button ${xpath_select_button_immediate_shutdown_yes}
334 Wait OpenBMC To Become Stable ${obmc_off_state}
335
336Verify Warning Message Display Text
337 [Documentation] Verify the warning message display text.
338 [Arguments] ${xpath_text_message} ${text_message}
339
340 # xpath_text_message Xpath of warning message display.
341 # text_message Content of the display message info.
342
Anusha Dathatrif93a5c42019-07-24 05:29:44 -0500343 Element Should Contain ${xpath_text_message} ${text_message}
Sivas SRRca534e62018-02-20 02:22:02 -0600344
345
346Expected Initial Test State
347 [Documentation] Power on the host if "Running" expected, Power off the
348 ... host if "Off" expected as per the requirement of initial test state.
349 [Arguments] ${expectedState}
350 # Description of argument(s):
351 # expectedState Test initial host state.
352
353 Run Keyword If '${expectedState}' == 'Running'
Rahul Maheshwari23491692018-11-09 03:42:41 -0600354 ... REST Power On stack_mode=skip quiet=1
Sivas SRRca534e62018-02-20 02:22:02 -0600355
356 Run Keyword If '${expectedState}' == 'Off'
Rahul Maheshwari23491692018-11-09 03:42:41 -0600357 ... REST Power Off stack_mode=skip quiet=1
Sivas SRR008dcc62018-02-27 06:34:56 -0600358
359Launch Browser And Login OpenBMC GUI
360 [Documentation] Launch browser and log into openbmc GUI.
361
362 Open Browser With URL ${obmc_gui_url}
363 Login OpenBMC GUI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD}
364
365Logout And Close Browser
366 [Documentation] Logout from openbmc application and close the browser.
367
Rahul Maheshwari1a6945e2018-11-26 03:21:40 -0600368 Click Element //*[text()='Log out']
Sivas SRR008dcc62018-02-27 06:34:56 -0600369 Close Browser