Add tests to run cvp-func and cvp-sanity jobs
New pytest marks:
- run_cvp_func_smoke
- run_cvp_func_sanity
New SaltManager method:
- get_single_pillar() , to get a single value from
a single minion
Minor changes to get_jenkins_job_stages.py and
run_jenkins_job.py, to call them with required
parameters.
Change-Id: Ia2dd039cc1a04ac6fb4cb2020f09df473f9c5104
Closes-Bug: PROD-21659
diff --git a/tcp_tests/utils/get_jenkins_job_stages.py b/tcp_tests/utils/get_jenkins_job_stages.py
index 883494f..b28e1d2 100755
--- a/tcp_tests/utils/get_jenkins_job_stages.py
+++ b/tcp_tests/utils/get_jenkins_job_stages.py
@@ -69,15 +69,15 @@
return parser
-def get_deployment_result(opts):
+def get_deployment_result(host, username, password, job_name, build_number):
"""Get the pipeline job result from Jenkins
Get all the stages resutls from the specified job,
show error message if present.
"""
- jenkins = client.JenkinsClient(host=opts.host,
- username=opts.username,
- password=opts.password)
+ jenkins = client.JenkinsClient(host=host,
+ username=username,
+ password=password)
def get_stages(nodes, indent=0, show_status=True):
res = []
@@ -90,15 +90,15 @@
res.append(msg)
if node['status'] != 'SUCCESS':
- wf = jenkins.get_workflow(opts.job_name, opts.build_number,
+ wf = jenkins.get_workflow(job_name, build_number,
int(node['id']))
if wf is not None:
if 'stageFlowNodes' in wf:
res += get_stages(wf['stageFlowNodes'], indent + 2,
show_status=False)
elif '_links' in wf and 'log' in wf['_links']:
- log = jenkins.get_workflow(opts.job_name,
- opts.build_number,
+ log = jenkins.get_workflow(job_name,
+ build_number,
int(node['id']),
mode='log')
if "text" in log:
@@ -109,8 +109,8 @@
return res
for _ in range(3):
- wf = jenkins.get_workflow(opts.job_name, opts.build_number)
- info = jenkins.build_info(opts.job_name, int(wf['id']))
+ wf = jenkins.get_workflow(job_name, build_number)
+ info = jenkins.build_info(job_name, int(wf['id']))
if info.get('result'):
break
time.sleep(3)
@@ -120,7 +120,7 @@
stages = get_stages(wf['stages'], 0)
if not stages:
msg = wf['status'] + ":\n\n"
- stages = [msg + jenkins.get_build_output(opts.job_name, int(wf['id']))]
+ stages = [msg + jenkins.get_build_output(job_name, int(wf['id']))]
return (build_description, stages)
@@ -133,7 +133,12 @@
parser.print_help()
return 10
else:
- (build_description, stages) = get_deployment_result(opts)
+ (build_description, stages) = get_deployment_result(
+ opts.host,
+ opts.username,
+ opts.password,
+ opts.job_name,
+ opts.build_number)
print(build_description)
print('\n'.join(stages))
diff --git a/tcp_tests/utils/run_jenkins_job.py b/tcp_tests/utils/run_jenkins_job.py
index acc2e9f..86a3703 100755
--- a/tcp_tests/utils/run_jenkins_job.py
+++ b/tcp_tests/utils/run_jenkins_job.py
@@ -97,10 +97,10 @@
return parser
-def print_build_header(build, job_params, opts):
+def print_build_header(build, job_params, build_timeout):
print('\n#############################################################')
print('##### Building job [{0}] #{1} (timeout={2}) with the following '
- 'parameters:'.format(build[0], build[1], opts.build_timeout))
+ 'parameters:'.format(build[0], build[1], build_timeout))
print('##### ' + '\n##### '.join(
[str(key) + ": " + str(val) for key, val in job_params.iteritems()]
))
@@ -114,41 +114,44 @@
print('#############################################################\n')
-def run_job(opts):
+def run_job(host, username, password,
+ job_name, job_parameters=None, job_output_prefix='',
+ start_timeout=1800, build_timeout=3600 * 4, verbose=False):
jenkins = JenkinsClient(
- host=opts.host,
- username=opts.username,
- password=opts.password)
+ host=host,
+ username=username,
+ password=password)
- job_params = jenkins.make_defults_params(opts.job_name)
- job_params.update(opts.job_parameters)
+ job_params = jenkins.make_defults_params(job_name)
+ if job_parameters is not None: # job_parameters = {}
+ job_params.update(job_parameters)
- build = jenkins.run_build(opts.job_name,
+ build = jenkins.run_build(job_name,
job_params,
- verbose=opts.verbose,
- timeout=opts.start_timeout)
- if opts.verbose:
- print_build_header(build, job_params, opts)
+ verbose=verbose,
+ timeout=start_timeout)
+ if verbose:
+ print_build_header(build, job_params, build_timeout)
try:
jenkins.wait_end_of_build(
name=build[0],
build_id=build[1],
- timeout=opts.build_timeout,
+ timeout=build_timeout,
interval=1,
- verbose=opts.verbose,
- job_output_prefix=opts.job_output_prefix)
+ verbose=verbose,
+ job_output_prefix=job_output_prefix)
except Exception as e:
print(str(e))
raise
result = jenkins.build_info(name=build[0],
build_id=build[1])['result']
- if opts.verbose:
- print_build_footer(build, result, opts.host)
+ if verbose:
+ print_build_footer(build, result, host)
- return EXIT_CODES.get(result, 2)
+ return result
def main(args=None):
@@ -160,8 +163,8 @@
parser.print_help()
return 10
else:
- exit_code = run_job(opts)
- return exit_code
+ result = run_job(opts)
+ return EXIT_CODES.get(result, 2)
if __name__ == "__main__":