
This helps verify Kibana is working properly by using Selenium Webdriver to navigate to different index dashboards and takes screenshot of each one. It also add the scripts to the gates for single and multinode deployments. Change-Id: Ic2c91734d1eaac0ea4e7985bf69082942166715d
89 lines
3.2 KiB
Python
89 lines
3.2 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')
|
|
|
|
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)
|
|
|
|
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')
|
|
|
|
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)
|
|
|
|
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')
|
|
|
|
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)
|
|
|
|
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')
|