Add support for the performance plugin.
Throws an error when invalid values are provided. Also fix a minor spelling error. Change-Id: Ib32fffbbdab89f072894e675a43eecfb0fff983d Reviewed-on: https://review.openstack.org/28916 Reviewed-by: James E. Blair <corvus@inaugust.com> Approved: Clark Boylan <clark.boylan@gmail.com> Reviewed-by: Clark Boylan <clark.boylan@gmail.com> Tested-by: Jenkins
This commit is contained in:
@@ -38,6 +38,7 @@ Example::
|
||||
import xml.etree.ElementTree as XML
|
||||
import jenkins_jobs.modules.base
|
||||
import logging
|
||||
import sys
|
||||
|
||||
|
||||
def archive(parser, xml_parent, data):
|
||||
@@ -1448,9 +1449,94 @@ def sonar(parser, xml_parent, data):
|
||||
data_triggers.get('skip-when-envvar-defined', '')
|
||||
|
||||
|
||||
def performance(parser, xml_parent, data):
|
||||
"""yaml: performance
|
||||
Publish performance test results from jmeter and junit.
|
||||
Requires the Jenkins `Performance Plugin.
|
||||
<https://wiki.jenkins-ci.org/display/JENKINS/Performance+Plugin>`_
|
||||
|
||||
:arg int failed-threshold: Specify the error percentage threshold that
|
||||
set the build failed. A negative value means
|
||||
don't use this threshold (default 0)
|
||||
:arg int unstable-threshold: Specify the error percentage threshold that
|
||||
set the build unstable. A negative value means
|
||||
don't use this threshold (default 0)
|
||||
:arg dict report:
|
||||
|
||||
:(jmeter or junit): (`dict` or `str`): Specify a custom report file
|
||||
(optional; jmeter default \**/*.jtl, junit default **/TEST-\*.xml)
|
||||
|
||||
Examples::
|
||||
|
||||
publishers:
|
||||
- performance:
|
||||
failed-threshold: 85
|
||||
unstable-threshold: -1
|
||||
report:
|
||||
- jmeter: "/special/file.jtl"
|
||||
- junit: "/special/file.xml"
|
||||
|
||||
publishers:
|
||||
- performance:
|
||||
failed-threshold: 85
|
||||
unstable-threshold: -1
|
||||
report:
|
||||
- jmeter
|
||||
- junit
|
||||
|
||||
publishers:
|
||||
- performance:
|
||||
failed-threshold: 85
|
||||
unstable-threshold: -1
|
||||
report:
|
||||
- jmeter: "/special/file.jtl"
|
||||
- junit: "/special/file.xml"
|
||||
- jmeter
|
||||
- junit
|
||||
"""
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
perf = XML.SubElement(xml_parent, 'hudson.plugins.performance.'
|
||||
'PerformancePublisher')
|
||||
XML.SubElement(perf, 'errorFailedThreshold').text = str(data.get(
|
||||
'failed-threshold', 0))
|
||||
XML.SubElement(perf, 'errorUnstableThreshold').text = str(data.get(
|
||||
'unstable-threshold', 0))
|
||||
parsers = XML.SubElement(perf, 'parsers')
|
||||
for item in data['report']:
|
||||
if isinstance(item, dict):
|
||||
item_name = item.keys()[0]
|
||||
item_values = item.get(item_name, None)
|
||||
if item_name == 'jmeter':
|
||||
jmhold = XML.SubElement(parsers, 'hudson.plugins.performance.'
|
||||
'JMeterParser')
|
||||
XML.SubElement(jmhold, 'glob').text = str(item_values)
|
||||
elif item_name == 'junit':
|
||||
juhold = XML.SubElement(parsers, 'hudson.plugins.performance.'
|
||||
'JUnitParser')
|
||||
XML.SubElement(juhold, 'glob').text = str(item_values)
|
||||
else:
|
||||
logger.fatal("You have not specified jmeter or junit, or "
|
||||
"you have incorrectly assigned the key value.")
|
||||
sys.exit(1)
|
||||
elif isinstance(item, str):
|
||||
if item == 'jmeter':
|
||||
jmhold = XML.SubElement(parsers, 'hudson.plugins.performance.'
|
||||
'JMeterParser')
|
||||
XML.SubElement(jmhold, 'glob').text = '**/*.jtl'
|
||||
elif item == 'junit':
|
||||
juhold = XML.SubElement(parsers, 'hudson.plugins.performance.'
|
||||
'JUnitParser')
|
||||
XML.SubElement(juhold, 'glob').text = '**/TEST-*.xml'
|
||||
else:
|
||||
logger.fatal("You have not specified jmeter or junit, or "
|
||||
"you have incorrectly assigned the key value.")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def join_trigger(parser, xml_parent, data):
|
||||
"""yaml: join-trigger
|
||||
Trriiger a job after all the immediate downstream jobs have completed
|
||||
Trigger a job after all the immediate downstream jobs have completed
|
||||
|
||||
:arg list projects: list of projects to trigger
|
||||
|
||||
|
||||
1
setup.py
1
setup.py
@@ -127,6 +127,7 @@ setuptools.setup(
|
||||
'jira=jenkins_jobs.modules.publishers:jira',
|
||||
'cifs=jenkins_jobs.modules.publishers:cifs',
|
||||
'sonar=jenkins_jobs.modules.publishers:sonar',
|
||||
'performance=jenkins_jobs.modules.publishers:performance',
|
||||
'join-trigger=jenkins_jobs.modules.publishers:join_trigger',
|
||||
],
|
||||
'jenkins_jobs.scm': [
|
||||
|
||||
Reference in New Issue
Block a user