def rerun_results(project_name, cmd_opts, results_dir): output_dir = '%s/%s/results/%s/' % (cmd_opts.projects_dir, project_name, results_dir) saved_config = '%s/config.cfg' % output_dir (run_time, rampup, results_ts_interval, console_logging, progress_bar, results_database, post_run_script, xml_report, user_group_configs) = configure(project_name, cmd_opts, config_file=saved_config) print('\n\nanalyzing results...\n') results.output_results(output_dir, 'results.csv', run_time, rampup, results_ts_interval, user_group_configs, xml_report) print('created: %sresults.html\n' % output_dir) if xml_report: print('created: %sresults.jtl' % output_dir) print('created: last_results.jtl\n')
def rerun_results(project_name, cmd_opts, results_dir): """ In case csv file is generated but graphics aren't :param project_name: the name of the project :param cmd_opts: the parsed commands :param results_dir: the result dir :return: """ output_dir = '%s/%s/results/%s/' % (cmd_opts.projects_dir, project_name, results_dir) saved_config = '%s/config.cfg' % output_dir config = Configuration(project_name, cmd_opts, config_file=saved_config) print('\n\nanalyzing results...\n') output_results(output_dir, 'results.csv', config.run_time, config.rampup, config.results_ts_interval, config.user_group_configs, config.xml_report) print('created: %sresults.html\n' % output_dir) if config.xml_report: print('created: %sresults.jtl' % output_dir) print('created: last_results.jtl\n')
def run_test(project_name, cmd_opts): """ Main run function, will run all the tests. :param project_name: the name of the project :param cmd_opts: all parsed commands :return: None """ config = Configuration(project_name, cmd_opts) run_localtime = time.localtime() milisecond = datetime.now().microsecond output_dir = '%s/%s/results/results_%s' % ( cmd_opts.projects_dir, project_name, time.strftime('%Y.%m.%d_%H.%M.%S_' + str(milisecond) + '/', run_localtime)) try: os.makedirs(output_dir, 0o755) except OSError: sys.stderr.write('ERROR: Can not create output directory\n') sys.exit(1) main_loop(project_name, cmd_opts, config, output_dir) # all celery tasks are done at this point print('\n\nanalyzing results...\n') output_results(output_dir, 'results.csv', config.run_time, config.rampup, config.results_ts_interval, config.user_group_configs, config.xml_report) print('created: %sresults.html\n' % output_dir) # copy config file to results directory project_config = os.sep.join( [cmd_opts.projects_dir, project_name, 'config.cfg']) saved_config = os.sep.join([output_dir, 'config.cfg']) shutil.copy(project_config, saved_config) print('done.\n') return
def run_test(project_name, cmd_opts): """ Main run function, will run all the tests. :param project_name: the name of the project :param cmd_opts: all parsed commands :return: None """ config = Configuration(project_name, cmd_opts) run_localtime = time.localtime() milisecond = datetime.now().microsecond output_dir = '%s/%s/results/results_%s' % (cmd_opts.projects_dir, project_name, time.strftime('%Y.%m.%d_%H.%M.%S_' + str(milisecond) + '/', run_localtime)) try: os.makedirs(output_dir, 0o755) except OSError: sys.stderr.write('ERROR: Can not create output directory\n') sys.exit(1) main_loop(project_name, cmd_opts, config, output_dir) # all celery tasks are done at this point print('\n\nanalyzing results...\n') output_results(output_dir, 'results.csv', config.run_time, config.rampup, config.results_ts_interval, config.user_group_configs, config.xml_report) print('created: %sresults.html\n' % output_dir) # copy config file to results directory project_config = os.sep.join([cmd_opts.projects_dir, project_name, 'config.cfg']) saved_config = os.sep.join([output_dir, 'config.cfg']) shutil.copy(project_config, saved_config) print('done.\n') return
def run_test(project_name, cmd_opts, remote_starter=None): if remote_starter is not None: remote_starter.test_running = True remote_starter.output_dir = None (run_time, rampup, results_ts_interval, console_logging, progress_bar, results_database, post_run_script, xml_report, user_group_configs) = configure(project_name, cmd_opts) run_localtime = time.localtime() milisec = datetime.now().microsecond output_dir = '%s/%s/results/results_%s' % ( cmd_opts.projects_dir, project_name, time.strftime('%Y.%m.%d_%H.%M.%S_' + str(milisec) + '/', run_localtime)) # this queue is shared between all processes/threads queue = multiprocessing.Queue() rw = resultswriter.ResultsWriter(queue, output_dir) rw.daemon = True rw.start() script_prefix = os.path.join(cmd_opts.projects_dir, project_name, "test_scripts") script_prefix = os.path.normpath(script_prefix) user_groups = [] for i, ug_config in enumerate(user_group_configs): script_file = os.path.join(script_prefix, ug_config.script_file) ug = core.UserGroup(queue, i, ug_config.name, ug_config.num_threads, script_file, run_time, rampup) user_groups.append(ug) for user_group in user_groups: user_group.start() start_time = time.time() if console_logging: for user_group in user_groups: user_group.join() else: print('\n user_groups: %i' % len(user_groups)) print(' threads: %i\n' % (ug_config.num_threads * len(user_groups))) if progress_bar: p = progressbar.ProgressBar(run_time) elapsed = 0 while elapsed < (run_time + 1): p.update_time(elapsed) if sys.platform.startswith('win'): print( '{0} transactions: {1} timers: {2} errors: {3}\r'. format(p, rw.trans_count, rw.timer_count, rw.error_count), end=' ') else: print('%s transactions: %i timers: %i errors: %i' % (p, rw.trans_count, rw.timer_count, rw.error_count)) sys.stdout.write(chr(27) + '[A') time.sleep(1) elapsed = time.time() - start_time print(p) while [ user_group for user_group in user_groups if user_group.is_alive() ]: if progress_bar: if sys.platform.startswith('win'): print('waiting for all requests to finish...\r', end=' ') else: print('waiting for all requests to finish...\r') sys.stdout.write(chr(27) + '[A') time.sleep(.5) if not sys.platform.startswith('win'): print() # all agents are done running at this point time.sleep(.2) # make sure the writer queue is flushed print('\n\nanalyzing results...\n') results.output_results(output_dir, 'results.json', run_time, rampup, results_ts_interval, user_group_configs, xml_report) print('created: %sresults.html\n' % output_dir) if xml_report: print('created: %sresults.jtl' % output_dir) print('created: last_results.jtl\n') # copy config file to results directory project_config = os.sep.join( [cmd_opts.projects_dir, project_name, 'config.cfg']) saved_config = os.sep.join([output_dir, 'config.cfg']) shutil.copy(project_config, saved_config) if results_database is not None: print('loading results into database: %s\n' % results_database) import oct.multimechanize.resultsloader oct.multimechanize.resultsloader.load_results_database( project_name, run_localtime, output_dir, results_database, run_time, rampup, results_ts_interval, user_group_configs) if post_run_script is not None: print('running post_run_script: %s\n' % post_run_script) subprocess.call(post_run_script) print('done.\n') if remote_starter is not None: remote_starter.test_running = False remote_starter.output_dir = output_dir return