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