Source code for oct.results.resultsoutput

import os
import time
from jinja2 import Environment, FileSystemLoader
from oct.results import graphs
from oct.results.reportresults import Results, ReportResults
from oct.results.reportwriter import Report


[docs]def output(results_dir, results_file, config, parent='../../'): """Write the results output for the given test :param str results_dir: the directory for the results :param str results_file: the file for the results :param int run_time: the total test time elapsed :param int rampup: the rampup setting for the test :param int ts_interval: the interval in second setting for the test :param dict turrets: the turrets configuration :param str parent: the parent directory """ start = time.time() results_dir = os.path.abspath(results_dir) results = Results(os.path.join(results_dir, results_file), config['run_time']) if len(results.resp_stats_list) == 0: print("No results, cannot create report") return False print('transactions: %i' % results.total_transactions) print('errors: %i' % results.total_errors) print('') print('test start: %s' % results.start_datetime) print('test finish: %s' % results.finish_datetime) print('') report_results = ReportResults(results, config['results_ts_interval']) report_results.set_all_transactions_results() data = { 'report': report_results, 'run_time': config['run_time'], 'ts_interval': config['results_ts_interval'], 'turrets_config': results.turrets, 'all_results': report_results.all_results, } graphs.resp_graph_raw(report_results.all_results['trans_timer_points'], 'All_Transactions_response_times.svg', results_dir) graphs.resp_graph(report_results.all_results['interval_results'].avg_resptime_points, report_results.all_results['interval_results'].percentile_80, report_results.all_results['interval_results'].percentile_90, 'All_Transactions_response_times_intervals.svg', results_dir) graphs.tp_graph(report_results.all_results['throughput_points'], 'All_Transactions_throughput.svg', results_dir) report_results.clear_all_transactions() report_results.set_custom_timers() for timer in report_results.custom_timers: graphs.resp_graph_raw(timer['trans_timer_points'], timer['name'] + '_response_times.svg', results_dir) graphs.tp_graph(timer['throughput_points'], timer['name'] + '_throughput.svg', results_dir) graphs.resp_graph(timer['interval_results'].avg_resptime_points, timer['interval_results'].percentile_80, timer['interval_results'].percentile_90, timer['name'] + '_response_times_intervals.svg', results_dir) # generate the jinja template j_env = Environment(loader=FileSystemLoader(os.path.join(results_dir, parent, 'templates'))) template = j_env.get_template('report.html') report = Report(results_dir, parent) report.write_report(template.render(data)) print("Report generated in {} seconds".format(time.time() - start)) return True