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:
Eric Erfanian
2013-05-12 19:30:14 -05:00
committed by Jenkins
parent 61f9fb84cb
commit 8bd3567adb
2 changed files with 88 additions and 1 deletions

View File

@@ -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

View File

@@ -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': [