blob: 86b8fc6f57ea4ff7198319f03738e28af6cf9ca6 [file] [log] [blame]
*** 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 Selenium2Library 120 120
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.
Rprint Timen ${TEST NAME} ==> [STARTED]
Launch Browser And Login OpenBMC GUI
Log To Console Verifying the system state and stablity...
Click Button ${xpath_select_server_power}
${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_display_server_power_status}
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_display_server_power_status}
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_display_server_power_status}
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_display_server_power_status}
... ${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.
Rprint 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}
Model Server Power Click Button
[Documentation] Click main server power in the header section.
[Arguments] ${div_element} ${anchor_element}
# Description of argument(s):
# div_element Server power header divisional element
# (e.g. header_wrapper.)
# anchor_element Server power header anchor element
# (e.g. header_wrapper_elt.)
Wait Until Element Is Visible
... //*[@id='header__wrapper']/div/div[${div_element}]/a[${anchor_element}]/span
Click Element
... //*[@id='header__wrapper']/div/div[${div_element}]/a[${anchor_element}]/span
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.
Model Server Power Click Button ${header_wrapper} ${header_wrapper_elt}
Page Should Contain Attempts to power on the server
Controller Server Power Click Button power__power-on
Page Should Contain Running
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_warm_reboot_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_cold_reboot_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_orderly_shutdown_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_immediate_shutdown_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 Text Should Be ${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