Update Horizon Helm test to use python3
This change updates the tests container image to one which installs python3. The selenium-test.py template file has been refactored to match the structure of the selenium tests in openstack-helm-infra/tools/gate/selenium Change-Id: I568bea8d715ea28b8e750215d166ba1b04e4172d
This commit is contained in:
parent
9736f5f544
commit
5c6811503f
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
{{/*
|
{{/*
|
||||||
Copyright 2019 The Openstack-Helm Authors.
|
Copyright 2019 The Openstack-Helm Authors.
|
||||||
@ -24,70 +24,66 @@ from selenium.webdriver.common.by import By
|
|||||||
from selenium.webdriver.support.ui import WebDriverWait
|
from selenium.webdriver.support.ui import WebDriverWait
|
||||||
from selenium.webdriver.support import expected_conditions as EC
|
from selenium.webdriver.support import expected_conditions as EC
|
||||||
from selenium.webdriver.chrome.options import Options
|
from selenium.webdriver.chrome.options import Options
|
||||||
|
from selenium.common.exceptions import TimeoutException
|
||||||
|
from selenium.common.exceptions import NoSuchElementException
|
||||||
|
|
||||||
# Create logger, console handler and formatter
|
# Create logger, console handler and formatter
|
||||||
logger = logging.getLogger('Horizon Selenium Tests')
|
logger = logging.getLogger('Horizon Selenium Tests')
|
||||||
logger.setLevel(logging.DEBUG)
|
logger.setLevel(logging.DEBUG)
|
||||||
ch = logging.StreamHandler()
|
ch = logging.StreamHandler()
|
||||||
ch.setLevel(logging.DEBUG)
|
ch.setLevel(logging.DEBUG)
|
||||||
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
formatter = logging.Formatter(
|
||||||
|
'%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
||||||
|
)
|
||||||
|
|
||||||
ch.setFormatter(formatter)
|
ch.setFormatter(formatter)
|
||||||
logger.addHandler(ch)
|
logger.addHandler(ch)
|
||||||
|
|
||||||
# Get keystone admin user name
|
def get_variable(env_var):
|
||||||
if "OS_USERNAME" in os.environ:
|
if env_var in os.environ:
|
||||||
keystone_user = os.environ['OS_USERNAME']
|
logger.info('Found "{}"'.format(env_var))
|
||||||
logger.info('Found Keystone username')
|
return os.environ[env_var]
|
||||||
else:
|
else:
|
||||||
logger.critical('Keystone username environment variable not set')
|
logger.critical('Variable "{}" is not defined!'.format(env_var))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
if "OS_PASSWORD" in os.environ:
|
|
||||||
keystone_password = os.environ['OS_PASSWORD']
|
keystone_user = get_variable('OS_USERNAME')
|
||||||
logger.info('Found Keystone password')
|
keystone_password = get_variable('OS_PASSWORD')
|
||||||
else:
|
horizon_uri = get_variable('HORIZON_URI')
|
||||||
logger.critical('Keystone password environment variable not set')
|
user_domain_name = get_variable('OS_USER_DOMAIN_NAME')
|
||||||
sys.exit(1)
|
|
||||||
if "HORIZON_URI" in os.environ:
|
|
||||||
horizon_uri = os.environ['HORIZON_URI']
|
|
||||||
logger.info('Found Horizon URI')
|
|
||||||
else:
|
|
||||||
logger.critical('Horizon URI environment variable not set')
|
|
||||||
sys.exit(1)
|
|
||||||
if "OS_USER_DOMAIN_NAME" in os.environ:
|
|
||||||
user_domain_name = os.environ['OS_USER_DOMAIN_NAME']
|
|
||||||
logger.info('Found Keystone user domain')
|
|
||||||
else:
|
|
||||||
logger.critical('Keystone user domain environment variable not set')
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
# Add options to make chrome browser headless
|
# Add options to make chrome browser headless
|
||||||
options = Options()
|
options = Options()
|
||||||
options.add_argument('--headless')
|
options.add_argument('--headless')
|
||||||
options.add_argument('--no-sandbox')
|
options.add_argument('--no-sandbox')
|
||||||
|
chrome_driver = '/etc/selenium/chromedriver'
|
||||||
browser = webdriver.Chrome('/etc/selenium/chromedriver', chrome_options=options)
|
browser = webdriver.Chrome(chrome_driver, chrome_options=options)
|
||||||
browser.get(horizon_uri)
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
browser.find_element_by_name('domain').send_keys(user_domain_name)
|
logger.info('Attempting to connect to Horizon')
|
||||||
browser.find_element_by_name('username').send_keys(keystone_user)
|
browser.get(horizon_uri)
|
||||||
browser.find_element_by_name('password').send_keys(keystone_password)
|
el = WebDriverWait(browser, 15).until(
|
||||||
logger.info("Successfully reached Horizon dashboard")
|
EC.title_contains('OpenStack Dashboard')
|
||||||
except:
|
)
|
||||||
logger.error('Unable to reach Horizon')
|
logger.info('Connected to Horizon')
|
||||||
browser.close()
|
except TimeoutException:
|
||||||
|
logger.critical('Timed out waiting for Horizon')
|
||||||
|
browser.quit()
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
browser.find_element_by_id('loginBtn').click()
|
logger.info('Attempting to log into Horizon')
|
||||||
WebDriverWait(browser, 15).until(
|
browser.find_element_by_name('domain').send_keys(user_domain_name)
|
||||||
EC.presence_of_element_located((By.ID, 'navbar-collapse'))
|
browser.find_element_by_name('username').send_keys(keystone_user)
|
||||||
)
|
browser.find_element_by_name('password').send_keys(keystone_password)
|
||||||
logger.info("Successfully logged into Horizon")
|
browser.find_element_by_id('loginBtn').click()
|
||||||
except:
|
WebDriverWait(browser, 15).until(
|
||||||
logger.error("Unable to login to Horizon")
|
EC.presence_of_element_located((By.ID, 'navbar-collapse'))
|
||||||
browser.close()
|
)
|
||||||
sys.exit(1)
|
logger.info("Successfully logged into Horizon")
|
||||||
|
except (TimeoutException, NoSuchElementException):
|
||||||
|
logger.error('Failed to login to Horizon')
|
||||||
|
browser.quit()
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
browser.close()
|
browser.quit()
|
||||||
|
@ -23,7 +23,7 @@ images:
|
|||||||
horizon_db_sync: docker.io/openstackhelm/horizon:ocata-ubuntu_xenial
|
horizon_db_sync: docker.io/openstackhelm/horizon:ocata-ubuntu_xenial
|
||||||
db_drop: docker.io/openstackhelm/heat:ocata-ubuntu_xenial
|
db_drop: docker.io/openstackhelm/heat:ocata-ubuntu_xenial
|
||||||
horizon: docker.io/openstackhelm/horizon:ocata-ubuntu_xenial
|
horizon: docker.io/openstackhelm/horizon:ocata-ubuntu_xenial
|
||||||
test: docker.io/openstackhelm/osh-selenium:latest-ubuntu_xenial
|
test: docker.io/openstackhelm/osh-selenium:latest-ubuntu_bionic
|
||||||
dep_check: quay.io/airshipit/kubernetes-entrypoint:v1.0.0
|
dep_check: quay.io/airshipit/kubernetes-entrypoint:v1.0.0
|
||||||
image_repo_sync: docker.io/docker:17.07.0
|
image_repo_sync: docker.io/docker:17.07.0
|
||||||
pull_policy: "IfNotPresent"
|
pull_policy: "IfNotPresent"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user