Fixed telemetry performance test logging bugs and improved logging to display only N longest telems instead of all

This commit is contained in:
VakarisZ 2020-04-24 16:41:00 +03:00
parent baa1598a1b
commit 41ae125980
2 changed files with 11 additions and 3 deletions

View File

@ -19,14 +19,14 @@ class PerformanceAnalyzer(Analyzer):
single_page_time_less_then_max = True single_page_time_less_then_max = True
total_time = timedelta() total_time = timedelta()
for endpoint, elapsed in self.endpoint_timings.items(): for endpoint, elapsed in self.endpoint_timings.items():
LOGGER.info(f"Endpoint {endpoint} took {str(elapsed)}")
total_time += elapsed total_time += elapsed
if elapsed > self.performance_test_config.max_allowed_single_page_time: if elapsed > self.performance_test_config.max_allowed_single_page_time:
single_page_time_less_then_max = False single_page_time_less_then_max = False
total_time_less_then_max = total_time < self.performance_test_config.max_allowed_total_time total_time_less_then_max = total_time < self.performance_test_config.max_allowed_total_time
LOGGER.info(f"total time is {str(total_time)}") PerformanceAnalyzer.log_slowest_endpoints(self.endpoint_timings)
LOGGER.info(f"Total time is {str(total_time)}")
performance_is_good_enough = total_time_less_then_max and single_page_time_less_then_max performance_is_good_enough = total_time_less_then_max and single_page_time_less_then_max
@ -38,3 +38,11 @@ class PerformanceAnalyzer(Analyzer):
breakpoint() breakpoint()
return performance_is_good_enough return performance_is_good_enough
@staticmethod
def log_slowest_endpoints(endpoint_timings, max_endpoints_to_display=100):
slow_endpoint_list = list(endpoint_timings.items())
slow_endpoint_list.sort(key=lambda x: x[1], reverse=True)
slow_endpoint_list = slow_endpoint_list[:max_endpoints_to_display]
for endpoint in slow_endpoint_list:
LOGGER.info(f"{endpoint[0]} took {str(endpoint[1])}")

View File

@ -49,5 +49,5 @@ class TelemetryPerformanceTest:
def get_verbose_telemetry_endpoint(telemetry): def get_verbose_telemetry_endpoint(telemetry):
telem_category = "" telem_category = ""
if "telem_category" in telemetry['content']: if "telem_category" in telemetry['content']:
telem_category = "_" + json.loads(telemetry['content'])['telem_category'] telem_category = "_" + json.loads(telemetry['content'])['telem_category'] + "_" + telemetry['_id']['$oid']
return telemetry['endpoint'] + telem_category return telemetry['endpoint'] + telem_category