Add info block into report toolkit
This commit is contained in:
parent
f063c85052
commit
d5e8cfc269
|
@ -61,16 +61,24 @@ def generate_chart(chart_str, db, doc_folder, tag):
|
||||||
*
|
*
|
||||||
''' % dict(title=title)
|
''' % dict(title=title)
|
||||||
|
|
||||||
table += ''.join((' - %s\n' % axes[k]) for k in sorted(axes.keys()))
|
axes_keys = sorted(axes.keys())
|
||||||
|
|
||||||
|
table += ''.join((' - %s\n' % axes[k]) for k in axes_keys)
|
||||||
|
|
||||||
y_keys = set(axes.keys()) ^ set('x')
|
y_keys = set(axes.keys()) ^ set('x')
|
||||||
|
|
||||||
for chart_rec in chart_data:
|
for chart_rec in chart_data:
|
||||||
for k in y_keys:
|
for k in y_keys:
|
||||||
lines[k].append((chart_rec['x'], chart_rec[k]))
|
lines[k].append((chart_rec['x'], chart_rec[k]))
|
||||||
|
|
||||||
|
values = []
|
||||||
|
for v in axes_keys:
|
||||||
|
cv = chart_rec[v] or 0
|
||||||
|
patt = ' - %%%s' % ('d' if isinstance(cv, int) else '.1f')
|
||||||
|
values.append(patt % cv)
|
||||||
|
|
||||||
table += (' *\n' +
|
table += (' *\n' +
|
||||||
'\n'.join(' - %.1f' % (chart_rec[v] or 0)
|
'\n'.join(values) +
|
||||||
for v in sorted(axes.keys())) +
|
|
||||||
'\n')
|
'\n')
|
||||||
|
|
||||||
xy_chart = pygal.XY(style=style.RedBlueStyle,
|
xy_chart = pygal.XY(style=style.RedBlueStyle,
|
||||||
|
@ -94,6 +102,47 @@ def generate_chart(chart_str, db, doc_folder, tag):
|
||||||
return doc
|
return doc
|
||||||
|
|
||||||
|
|
||||||
|
def generate_info(definition_str, db, doc_folder, tag):
|
||||||
|
definition = yaml.safe_load(definition_str)
|
||||||
|
pipeline = definition.get('pipeline')
|
||||||
|
title = definition.get('title')
|
||||||
|
fields = definition.get('fields')
|
||||||
|
|
||||||
|
collection_name = definition.get('collection') or 'records'
|
||||||
|
collection = db.get_collection(collection_name)
|
||||||
|
|
||||||
|
LOG.debug('Title: %s', title)
|
||||||
|
|
||||||
|
pipeline.insert(0, {'$match': {'status': 'OK'}})
|
||||||
|
|
||||||
|
if tag:
|
||||||
|
pipeline.insert(0, {'$match': {'tag': tag}})
|
||||||
|
|
||||||
|
data = [r for r in collection.aggregate(pipeline)]
|
||||||
|
if not data:
|
||||||
|
LOG.warning('No data returned for info block: %s', title)
|
||||||
|
return '**No data**'
|
||||||
|
|
||||||
|
data = data[0]
|
||||||
|
|
||||||
|
table = '''
|
||||||
|
.. list-table::
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
*
|
||||||
|
- attribute
|
||||||
|
- value
|
||||||
|
'''
|
||||||
|
|
||||||
|
for field_name, field_title in sorted(fields.items(), key=lambda a: a[0]):
|
||||||
|
value = data[field_name]
|
||||||
|
patt = (''' *\n - %%s\n - %%%s\n''' %
|
||||||
|
('d' if isinstance(value, int) else '.1f'))
|
||||||
|
table += patt % (field_title, value)
|
||||||
|
|
||||||
|
return table
|
||||||
|
|
||||||
|
|
||||||
def _make_dir(name):
|
def _make_dir(name):
|
||||||
try:
|
try:
|
||||||
os.makedirs(name)
|
os.makedirs(name)
|
||||||
|
@ -128,6 +177,11 @@ def generate_report(scenario, base_dir, mongo_url, db_name, doc_folder,
|
||||||
db=db,
|
db=db,
|
||||||
doc_folder=doc_folder,
|
doc_folder=doc_folder,
|
||||||
tag=tag)
|
tag=tag)
|
||||||
|
jinja_env.filters['info'] = functools.partial(
|
||||||
|
generate_info,
|
||||||
|
db=db,
|
||||||
|
doc_folder=doc_folder,
|
||||||
|
tag=tag)
|
||||||
|
|
||||||
template = utils.read_file(report_template, base_dir=base_dir)
|
template = utils.read_file(report_template, base_dir=base_dir)
|
||||||
compiled_template = jinja_env.from_string(template)
|
compiled_template = jinja_env.from_string(template)
|
||||||
|
|
|
@ -5,8 +5,31 @@ This report is result of `message_queue_performance`_ execution
|
||||||
with `Oslo.messaging Simulator`_
|
with `Oslo.messaging Simulator`_
|
||||||
|
|
||||||
|
|
||||||
Test Case 1: RPC CAST Throughput Test
|
RPC CAST failover throughput test
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
**Summary**
|
||||||
|
|
||||||
|
{{'''
|
||||||
|
title: Execution summary
|
||||||
|
fields:
|
||||||
|
a1: Client sent, msg
|
||||||
|
b1: Server received, msg
|
||||||
|
b2: Loss, msg
|
||||||
|
c1: Avg. latency, ms
|
||||||
|
c2: Max latency, ms
|
||||||
|
collection: records
|
||||||
|
pipeline:
|
||||||
|
- $match: { task: omsimulator, mode: cast }
|
||||||
|
- $project:
|
||||||
|
a1: "$client.count"
|
||||||
|
b1: "$server.count"
|
||||||
|
b2: { $subtract: ["$client.count", "$server.count" ] }
|
||||||
|
c1: { $multiply: ["$server.latency", 1000] }
|
||||||
|
c2: { $multiply: ["$server.max_latency", 1000] }
|
||||||
|
''' | info
|
||||||
|
}}
|
||||||
|
|
||||||
|
|
||||||
**Messages sent by the client**
|
**Messages sent by the client**
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue