*** Settings *** Documentation This is a resource file of OpenBMC ASMI It contains the ... user-defined keywords which are available to all gui modules Library String Library Collections Library DateTime Library XvfbRobot Library OperatingSystem Library SeleniumLibrary Library AngularJSLibrary Library SSHLibrary 30 Seconds Library Process Library supporting_libs.py Library ../../lib/gen_print.py Library ../../lib/gen_robot_print.py Library ../../lib/gen_valid.py Library ../../lib/gen_robot_ssh.py Library ../../lib/bmc_ssh_utils.py Resource ../../lib/resource.robot Resource ../../lib/rest_client.robot Resource ../../lib/state_manager.robot Variables ../data/resource_variables.py *** Variables *** ${obmc_gui_url} https://${OPENBMC_HOST} ${obmc_PowerOff_state} Off ${obmc_PowerRunning_state} Running ${obmc_PowerStandby_state} Standby # Default GUI broswer and mode is set to "Firefox" and "headless" # respectively here. ${GUI_BROWSER} ff ${GUI_MODE} headless *** Keywords *** Launch OpenBMC GUI Browser [Documentation] Launch the OpenBMC GUI URL on a browser. # By default uses headless mode, otherwise, the GUI browser. ${op_system}= Get Operating System Run Keyword If '${op_system}' == 'windows' ... Launch Header Browser ... ELSE IF '${op_system}' == 'Darwin' # Mac OS is currently having some issues with firefox, so using # chrome. # TODO: Need to add support for other browsers. Issue #1280. ... Launch Header Browser chrome ... ELSE # Linux OS. ... Launch Headless Browser Get Operating System [Documentation] Identify platform/OS. ${curdir_lower_case}= Convert To Lowercase ${CURDIR} ${windows_platform}= Run Keyword And Return Status ... Should Contain ${curdir_lower_case} c:\ ${op_system}= Run Keyword If '${windows_platform}' == 'True' ... Set Variable windows ... ELSE ... Run uname [Return] ${op_system} Launch Header Browser [Documentation] Open the browser with the URL and ... login on windows platform. [Arguments] ${browser_type}=${GUI_BROWSER} # Description of argument(s): # browser_type Type of browser (e.g. "firefox", "chrome", etc.). ${BROWSER_ID}= Open Browser ${obmc_gui_url} ${browser_type} Maximize Browser Window Set Global Variable ${BROWSER_ID} Launch Headless Browser [Documentation] Launch headless browser. [Arguments] ${URL}=${obmc_gui_url} ${browser}=${GUI_BROWSER} # Description of argument(s): # URL Openbmc GUI URL to be open # (e.g. https://openbmc-test.mybluemix.net/#/login). # browser Browser to open given URL in headless way # (e.g. gc for google chrome, ff for firefox). Start Virtual Display ${browser_ID}= Open Browser ${URL} Set Window Size 1920 1080 [Return] ${browser_ID} Login OpenBMC GUI [Documentation] Perform login to open BMC GUI. [Arguments] ${username}=${OPENBMC_USERNAME} ... ${password}=${OPENBMC_PASSWORD} # Description of argument(s): # username The username. # password The password. Go To ${obmc_gui_url} Wait Until Element Is Enabled ${xpath_textbox_hostname} Input Text ${xpath_textbox_hostname} ${OPENBMC_HOST} Input Text ${xpath_textbox_username} ${username} Input Password ${xpath_textbox_password} ${password} Click Element login__submit Wait Until Element Is Enabled ${xpath_button_logout} Page Should Contain Server information Test Setup Execution [Documentation] Verify all the preconditions to be tested. [Arguments] ${obmc_test_setup_state}=${OBMC_PowerOff_state} # Description of argument(s): # obmc_test_setup The OpenBMC required state. Print Timen ${TEST NAME} ==> [STARTED] Launch Browser And Login OpenBMC GUI Log To Console Verifying the system state and stablity... Click Element ${xpath_select_server_power} Wait Until Page Does Not Contain Unreachable ${obmc_current_state}= Get Text ${xpath_power_indicator} Rpvars obmc_current_state ${obmc_state_status}= Run Keyword And Return Status ... Should Contain ${obmc_current_state} ${obmc_test_setup_state} Return From Keyword If '${obmc_state_status}' == 'True' ${obmc_standby_state}= Run Keyword And Return Status ... Should Contain ${obmc_current_state} ${obmc_standby_state} Run Keyword If '${obmc_standby_state}' == 'True' ... Reboot OpenBMC Run Keyword If '${obmc_test_setup_state}' == '${obmc_PowerRunning_state}' ... Run Keywords Power On OpenBMC AND ... Wait Until Keyword Succeeds 10 min 60 sec Is Host Running Run Keyword If '${obmc_test_setup_state}' == '${obmc_PowerOff_state}' ... Power Off OpenBMC Power Off OpenBMC [Documentation] Power off the OBMC system. Log To Console Power Off OpenBMC... Click Element ${xpath_select_server_power} Execute JavaScript window.scrollTo(0, document.body.scrollHeight) Click Button ${xpath_select_button_orderly_shutdown} Click Yes Button ${xpath_select_button_orderly_shutdown_yes} Wait OpenBMC To Become Stable ${obmc_off_state} Power On OpenBMC [Documentation] Power on the OBMC system. Log To Console Power On OpenBMC... Click Element ${xpath_select_server_power} Click Button ${xpath_select_button_power_on } Wait OpenBMC To Become Stable ${obmc_running_state} Reboot OpenBMC [Documentation] Rebooting the OBMC system. Log To Console Reboting the OpenBMC... Click Element ${xpath_select_server_power} Click Button ${xpath_select_button_orderly_shutdown} Click Yes Button ${xpath_select_button_orderly_shutdown_yes} Wait OpenBMC To Become Stable ${obmc_off_state} Wait OpenBMC To Become Stable [Documentation] Power off the OBMC. [Arguments] ${obmc_expected_state} ${retry_time}=15 min ... ${retry_interval}=45 sec # Description of argument(s): # OBMC_expected_state The OBMC state which is required for test. # retry_time Total wait time after executing the command. # retry_interval Time interval for to keep checking with in the # above total wait time. Wait Until Keyword Succeeds ${retry_time} ${retry_interval} ... Wait Until Element Contains ${xpath_select_server_power} ... ${obmc_expected_state} Wait Until Keyword Succeeds ${retry_time} ${retry_interval} ... Verify OpenBMC State From REST Interface ${obmc_expected_state} Verify OpenBMC State From REST Interface [Documentation] Verify system state from REST Interface. [Arguments] ${obmc_required_state} # Description of argument(s): # obmc_required_state The OBMC state which is required for test. ${obmc_current_state_REST}= Get Host State Should Be Equal ${obmc_current_state_REST} ${obmc_required_state} Click Yes Button [Documentation] Click the 'Yes' button. [Arguments] ${xpath_button_yes} # Description of argument(s): # xpath_button_yes The xpath of 'Yes' button. Click Button ${xpath_button_yes} LogOut OpenBMC GUI [Documentation] Log out of OpenBMC GUI. SSHLibrary.Close All Connections # Passing direct id element "header" as an argument to Click Element. Click Element ${xpath_button_logout} Wait Until Page Contains Element ${xpath_button_login} Test Teardown Execution [Documentation] Do final closure activities of test case execution. Print Pgm Footer Print Dashes 0 100 1 = Close Browser Open Browser With URL [Documentation] Open browser with specified URL and returns browser id. [Arguments] ${URL} ${browser}=ff ${mode}=${GUI_MODE} # Description of argument(s): # URL Openbmc GUI URL to be open # (e.g. https://openbmc-test.mybluemix.net/#/login). # browser Browser used to open above URL # (e.g. gc for google chrome, ff for firefox). # mode Browser opening mode(e.g. headless, header). ${browser_ID}= Run Keyword If '${mode}' == 'headless' ... Launch Headless Browser ${URL} ${browser} ... ELSE Open Browser ${URL} ${browser} [Return] ${browser_ID} Controller Server Power Click Button [Documentation] Click main server power in the header section. [Arguments] ${controller_element} # Description of argument(s): # controller_element Server power controller element # (e.g. power__power-on.) Click Element ${xpath_select_server_power} Wait Until Element Is Visible ${controller_element} Page Should Contain Button ${controller_element} Click Element ${controller_element} Controller Power Operations Confirmation Click Button [Documentation] Click Common Power Operations Confirmation. [Arguments] ${main_element} ${sub_element} ${confirm_msg_elt} ${confirmation} # Description of argument(s): # main_element Server power operations element # (e.g. power_operations.) # sub_element Server power operations sub element # (e.g. warm_boot, shut_down.) # confirm_msg_elt Server power operations confirm message element # (e.g. confirm_msg.) # confirmation Server power operations confirmation # (e.g. yes.) ${element_path}= Catenate //*[@id='power-operations']/div[${main_element}]/div[${sub_element}] ... /confirm/div/div[${confirm_msg_elt}]/button[${confirmation}] Click Element ${element_path.replace(" ","")} GUI Power On [Documentation] Power on the host using GUI. Controller Server Power Click Button power__power-on Wait Until Page Contains Running timeout=30s Verify Display Content [Documentation] Verify text content display. [Arguments] ${display_text} # Description of argument(s): # display_text The text which is expected to be found on the web page. Page Should Contain ${display_text} Warm Reboot openBMC [Documentation] Warm reboot the OBMC system. Log To Console Warm Reboting the OpenBMC... Click Element ${xpath_select_button_warm_reboot} Verify Warning Message Display Text ${xpath_operation_warning_message} ... ${text_warm_reboot_warning_message} Click Yes Button ${xpath_select_button_warm_reboot_yes} Wait OpenBMC To Become Stable ${obmc_running_state} Click No Button [Documentation] Click the 'No' button. [Arguments] ${xpath_button_no} # Description of argument(s): # xpath_button_no The xpath of 'No' button. Click Button ${xpath_button_no} Cold Reboot openBMC [Documentation] Cold reboot the OBMC system. Log To Console Cold Reboting the OpenBMC... Click Element ${xpath_select_button_cold_reboot} Verify Warning Message Display Text ${xpath_operation_warning_message} ... ${text_cold_reboot_warning_message} Click Yes Button ${xpath_select_button_cold_reboot_yes} Wait OpenBMC To Become Stable ${obmc_running_state} Orderly Shutdown OpenBMC [Documentation] Do orderly shutdown the OBMC system. Log To Console Orderly Shutdown the OpenBMC... Click Element ${xpath_select_button_orderly_shutdown} Verify Warning Message Display Text ${xpath_operation_warning_message} ... ${text_orderly_shutdown_warning_message} Click Yes Button ${xpath_select_button_orderly_shutdown_yes} Wait OpenBMC To Become Stable ${obmc_off_state} Immediate Shutdown openBMC [Documentation] Do immediate shutdown the OBMC system. Log To Console Immediate Shutdown the OpenBMC... Click Element ${xpath_select_button_immediate_shutdown} Verify Warning Message Display Text ... ${xpath_operation_warning_message} ... ${text_immediate_shutdown_warning_message} Click Yes Button ${xpath_select_button_immediate_shutdown_yes} Wait OpenBMC To Become Stable ${obmc_off_state} Verify Warning Message Display Text [Documentation] Verify the warning message display text. [Arguments] ${xpath_text_message} ${text_message} # xpath_text_message Xpath of warning message display. # text_message Content of the display message info. Element Should Contain ${xpath_text_message} ${text_message} Expected Initial Test State [Documentation] Power on the host if "Running" expected, Power off the ... host if "Off" expected as per the requirement of initial test state. [Arguments] ${expectedState} # Description of argument(s): # expectedState Test initial host state. Run Keyword If '${expectedState}' == 'Running' ... REST Power On stack_mode=skip quiet=1 Run Keyword If '${expectedState}' == 'Off' ... REST Power Off stack_mode=skip quiet=1 Launch Browser And Login OpenBMC GUI [Documentation] Launch browser and log into openbmc GUI. Open Browser With URL ${obmc_gui_url} Login OpenBMC GUI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} Logout And Close Browser [Documentation] Logout from openbmc application and close the browser. Click Element //*[text()='Log out'] Close Browser