Merge "[Kibana] Add improvements to Selenium tests for Kibana"
This commit is contained in:
commit
d5655e95ea
@ -34,8 +34,10 @@
|
|||||||
- describe-kubernetes-objects
|
- describe-kubernetes-objects
|
||||||
- gather-pod-logs
|
- gather-pod-logs
|
||||||
- gather-prom-metrics
|
- gather-prom-metrics
|
||||||
|
- gather-selenium-data
|
||||||
tags:
|
tags:
|
||||||
- helm-release-status
|
- helm-release-status
|
||||||
- describe-kubernetes-objects
|
- describe-kubernetes-objects
|
||||||
- gather-pod-logs
|
- gather-pod-logs
|
||||||
- gather-prom-metrics
|
- gather-prom-metrics
|
||||||
|
- gather-selenium-data
|
||||||
|
31
roles/gather-selenium-data/tasks/main.yaml
Normal file
31
roles/gather-selenium-data/tasks/main.yaml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
- name: "creating directory for helm release descriptions"
|
||||||
|
file:
|
||||||
|
path: "{{ logs_dir }}/selenium"
|
||||||
|
state: directory
|
||||||
|
|
||||||
|
- name: "Get selenium data"
|
||||||
|
shell: |-
|
||||||
|
set -x
|
||||||
|
cp /tmp/artifacts/* {{ logs_dir }}/selenium/.
|
||||||
|
args:
|
||||||
|
executable: /bin/bash
|
||||||
|
ignore_errors: True
|
||||||
|
|
||||||
|
- name: "Downloads logs to executor"
|
||||||
|
synchronize:
|
||||||
|
src: "{{ logs_dir }}/selenium"
|
||||||
|
dest: "{{ zuul.executor.log_root }}/{{ inventory_hostname }}"
|
||||||
|
mode: pull
|
||||||
|
ignore_errors: True
|
@ -7,98 +7,68 @@ 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 TimeoutException
|
||||||
from threading import Thread
|
|
||||||
|
|
||||||
logger = logging.getLogger('Kibana Selenium Tests')
|
logger = logging.getLogger('Kibana 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 Grafana admin user name
|
artifacts = '/tmp/artifacts/'
|
||||||
if "KIBANA_USER" in os.environ:
|
if not os.path.exists(artifacts):
|
||||||
kibana_user = os.environ['KIBANA_USER']
|
os.makedirs(artifacts)
|
||||||
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:
|
def get_variable(env_var):
|
||||||
kibana_journal_uri = os.environ['KIBANA_JOURNAL_URI']
|
if env_var in os.environ:
|
||||||
logger.info('Found Kibana Journal URI')
|
logger.info('Found "{}"'.format(env_var))
|
||||||
else:
|
return os.environ[env_var]
|
||||||
logger.critical('Kibana Journal URI environment variable not set')
|
else:
|
||||||
sys.exit(1)
|
logger.critical('Variable "{}" is not defined!'.format(env_var))
|
||||||
|
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_user = get_variable('KIBANA_USER')
|
||||||
kibana_logstash_uri = os.environ['KIBANA_LOGSTASH_URI']
|
kibana_password = get_variable('KIBANA_PASSWORD')
|
||||||
logger.info('Found Kibana Logstash URI')
|
kibana_journal_uri = get_variable('KIBANA_JOURNAL_URI')
|
||||||
else:
|
kibana_kernel_uri = get_variable('KIBANA_KERNEL_URI')
|
||||||
logger.critical('Kibana Logstash URI environment variable not set')
|
kibana_logstash_uri = get_variable('KIBANA_LOGSTASH_URI')
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
options = Options()
|
options = Options()
|
||||||
options.add_argument('--headless')
|
options.add_argument('--headless')
|
||||||
options.add_argument('--no-sandbox')
|
options.add_argument('--no-sandbox')
|
||||||
options.add_argument('--window-size=1920x1080')
|
options.add_argument('--window-size=1920x1080')
|
||||||
|
|
||||||
errNO = 1
|
targets = [(kibana_kernel_uri, 'Kernel'),
|
||||||
|
(kibana_journal_uri, 'Journal'),
|
||||||
|
(kibana_logstash_uri, 'Logstash')]
|
||||||
|
|
||||||
browser = webdriver.Chrome('/etc/selenium/chromedriver', chrome_options=options)
|
for target, name in targets:
|
||||||
url = "http://{0}:{1}@{2}".format(kibana_user, kibana_password, kibana_journal_uri)
|
retry = 3
|
||||||
browser.get(url)
|
while retry > 0:
|
||||||
|
prefix = ''
|
||||||
|
browser = webdriver.Chrome(
|
||||||
|
'/etc/selenium/chromedriver', chrome_options=options)
|
||||||
|
url = "http://{0}:{1}@{2}".format(kibana_user, kibana_password, target)
|
||||||
|
browser.get(url)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
WebDriverWait(browser, 60).until(
|
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]'))
|
EC.presence_of_element_located(
|
||||||
)
|
(By.XPATH, '//*[@id="kibana-body"]/div[1]/div/div/div[3]/'
|
||||||
browser.save_screenshot('/tmp/artifacts/Kibana_JournalIndex.png')
|
'discover-app/div/div[2]/div[2]/div/div[2]/div[2]/'
|
||||||
except TimeoutException, e:
|
'doc-table/div/table/tbody/tr[1]/td[2]'))
|
||||||
browser.save_screenshot('/tmp/artifacts/Error_{}.png'.format(errNO))
|
)
|
||||||
logger.error('Error occured loading Journal index')
|
logger.info('{} index loaded successfully'.format(name))
|
||||||
errNO += 1
|
retry = 0
|
||||||
|
except TimeoutException, e:
|
||||||
browser = webdriver.Chrome('/etc/selenium/chromedriver', chrome_options=options)
|
logger.error('Error occured loading {} index'.format(name))
|
||||||
url = "http://{0}:{1}@{2}".format(kibana_user, kibana_password, kibana_kernel_uri)
|
prefix = 'Error_'
|
||||||
browser.get(url)
|
browser.save_screenshot(
|
||||||
|
artifacts + '{}Kibana_{}.png'.format(prefix, name))
|
||||||
try:
|
browser.quit()
|
||||||
WebDriverWait(browser, 60).until(
|
retry -= 1
|
||||||
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
|
|
||||||
|
Loading…
Reference in New Issue
Block a user