1bf24051c5
This adds exception handling to the Kibana Selenium tests to address the test failures due to TimeoutExceptions when the dashboard loads slowly. Only TimeoutExceptions are handled so if there is an issue with the page itself an error will still cause the gate to fail as intended. When a TimeoutException occurs an error message is logged and a screenshot is taken of the current page. Change-Id: I16cd3a61ffce2e5fdc39bd7731cc068b8a6ec41f
105 lines
3.8 KiB
Python
105 lines
3.8 KiB
Python
import logging
|
|
import os
|
|
import sys
|
|
from selenium import webdriver
|
|
from selenium.webdriver.common.by import By
|
|
from selenium.webdriver.support.ui import WebDriverWait
|
|
from selenium.webdriver.support import expected_conditions as EC
|
|
from selenium.webdriver.chrome.options import Options
|
|
from selenium.common.exceptions import TimeoutException
|
|
from threading import Thread
|
|
|
|
logger = logging.getLogger('Kibana Selenium Tests')
|
|
logger.setLevel(logging.DEBUG)
|
|
ch = logging.StreamHandler()
|
|
ch.setLevel(logging.DEBUG)
|
|
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
|
|
|
ch.setFormatter(formatter)
|
|
logger.addHandler(ch)
|
|
|
|
# Get Grafana admin user name
|
|
if "KIBANA_USER" in os.environ:
|
|
kibana_user = os.environ['KIBANA_USER']
|
|
logger.info('Found Kibana username')
|
|
else:
|
|
logger.critical('Kibana username environment variable not set')
|
|
sys.exit(1)
|
|
|
|
if "KIBANA_PASSWORD" in os.environ:
|
|
kibana_password = os.environ['KIBANA_PASSWORD']
|
|
logger.info('Found Kibana password')
|
|
else:
|
|
logger.critical('Kibana password environment variable not set')
|
|
sys.exit(1)
|
|
|
|
if "KIBANA_JOURNAL_URI" in os.environ:
|
|
kibana_journal_uri = os.environ['KIBANA_JOURNAL_URI']
|
|
logger.info('Found Kibana Journal URI')
|
|
else:
|
|
logger.critical('Kibana Journal URI environment variable not set')
|
|
sys.exit(1)
|
|
|
|
if "KIBANA_KERNEL_URI" in os.environ:
|
|
kibana_kernel_uri = os.environ['KIBANA_KERNEL_URI']
|
|
logger.info('Found Kibana Kernel URI')
|
|
else:
|
|
logger.critical('Kibana Kernel URI environment variable not set')
|
|
sys.exit(1)
|
|
|
|
if "KIBANA_LOGSTASH_URI" in os.environ:
|
|
kibana_logstash_uri = os.environ['KIBANA_LOGSTASH_URI']
|
|
logger.info('Found Kibana Logstash URI')
|
|
else:
|
|
logger.critical('Kibana Logstash URI environment variable not set')
|
|
sys.exit(1)
|
|
|
|
options = Options()
|
|
options.add_argument('--headless')
|
|
options.add_argument('--no-sandbox')
|
|
options.add_argument('--window-size=1920x1080')
|
|
|
|
errNO = 1
|
|
|
|
browser = webdriver.Chrome('/etc/selenium/chromedriver', chrome_options=options)
|
|
url = "http://{0}:{1}@{2}".format(kibana_user, kibana_password, kibana_journal_uri)
|
|
browser.get(url)
|
|
|
|
try:
|
|
WebDriverWait(browser, 60).until(
|
|
EC.presence_of_element_located((By.XPATH, '//*[@id="kibana-body"]/div[1]/div/div/div[3]/discover-app/div/div[2]/div[2]/div/div[2]/div[2]/doc-table/div/table/tbody/tr[1]/td[2]'))
|
|
)
|
|
browser.save_screenshot('/tmp/artifacts/Kibana_JournalIndex.png')
|
|
except TimeoutException, e:
|
|
browser.save_screenshot('/tmp/artifacts/Error_{}.png'.format(errNO))
|
|
logger.error('Error occured loading Journal index')
|
|
errNO += 1
|
|
|
|
browser = webdriver.Chrome('/etc/selenium/chromedriver', chrome_options=options)
|
|
url = "http://{0}:{1}@{2}".format(kibana_user, kibana_password, kibana_kernel_uri)
|
|
browser.get(url)
|
|
|
|
try:
|
|
WebDriverWait(browser, 60).until(
|
|
EC.presence_of_element_located((By.XPATH, '//*[@id="kibana-body"]/div[1]/div/div/div[3]/discover-app/div/div[2]/div[2]/div/div[2]/div[2]/doc-table/div/table/tbody/tr[1]/td[2]'))
|
|
)
|
|
browser.save_screenshot('/tmp/artifacts/Kibana_KernelIndex.png')
|
|
except TimeoutException, e:
|
|
browser.save_screenshot('/tmp/artifacts/Error_{}.png'.format(errNO))
|
|
logger.error('Error occured loading Kernel index')
|
|
errNO += 1
|
|
|
|
browser = webdriver.Chrome('/etc/selenium/chromedriver', chrome_options=options)
|
|
url = "http://{0}:{1}@{2}".format(kibana_user, kibana_password, kibana_logstash_uri)
|
|
browser.get(url)
|
|
|
|
try:
|
|
WebDriverWait(browser, 60).until(
|
|
EC.presence_of_element_located((By.XPATH, '//*[@id="kibana-body"]/div[1]/div/div/div[3]/discover-app/div/div[2]/div[2]/div/div[2]/div[2]/doc-table/div/table/tbody/tr[1]/td[2]'))
|
|
)
|
|
browser.save_screenshot('/tmp/artifacts/Kibana_LogstashIndex.png')
|
|
except TimeoutException, e:
|
|
browser.save_screenshot('/tmp/artifacts/Error_{}.png'.format(errNO))
|
|
logger.error('Error occured loading Logstash index')
|
|
errNO += 1
|