Source code for oct.results.output

from __future__ import print_function

import os
import time
from jinja2 import Environment, FileSystemLoader

from oct.results import graphs
from oct.results.report import ReportResults
from oct.results.writer import ReportWriter


[docs]def output(results_dir, config, parent='../../'): """Write the results output for the given test :param str results_dir: the directory for the results :param dict config: the configuration of the test :param str parents: the parent directory """ start = time.time() print("Compiling results...") results_dir = os.path.abspath(results_dir) results = ReportResults(config['run_time'], config['results_ts_interval']) results.compile_results() print("Results compiled in {} seconds\n".format(time.time() - start)) if results.total_transactions == 0: print("No results, cannot create report") return False print('transactions: %i' % results.total_transactions) print('timers: %i' % results.total_timers) print('errors: %i' % results.total_errors) print('test start: %s' % results.start_datetime) print('test finish: %s\n' % results.finish_datetime) data = { 'report': results, 'run_time': config['run_time'], 'ts_interval': config['results_ts_interval'], 'turrets_config': results.turrets, 'all_results': {"all": results.main_results, "timers": results.timers_results} } print("Generating graphs...") partial = time.time() graphs.resp_graph_raw(results.main_results['raw'], 'All_Transactions_response_times.svg', results_dir) graphs.resp_graph(results.main_results['compiled'], 'All_Transactions_response_times_intervals.svg', results_dir) graphs.tp_graph(results.main_results['compiled'], 'All_Transactions_throughput.svg', results_dir) for key, value in results.timers_results.items(): graphs.resp_graph_raw(value['raw'], key + '_response_times.svg', results_dir) graphs.resp_graph(value['compiled'], key + '_response_times_intervals.svg', results_dir) graphs.tp_graph(value['compiled'], key + '_throughput.svg', results_dir) print("All graphs generated in {} seconds\n".format(time.time() - partial)) print("Generating html report...") partial = time.time() j_env = Environment(loader=FileSystemLoader(os.path.join(results_dir, parent, 'templates'))) template = j_env.get_template('report.html') report_writer = ReportWriter(results_dir, parent) report_writer.write_report(template.render(data)) print("HTML report generated in {} seconds\n".format(time.time() - partial)) print("Full report generated in {} seconds".format(time.time() - start)) return True