Improve cicd test runner and reported
- run pytest code without capturing stderr, to get solid output
in the Jenkins log
- do not print the error message if something failed,
it is already shown in the exception message
- add re-tries while getting the job results. Jenkins may return
'None' for the job workflow right after the job is finished.
- add getting k8s version to utils/env_k8s
- add reporting k8s_conformance suite to TestRail
- increase number of cmp nodes to 4 on k8s cicd envs
- increase memory on k8s cmp nodes from 2Gb to 4Gb
- increase memory on k8s ctl nodes from 2Gb to 8Gb
- enable verbose in k8s_conformance tests
Change-Id: I672279007fe4d7e3d684f0e49d1bcb7ff42a430f
diff --git a/tcp_tests/utils/env_k8s b/tcp_tests/utils/env_k8s
index 01e20fd..39764d0 100755
--- a/tcp_tests/utils/env_k8s
+++ b/tcp_tests/utils/env_k8s
@@ -20,15 +20,21 @@
unset kube_apiserver_port
unset kubernetes_admin_user
unset kubernetes_admin_password
+ unset kubernetes_version_major
+ unset kubernetes_version_minor
else
KUBE_TARGET='I@haproxy:proxy:enabled:true and I@kubernetes:master and *01*'
export kube_host=$(${PYTHONPATH}/tcp_tests/utils/get_param.py -C "${KUBE_TARGET}" pillar.get haproxy:proxy:listen:k8s_secure:binds:address)
export kube_apiserver_port=$(${PYTHONPATH}/tcp_tests/utils/get_param.py -C "${KUBE_TARGET}" pillar.get haproxy:proxy:listen:k8s_secure:binds:port)
export kubernetes_admin_user=$(${PYTHONPATH}/tcp_tests/utils/get_param.py -C "${KUBE_TARGET}" pillar.get kubernetes:master:admin:username)
export kubernetes_admin_password=$(${PYTHONPATH}/tcp_tests/utils/get_param.py -C "${KUBE_TARGET}" pillar.get kubernetes:master:admin:password)
+ export kubernetes_version_major=$(${PYTHONPATH}/tcp_tests/utils/get_param.py -C "${KUBE_TARGET}" cmd.run "curl -s 127.0.0.1:8080/version|grep major| cut -d'\"' -f4|sed 's/[^0-9]*//g'")
+ export kubernetes_version_minor=$(${PYTHONPATH}/tcp_tests/utils/get_param.py -C "${KUBE_TARGET}" cmd.run "curl -s 127.0.0.1:8080/version|grep minor| cut -d'\"' -f4|sed 's/[^0-9]*//g'")
fi
echo "export kube_host='$kube_host' # Kubernetes API host"
echo "export kube_apiserver_port='${kube_apiserver_port}' # Kubernetes API port"
echo "export kubernetes_admin_user='${kubernetes_admin_user}' # Kubernetes admin user"
echo "export kubernetes_admin_password='${kubernetes_admin_password}' # Kubernetes admin password"
+echo "export kubernetes_version_major='${kubernetes_version_major}' # Kubernetes version major"
+echo "export kubernetes_version_minor='${kubernetes_version_minor}' # Kubernetes version minor"
diff --git a/tcp_tests/utils/get_jenkins_job_stages.py b/tcp_tests/utils/get_jenkins_job_stages.py
index 143e1a2..361b8d1 100755
--- a/tcp_tests/utils/get_jenkins_job_stages.py
+++ b/tcp_tests/utils/get_jenkins_job_stages.py
@@ -15,6 +15,7 @@
import argparse
import os
import sys
+import time
sys.path.append(os.getcwd())
try:
@@ -107,8 +108,17 @@
for line in log["text"].splitlines()))
return res
- wf = jenkins.get_workflow(opts.job_name, opts.build_number)
- info = jenkins.build_info(opts.job_name, int(wf['id']))
+ for _ in range(3):
+ wf = jenkins.get_workflow(opts.job_name, opts.build_number)
+ info = jenkins.build_info(opts.job_name, int(wf['id']))
+ if info is not None:
+ break
+ time.sleep(3)
+
+ if not info:
+ raise("Cannot get info for the job {0}:{1}".format(opts.job_name,
+ opts.build_number))
+
build_description = ("[" + info['fullDisplayName'] + "] " +
info['url'] + " : " + info['result'])
stages = get_stages(wf['stages'], 0)