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${CMD_INTERNAL_FAILURE} busctl call xyz.openbmc_project.Logging /xyz/openbmc_project/logging 38... xyz.openbmc_project.Logging.Create Create ssa{ss} xyz.openbmc_project.Common.Error.InternalFailure 39... xyz.openbmc_project.Logging.Entry.Level.Error 0 40 41*** Keywords *** 42Launch OpenBMC GUI Browser 43 [Documentation] Launch the OpenBMC GUI URL on a browser. 44 # By default uses headless mode, otherwise, the GUI browser. 45 46 ${op_system}= Get Operating System 47 Run Keyword If '${op_system}' == 'windows' 48 ... Launch Header Browser 49 ... ELSE IF '${op_system}' == 'Darwin' 50 # Mac OS is currently having some issues with firefox, so using 51 # chrome. 52 # TODO: Need to add support for other browsers. Issue #1280. 53 ... Launch Header Browser chrome 54 ... ELSE 55 # Linux OS. 56 ... Launch Headless Browser 57 58Get Operating System 59 [Documentation] Identify platform/OS. 60 61 ${curdir_lower_case}= Convert To Lowercase ${CURDIR} 62 ${windows_platform}= Run Keyword And Return Status 63 ... Should Contain ${curdir_lower_case} c:\ 64 ${op_system}= Run Keyword If '${windows_platform}' == 'True' 65 ... Set Variable windows 66 ... ELSE 67 ... Run uname 68 [Return] ${op_system} 69 70Launch Header Browser 71 [Documentation] Open the browser with the URL and 72 ... login on windows platform. 73 [Arguments] ${browser_type}=${GUI_BROWSER} 74 75 # Description of argument(s): 76 # browser_type Type of browser (e.g. "firefox", "chrome", etc.). 77 78 ${BROWSER_ID}= Open Browser ${obmc_gui_url} ${browser_type} 79 Maximize Browser Window 80 Set Global Variable ${BROWSER_ID} 81 82Launch Headless Browser 83 [Documentation] Launch headless browser. 84 [Arguments] ${URL}=${obmc_gui_url} ${browser}=${GUI_BROWSER} 85 86 # Description of argument(s): 87 # URL Openbmc GUI URL to be open 88 # (e.g. https://openbmc-test.mybluemix.net/#/login). 89 # browser Browser to open given URL in headless way 90 # (e.g. gc for google chrome, ff for firefox). 91 92 Start Virtual Display 93 ${browser_ID}= Open Browser ${URL} 94 Set Window Size 1920 1080 95 96 [Return] ${browser_ID} 97 98Login OpenBMC GUI 99 [Documentation] Perform login to open BMC GUI. 100 [Arguments] ${username}=${OPENBMC_USERNAME} 101 ... ${password}=${OPENBMC_PASSWORD} 102 103 # Description of argument(s): 104 # username The username. 105 # password The password. 106 107 Go To ${obmc_gui_url} 108 Wait Until Element Is Enabled ${xpath_textbox_hostname} 109 Input Text ${xpath_textbox_hostname} ${OPENBMC_HOST} 110 Input Text ${xpath_textbox_username} ${username} 111 Input Password ${xpath_textbox_password} ${password} 112 Click Element login__submit 113 Wait Until Element Is Enabled ${xpath_button_logout} 114 Page Should Contain Server information 115 116 117Test Setup Execution 118 [Documentation] Verify all the preconditions to be tested. 119 [Arguments] ${obmc_test_setup_state}=${OBMC_PowerOff_state} 120 121 # Description of argument(s): 122 # obmc_test_setup The OpenBMC required state. 123 124 Print Timen ${TEST NAME} ==> [STARTED] 125 Launch Browser And Login OpenBMC GUI 126 Log To Console Verifying the system state and stablity... 127 128 Click Element ${xpath_select_server_power} 129 Wait Until Page Does Not Contain Unreachable 130 ${obmc_current_state}= Get Text ${xpath_power_indicator} 131 Rpvars obmc_current_state 132 133 ${obmc_state_status}= Run Keyword And Return Status 134 ... Should Contain ${obmc_current_state} ${obmc_test_setup_state} 135 Return From Keyword If '${obmc_state_status}' == 'True' 136 137 ${obmc_standby_state}= Run Keyword And Return Status 138 ... Should Contain ${obmc_current_state} ${obmc_standby_state} 139 140 Run Keyword If '${obmc_standby_state}' == 'True' 141 ... Reboot OpenBMC 142 Run Keyword If '${obmc_test_setup_state}' == '${obmc_PowerRunning_state}' 143 ... Run Keywords Power On OpenBMC AND 144 ... Wait Until Keyword Succeeds 10 min 60 sec Is Host Running 145 Run Keyword If '${obmc_test_setup_state}' == '${obmc_PowerOff_state}' 146 ... Run Keywords Redfish.Login AND Redfish Power Off AND Redfish.Logout 147 148 149Power On OpenBMC 150 [Documentation] Power on the OBMC system. 151 152 Log To Console Power On OpenBMC... 153 Click Element ${xpath_select_server_power} 154 Click Button ${xpath_select_button_power_on } 155 Wait OpenBMC To Become Stable ${obmc_running_state} 156 157Reboot OpenBMC 158 [Documentation] Rebooting the OBMC system. 159 160 Log To Console Reboting the OpenBMC... 161 Click Element ${xpath_select_server_power} 162 Click Button ${xpath_select_button_orderly_shutdown} 163 Click Yes Button ${xpath_select_button_orderly_shutdown_yes} 164 Wait OpenBMC To Become Stable ${obmc_off_state} 165 166Wait OpenBMC To Become Stable 167 [Documentation] Power off the OBMC. 168 [Arguments] ${obmc_expected_state} ${retry_time}=15 min 169 ... ${retry_interval}=45 sec 170 171 # Description of argument(s): 172 # OBMC_expected_state The OBMC state which is required for test. 173 # retry_time Total wait time after executing the command. 174 # retry_interval Time interval for to keep checking with in the 175 # above total wait time. 176 177 Wait Until Keyword Succeeds ${retry_time} ${retry_interval} 178 ... Wait Until Element Contains ${xpath_select_server_power} 179 ... ${obmc_expected_state} 180 Wait Until Keyword Succeeds ${retry_time} ${retry_interval} 181 ... Verify OpenBMC State From REST Interface ${obmc_expected_state} 182 183Verify OpenBMC State From REST Interface 184 [Documentation] Verify system state from REST Interface. 185 [Arguments] ${obmc_required_state} 186 187 # Description of argument(s): 188 # obmc_required_state The OBMC state which is required for test. 189 190 ${obmc_current_state_REST}= Get Host State 191 Should Be Equal ${obmc_current_state_REST} ${obmc_required_state} 192 193Click Yes Button 194 [Documentation] Click the 'Yes' button. 195 [Arguments] ${xpath_button_yes} 196 197 # Description of argument(s): 198 # xpath_button_yes The xpath of 'Yes' button. 199 200 Click Button ${xpath_button_yes} 201 202LogOut OpenBMC GUI 203 [Documentation] Log out of OpenBMC GUI. 204 SSHLibrary.Close All Connections 205 Click Button ${xpath_button_user_action} 206 Click Element ${xpath_button_logout} 207 Wait Until Page Contains Element ${xpath_button_login} 208 209Test Teardown Execution 210 [Documentation] Do final closure activities of test case execution. 211 Print Pgm Footer 212 Print Dashes 0 100 1 = 213 Close Browser 214 215 216Open Browser With URL 217 [Documentation] Open browser with specified URL and returns browser id. 218 [Arguments] ${URL} ${browser}=ff ${mode}=${GUI_MODE} 219 220 # Description of argument(s): 221 # URL Openbmc GUI URL to be open 222 # (e.g. https://openbmc-test.mybluemix.net/#/login). 223 # browser Browser used to open above URL 224 # (e.g. gc for google chrome, ff for firefox). 225 # mode Browser opening mode(e.g. headless, header). 226 227 ${browser_ID}= Run Keyword If '${mode}' == 'headless' 228 ... Launch Headless Browser ${URL} ${browser} 229 ... ELSE Open Browser ${URL} ${browser} 230 231 [Return] ${browser_ID} 232 233 234Controller Server Power Click Button 235 [Documentation] Click main server power in the header section. 236 [Arguments] ${controller_element} 237 238 # Description of argument(s): 239 # controller_element Server power controller element 240 # (e.g. power__power-on.) 241 242 Click Element ${xpath_select_server_power} 243 Wait Until Element Is Visible ${controller_element} 244 Page Should Contain Button ${controller_element} 245 Click Element ${controller_element} 246 247 248GUI Power On 249 [Documentation] Power on the host using GUI. 250 251 Controller Server Power Click Button power__power-on 252 Wait Until Page Contains Running timeout=30s 253 254Verify Display Content 255 [Documentation] Verify text content display. 256 [Arguments] ${display_text} 257 258 # Description of argument(s): 259 # display_text The text which is expected to be found on the web page. 260 261 Page Should Contain ${display_text} 262 263 264Verify Warning Message Display Text 265 [Documentation] Verify the warning message display text. 266 [Arguments] ${xpath_text_message} ${text_message} 267 268 # xpath_text_message Xpath of warning message display. 269 # text_message Content of the display message info. 270 271 Element Should Contain ${xpath_text_message} ${text_message} 272 273 274Expected Initial Test State 275 [Documentation] Power on the host if "Running" expected, Power off the 276 ... host if "Off" expected as per the requirement of initial test state. 277 [Arguments] ${expectedState} 278 # Description of argument(s): 279 # expectedState Test initial host state. 280 281 Run Keyword If '${expectedState}' == 'Running' 282 ... REST Power On stack_mode=skip quiet=1 283 284 Run Keyword If '${expectedState}' == 'Off' 285 ... REST Power Off stack_mode=skip quiet=1 286 287Launch Browser And Login OpenBMC GUI 288 [Documentation] Launch browser and log into openbmc GUI. 289 290 Open Browser With URL ${obmc_gui_url} 291 Login OpenBMC GUI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} 292 293Logout And Close Browser 294 [Documentation] Logout from openbmc application and close the browser. 295 296 Click Button ${xpath_button_user_action} 297 Click Button ${xpath_button_logout} 298 Close Browser 299 300 301Launch Browser And Login GUI 302 [Documentation] Launch browser and login to OpenBMC GUI. 303 304 Open Browser With URL ${obmc_gui_url} 305 Login GUI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} 306 307 308Login GUI 309 [Documentation] Login to OpenBMC GUI. 310 [Arguments] ${username}=${OPENBMC_USERNAME} ${password}=${OPENBMC_PASSWORD} 311 312 # Description of argument(s): 313 # username The username to be used for login. 314 # password The password to be used for login. 315 316 Go To ${obmc_gui_url} 317 Wait Until Element Is Enabled ${xpath_textbox_username} 318 Input Text ${xpath_textbox_username} ${username} 319 Input Password ${xpath_textbox_password} ${password} 320 Click Element ${xpath_login_button} 321 Wait Until Page Contains Overview timeout=30s 322 323 324Logout GUI 325 [Documentation] Logout of OpenBMC GUI. 326 327 Click Element ${xpath_logout_button} 328 Wait Until Page Contains Element ${xpath_login_button} 329 330 331Generate Test Error Log 332 [Documentation] Generate test error log. 333 334 BMC Execute Command ${CMD_INTERNAL_FAILURE} 335