From 665d0ef7155a4549a21d0ea9e4e9cc3566626c55 Mon Sep 17 00:00:00 2001 From: Sai Sindhur Malleni Date: Wed, 10 Jan 2018 14:58:13 -0500 Subject: [PATCH] Some fixes to make log info consistent with change After code was added to mix-match workload, the stats of executed, passed and failed tests kept by each workload class have become inconsistent. It makes sense to only maintain a count at the total number of tests executed/passed/failed vs per workload. Change-Id: I4f84f4580ac29206e7ce660222a2a396e419cac8 --- browbeat.py | 6 +++--- browbeat/perfkit.py | 20 -------------------- browbeat/rally.py | 20 -------------------- browbeat/shaker.py | 32 -------------------------------- browbeat/workloadbase.py | 20 ++------------------ 5 files changed, 5 insertions(+), 93 deletions(-) diff --git a/browbeat.py b/browbeat.py index 880921e4a..bf3c5f821 100755 --- a/browbeat.py +++ b/browbeat.py @@ -130,7 +130,7 @@ def main(): _logger.info("{} workload {} is enabled".format(workload["type"], workload["name"])) tools.run_workload(workload, result_dir_ts, 0) - browbeat.workloadbase.WorkloadBase.print_summary() + browbeat.workloadbase.WorkloadBase.display_summary() elif _config["browbeat"]["rerun_type"] == "complete": # Complete rerun_type, reruns after all workloads have been run. @@ -148,9 +148,9 @@ def main(): _logger.info("{} workload {} is enabled".format(workload["type"], workload["name"])) tools.run_workload(workload, result_dir_ts, run_iteration) - browbeat.workloadbase.WorkloadBase.print_summary() + browbeat.workloadbase.WorkloadBase.display_summary() - browbeat.workloadbase.WorkloadBase.print_report(results_path, result_dir_ts) + browbeat.workloadbase.WorkloadBase.dump_report(results_path, result_dir_ts) _logger.info("Saved browbeat result summary to {}" .format(os.path.join(results_path, "{}.report".format(result_dir_ts)))) diff --git a/browbeat/perfkit.py b/browbeat/perfkit.py index 458d7634e..fae375545 100644 --- a/browbeat/perfkit.py +++ b/browbeat/perfkit.py @@ -34,13 +34,9 @@ class PerfKit(workloadbase.WorkloadBase): self.overcloudrc = get_overcloudrc() self.config = config self.result_dir_ts = result_dir_ts - self.error_count = 0 self.tools = tools.Tools(self.config) self.grafana = grafana.Grafana(self.config) self.elastic = elastic.Elastic(self.config, self.__class__.__name__.lower()) - self.test_count = 0 - self.scenario_count = 0 - self.pass_count = 0 def string_to_dict(self, string): """Function for converting "|" quoted hash data into python dictionary.""" @@ -53,18 +49,6 @@ class PerfKit(workloadbase.WorkloadBase): dict_data[split_item[0]] = ast.literal_eval("'" + split_item[1] + "'") return dict_data - def update_tests(self): - self.test_count += 1 - - def update_pass_tests(self): - self.pass_count += 1 - - def update_fail_tests(self): - self.error_count += 1 - - def update_scenarios(self): - self.scenario_count += 1 - def get_error_details(self, result_dir): error_details = [] with open('{}/pkb.stderr.log'.format(result_dir)) as perfkit_stderr: @@ -182,7 +166,6 @@ class PerfKit(workloadbase.WorkloadBase): self.logger.debug("Time Stamp (Prefix): {}".format(time_stamp)) self.logger.info("Benchmark: {}".format(workload['name'])) - self.update_scenarios() self.update_total_scenarios() # Add default parameters as necessary for default_item, value in self.config['perfkit']['default'].iteritems(): @@ -195,7 +178,6 @@ class PerfKit(workloadbase.WorkloadBase): rerun_range = range(run_iteration, run_iteration + 1) for run in rerun_range: - self.update_tests() self.update_total_tests() result_dir = self.tools.create_results_dir( results_path, self.result_dir_ts, workload['name'], str(run)) @@ -209,13 +191,11 @@ class PerfKit(workloadbase.WorkloadBase): new_test_name = new_test_name[2:] new_test_name = '-'.join(new_test_name) if success: - self.update_pass_tests() self.update_total_pass_tests() self.get_time_dict(to_ts, from_ts, workload['benchmarks'], new_test_name, self.__class__.__name__, "pass", index_success) else: - self.update_fail_tests() self.update_total_fail_tests() self.get_time_dict(to_ts, from_ts, workload['benchmarks'], new_test_name, self.__class__.__name__, "fail", diff --git a/browbeat/rally.py b/browbeat/rally.py index 6d97faa54..45661d3a4 100644 --- a/browbeat/rally.py +++ b/browbeat/rally.py @@ -37,10 +37,6 @@ class Rally(workloadbase.WorkloadBase): self.tools = tools.Tools(self.config) self.grafana = grafana.Grafana(self.config) self.elastic = elastic.Elastic(self.config, self.__class__.__name__.lower()) - self.error_count = 0 - self.pass_count = 0 - self.test_count = 0 - self.scenario_count = 0 def run_scenario(self, task_file, scenario_args, result_dir, test_name, benchmark): self.logger.debug("--------------------------------") @@ -76,18 +72,6 @@ class Rally(workloadbase.WorkloadBase): self.grafana.print_dashboard_url(test_name) return (from_time, to_time) - def update_tests(self): - self.test_count += 1 - - def update_pass_tests(self): - self.pass_count += 1 - - def update_fail_tests(self): - self.error_count += 1 - - def update_scenarios(self): - self.scenario_count += 1 - def get_task_id(self, test_name): cmd = "grep \"rally task report [a-z0-9\-]* --out\" {}.log | awk '{{print $4}}'".format( test_name) @@ -230,7 +214,6 @@ class Rally(workloadbase.WorkloadBase): self.logger.info("Running Scenario: {}".format(scenario["name"])) self.logger.debug("Scenario File: {}".format(scenario["file"])) - self.update_scenarios() self.update_total_scenarios() scenario_name = scenario["name"] scenario_file = scenario["file"] @@ -268,7 +251,6 @@ class Rally(workloadbase.WorkloadBase): rerun_range = range(run_iteration, run_iteration + 1) for run in rerun_range: - self.update_tests() self.update_total_tests() concurrency_count_dict[concurrency] += 1 test_name = "{}-browbeat-{}-{}-{}-iteration-{}".format( @@ -294,7 +276,6 @@ class Rally(workloadbase.WorkloadBase): self.gen_scenario_html([task_id], test_name) self.gen_scenario_json_file(task_id, test_name) results.append(task_id) - self.update_pass_tests() self.update_total_pass_tests() if self.config["elasticsearch"]["enabled"]: # Start indexing @@ -310,7 +291,6 @@ class Rally(workloadbase.WorkloadBase): else: self.logger.error("Cannot find task_id") - self.update_fail_tests() self.update_total_fail_tests() self.get_time_dict(to_time, from_time, workload["name"], new_test_name, self.__class__.__name__, "fail") diff --git a/browbeat/shaker.py b/browbeat/shaker.py index 7ecb10a4d..11d117f5c 100644 --- a/browbeat/shaker.py +++ b/browbeat/shaker.py @@ -38,10 +38,6 @@ class Shaker(workloadbase.WorkloadBase): self.tools = tools.Tools(self.config) self.grafana = grafana.Grafana(self.config) self.elastic = elastic.Elastic(self.config, self.__class__.__name__.lower()) - self.error_count = 0 - self.pass_count = 0 - self.test_count = 0 - self.scenario_count = 0 def shaker_checks(self): cmd = "source {}; source {}; glance image-list | grep -w shaker-image".format( @@ -72,32 +68,8 @@ class Shaker(workloadbase.WorkloadBase): accommodation_list.append(temp_dict) return accommodation_list - def final_stats(self, total): - self.logger.info( - "Total Shaker scenarios enabled by user: {}".format(total)) - self.logger.info( - "Total number of Shaker tests executed: {}".format( - self.test_count)) - self.logger.info( - "Total number of Shaker tests passed: {}".format(self.pass_count)) - self.logger.info( - "Total number of Shaker tests failed: {}".format(self.error_count)) - - def update_tests(self): - self.test_count += 1 - - def update_pass_tests(self): - self.pass_count += 1 - - def update_fail_tests(self): - self.error_count += 1 - - def update_scenarios(self): - self.scenario_count += 1 - # Method to process JSON outputted by Shaker, model data in a format that can be consumed # by ElasticSearch and ship the data to ES - def send_to_elastic(self, outputfile, browbeat_scenario, shaker_uuid, es_ts, es_list, run, test_name, result_dir): fname = outputfile @@ -325,7 +297,6 @@ class Shaker(workloadbase.WorkloadBase): self.logger.error("Failed Test: {}".format(scenario['name'])) self.logger.error("saved log to: {}.log".format(os.path.join(result_dir, test_name))) - self.update_fail_tests() self.update_total_fail_tests() self.get_time_dict(to_time, from_time, scenario['name'], new_test_name, workload, "fail", index_status) @@ -337,7 +308,6 @@ class Shaker(workloadbase.WorkloadBase): format(os.path.join(result_dir, test_name))) self.logger.info("saved log to: {}.log".format(os.path.join(result_dir, test_name))) - self.update_pass_tests() self.update_total_pass_tests() self.get_time_dict(to_time, from_time, scenario['name'], new_test_name, workload, "pass", index_status) @@ -381,7 +351,6 @@ class Shaker(workloadbase.WorkloadBase): from_time = time.time() self.tools.run_cmd(cmd) to_time = time.time() - self.update_tests() self.update_total_tests() outputfile = os.path.join(result_dir, test_name + "." + "json") if 'sleep_after' in self.config['shaker']: @@ -406,7 +375,6 @@ class Shaker(workloadbase.WorkloadBase): venv = get_workload_venv('shaker', False) self.shaker_checks() - self.update_scenarios() self.update_total_scenarios() shaker_uuid = uuid.uuid4() es_ts = datetime.datetime.utcnow() diff --git a/browbeat/workloadbase.py b/browbeat/workloadbase.py index c5e9d22ea..292f1b920 100644 --- a/browbeat/workloadbase.py +++ b/browbeat/workloadbase.py @@ -35,22 +35,6 @@ class WorkloadBase(object): def run_workload(self, workload, run_iteration): pass - @abc.abstractmethod - def update_fail_tests(self): - pass - - @abc.abstractmethod - def update_pass_tests(self): - pass - - @abc.abstractmethod - def update_scenarios(self): - pass - - @abc.abstractmethod - def update_tests(self): - pass - def update_total_scenarios(self): WorkloadBase.total_scenarios += 1 @@ -94,7 +78,7 @@ class WorkloadBase(object): 'Elasticsearch Indexing': index_status}) @staticmethod - def print_report(result_dir, time_stamp): + def dump_report(result_dir, time_stamp): with open(os.path.join(result_dir, time_stamp + '.' + 'report'), 'w') as yaml_file: yaml_file.write("Browbeat Report Card\n") if not WorkloadBase.browbeat: @@ -104,7 +88,7 @@ class WorkloadBase(object): yaml.dump(WorkloadBase.browbeat, default_flow_style=False)) @staticmethod - def print_summary(): + def display_summary(): WorkloadBase.logger.info("Total scenarios executed:{}".format( WorkloadBase.total_scenarios)) WorkloadBase.logger.info("Total tests executed:{}".format(WorkloadBase.total_tests))