Merge "Add run_failure_rate argument to specify values to use in graph"

This commit is contained in:
Jenkins 2017-03-31 02:35:17 +00:00 committed by Gerrit Code Review
commit eb1aa97ccc
3 changed files with 30 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 KiB

View File

@ -158,6 +158,28 @@ for a given run_metadata key to make the graph useful. To workaround this you
specify a list of values that will be used to filter the output so that only specify a list of values that will be used to filter the output so that only
matches of that key will be in the output. matches of that key will be in the output.
Run Failure Rate Grouped By Run Metadata
----------------------------------------
This graph generates a bar chart to show the failure rates for all runs for
with a run_metadata value for a user provided run_metadata key.
For example, running something like::
subunit2sql-graph --title "Failure Ratess by Job Name" --database-connection mysqll://test:test@localhost/subunit2sql -o test.png run_failure_rate build_name --filter_list gate-tempest-dsvm-neutron-full-ssh,gate-tempest-dsvm-full-ubuntu-xenial,gate-tempest-dsvm-full-ubuntu-trusty,gate-tempest-dsvm-py35-ubuntu-xenial
will generate a graph like:
.. image:: graph-run_failure_rate.png
:width: 115%
It's also worth noting the --filter_list argument used in the command above.
In some cases, especially larger data sets, there are too many distinct values
for a given run_metadata key to make the graph useful. To workaround this you
specify a list of values that will be used to filter the output so that only
matches of that key will be in the output.
subunit2sql-graph plugin interface subunit2sql-graph plugin interface
================================== ==================================

View File

@ -26,10 +26,16 @@ matplotlib.style.use('ggplot')
def set_cli_opts(parser): def set_cli_opts(parser):
parser.add_argument('metadata_key', parser.add_argument('metadata_key',
help="The run_metadata key to group the runs by") help="The run_metadata key to group the runs by")
parser.add_argument('--filter_list', '-f',
help='A comma seperated list of values to use')
def generate_series(): def generate_series():
session = api.get_session() session = api.get_session()
if CONF.command.filter_list:
filter_list = CONF.command.filter_list.split(',')
else:
filter_list = []
if CONF.start_date: if CONF.start_date:
start_date = datetime.datetime.strptime(CONF.start_date, '%Y-%m-%d') start_date = datetime.datetime.strptime(CONF.start_date, '%Y-%m-%d')
else: else:
@ -45,6 +51,8 @@ def generate_series():
perc_data = {} perc_data = {}
for key in run_status: for key in run_status:
if key not in filter_list:
continue
if run_status[key].get('pass'): if run_status[key].get('pass'):
pass_num = float(run_status[key]['pass']) pass_num = float(run_status[key]['pass'])
else: else: