1*** 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 SeleniumLibrary 11Library AngularJSLibrary 12Library SSHLibrary 30 Seconds 13Library Process 14Library supporting_libs.py 15Library ../../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 23Variables ../data/resource_variables.py 24 25*** Variables *** 26${obmc_gui_url} https://${OPENBMC_HOST} 27 28${obmc_PowerOff_state} Off 29${obmc_PowerRunning_state} Running 30${obmc_PowerStandby_state} Standby 31 32# Default GUI broswer and mode is set to "Firefox" and "headless" 33# respectively here. 34${GUI_BROWSER} ff 35${GUI_MODE} headless 36 37*** 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' 44 ... 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 50 ... ELSE 51 # Linux OS. 52 ... 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' 61 ... Set Variable windows 62 ... ELSE 63 ... Run uname 64 [Return] ${op_system} 65 66Launch Header Browser 67 [Documentation] Open the browser with the URL and 68 ... login on windows platform. 69 [Arguments] ${browser_type}=${GUI_BROWSER} 70 71 # Description of argument(s): 72 # browser_type Type of browser (e.g. "firefox", "chrome", etc.). 73 74 ${BROWSER_ID}= Open Browser ${obmc_gui_url} ${browser_type} 75 Maximize Browser Window 76 Set Global Variable ${BROWSER_ID} 77 78Launch Headless Browser 79 [Documentation] Launch headless browser. 80 [Arguments] ${URL}=${obmc_gui_url} ${browser}=${GUI_BROWSER} 81 82 # 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} 90 Set Window Size 1920 1080 91 92 [Return] ${browser_ID} 93 94Login OpenBMC GUI 95 [Documentation] Perform login to open BMC GUI. 96 [Arguments] ${username}=${OPENBMC_USERNAME} 97 ... ${password}=${OPENBMC_PASSWORD} 98 99 # Description of argument(s): 100 # username The username. 101 # password The password. 102 103 Go To ${obmc_gui_url} 104 Wait Until Element Is Enabled ${xpath_textbox_hostname} 105 Input Text ${xpath_textbox_hostname} ${OPENBMC_HOST} 106 Input Text ${xpath_textbox_username} ${username} 107 Input Password ${xpath_textbox_password} ${password} 108 Click Element login__submit 109 Wait Until Element Is Enabled ${xpath_button_logout} 110 Page Should Contain Server information 111 112 113Test Setup Execution 114 [Documentation] Verify all the preconditions to be tested. 115 [Arguments] ${obmc_test_setup_state}=${OBMC_PowerOff_state} 116 117 # Description of argument(s): 118 # obmc_test_setup The OpenBMC required state. 119 120 Print Timen ${TEST NAME} ==> [STARTED] 121 Launch Browser And Login OpenBMC GUI 122 Log To Console Verifying the system state and stablity... 123 124 Click Element ${xpath_select_server_power} 125 Wait Until Page Does Not Contain Unreachable 126 ${obmc_current_state}= Get Text ${xpath_power_indicator} 127 Rpvars obmc_current_state 128 129 ${obmc_state_status}= Run Keyword And Return Status 130 ... Should Contain ${obmc_current_state} ${obmc_test_setup_state} 131 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 138 Run Keyword If '${obmc_test_setup_state}' == '${obmc_PowerRunning_state}' 139 ... Run Keywords Power On OpenBMC AND 140 ... Wait Until Keyword Succeeds 10 min 60 sec Is Host Running 141 Run Keyword If '${obmc_test_setup_state}' == '${obmc_PowerOff_state}' 142 ... Run Keywords Redfish.Login AND Redfish Power Off AND Redfish.Logout 143 144Power Off OpenBMC 145 [Documentation] Power off the OBMC system. 146 147 Log To Console Power Off OpenBMC... 148 Click Element ${xpath_select_server_power} 149 Execute JavaScript window.scrollTo(0, document.body.scrollHeight) 150 Click Button ${xpath_select_button_orderly_shutdown} 151 Click Yes Button ${xpath_select_button_orderly_shutdown_yes} 152 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... 158 Click Element ${xpath_select_server_power} 159 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... 166 Click Element ${xpath_select_server_power} 167 Click Button ${xpath_select_button_orderly_shutdown} 168 Click Yes Button ${xpath_select_button_orderly_shutdown_yes} 169 Wait OpenBMC To Become Stable ${obmc_off_state} 170 171Wait OpenBMC To Become Stable 172 [Documentation] Power off the OBMC. 173 [Arguments] ${obmc_expected_state} ${retry_time}=15 min 174 ... ${retry_interval}=45 sec 175 176 # 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} 183 ... Wait Until Element Contains ${xpath_select_server_power} 184 ... ${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} 191 192 # 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 199 [Documentation] Click the 'Yes' button. 200 [Arguments] ${xpath_button_yes} 201 202 # Description of argument(s): 203 # xpath_button_yes The xpath of 'Yes' button. 204 205 Click Button ${xpath_button_yes} 206 207LogOut OpenBMC GUI 208 [Documentation] Log out of OpenBMC GUI. 209 SSHLibrary.Close All Connections 210 # Passing direct id element "header" as an argument to Click Element. 211 Click Element ${xpath_button_logout} 212 Wait Until Page Contains Element ${xpath_button_login} 213 214Test Teardown Execution 215 [Documentation] Do final closure activities of test case execution. 216 Print Pgm Footer 217 Print Dashes 0 100 1 = 218 Close Browser 219 220 221Open Browser With URL 222 [Documentation] Open browser with specified URL and returns browser id. 223 [Arguments] ${URL} ${browser}=ff ${mode}=${GUI_MODE} 224 225 # Description of argument(s): 226 # URL Openbmc GUI URL to be open 227 # (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). 231 232 ${browser_ID}= Run Keyword If '${mode}' == 'headless' 233 ... Launch Headless Browser ${URL} ${browser} 234 ... ELSE Open Browser ${URL} ${browser} 235 236 [Return] ${browser_ID} 237 238 239Controller Server Power Click Button 240 [Documentation] Click main server power in the header section. 241 [Arguments] ${controller_element} 242 243 # Description of argument(s): 244 # controller_element Server power controller element 245 # (e.g. power__power-on.) 246 247 Click Element ${xpath_select_server_power} 248 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} 255 256 # 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 266 ${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 270 271GUI Power On 272 [Documentation] Power on the host using GUI. 273 274 Controller Server Power Click Button power__power-on 275 Wait Until Page Contains Running timeout=30s 276 277Verify 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} 291 Verify Warning Message Display Text ${xpath_operation_warning_message} 292 ... ${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} 310 Verify Warning Message Display Text ${xpath_operation_warning_message} 311 ... ${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} 320 Verify Warning Message Display Text ${xpath_operation_warning_message} 321 ... ${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 331 ... ${xpath_operation_warning_message} 332 ... ${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 343 Element Should Contain ${xpath_text_message} ${text_message} 344 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' 354 ... REST Power On stack_mode=skip quiet=1 355 356 Run Keyword If '${expectedState}' == 'Off' 357 ... REST Power Off stack_mode=skip quiet=1 358 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 368 Click Element //*[text()='Log out'] 369 Close Browser 370