From 6db53004f587fdb1a7312f24a7f0c8e34be01a67 Mon Sep 17 00:00:00 2001 From: Tyson Smith Date: Tue, 12 Sep 2023 10:04:46 -0700 Subject: [PATCH] Update status reports - include time limit information in console output - always include instance count --- grizzly/common/status_reporter.py | 21 +++++++++++++-------- grizzly/common/test_status_reporter.py | 4 +++- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/grizzly/common/status_reporter.py b/grizzly/common/status_reporter.py index 79217b44..0fe20264 100644 --- a/grizzly/common/status_reporter.py +++ b/grizzly/common/status_reporter.py @@ -222,6 +222,7 @@ def summary( """Merge and generate a summary from status reports. Args: + rate (bool): Include iteration rate. runtime (bool): Include total runtime in output. sysinfo (bool): Include system info (CPU, disk, RAM... etc) in output. timestamp (bool): Include time stamp in output. @@ -236,7 +237,6 @@ def summary( # calculate totals iterations = tuple(x.iteration for x in self.reports) log_sizes = tuple(x.log_size for x in self.reports) - rates = tuple(x.rate for x in self.reports) results = tuple(x.results.total for x in self.reports) count = len(self.reports) total_ignored = sum(x.ignored for x in self.reports) @@ -250,10 +250,13 @@ def summary( # Rate if rate: + rates = tuple(x.rate for x in self.reports) disp = [f"{count} @ {sum(rates):0.2f}"] if count > 1: disp.append(f" ({max(rates):0.2f}, {min(rates):0.2f})") entries.append(("Rate", "".join(disp))) + else: + entries.append(("Instances", str(count))) # Results if total_iters: @@ -893,7 +896,7 @@ def main(args=None): "--time-limit", type=int, help="Maximum age of reports in seconds. Use zero for no limit." - f" (default: {', '.join(f'{k}: {v}s' for k, v in report_types.items())})", + f" (default: {', '.join(f'{k}: {v}' for k, v in report_types.items())})", ) parser.add_argument( "--tracebacks", @@ -928,14 +931,16 @@ def main(args=None): return 0 if not reporter.reports: - LOG.info("Grizzly Status - No status reports to display") + LOG.info( + "Grizzly Status - No status reports to display (time-limit: %s)", + _format_seconds(time_limit), + ) return 0 - LOG.info( - "Grizzly Status - %s - Instance report frequency: %ds\n", - strftime("%Y/%m/%d %X"), - REPORT_RATE, - ) + LOG.info("Grizzly Status - %s", strftime("%Y/%m/%d %X")) + LOG.info("Instance report frequency: %s", _format_seconds(REPORT_RATE)) + LOG.info("Time limit filter: %s", _format_seconds(time_limit)) + LOG.info("") LOG.info("[Reports]") LOG.info(reporter.specific()) if reporter.has_results: diff --git a/grizzly/common/test_status_reporter.py b/grizzly/common/test_status_reporter.py index c3b446b8..e8ada0ad 100644 --- a/grizzly/common/test_status_reporter.py +++ b/grizzly/common/test_status_reporter.py @@ -292,6 +292,7 @@ def test_status_reporter_04(mocker, tmp_path): assert len(rptr.reports) == 1 output = rptr.summary(runtime=False) assert "Iteration" in output + assert "Instances" not in output assert "Rate" in output assert "Results" in output assert "Blockers" not in output @@ -313,6 +314,7 @@ def test_status_reporter_04(mocker, tmp_path): assert len(rptr.reports) == 2 output = rptr.summary(rate=False, sysinfo=True, timestamp=True) assert "Iteration" in output + assert "Instances" in output assert "Rate" not in output assert "Results" in output assert "Ignored" in output @@ -320,7 +322,7 @@ def test_status_reporter_04(mocker, tmp_path): assert "Runtime" in output assert "Timestamp" in output lines = output.split("\n") - assert len(lines) == 9 + assert len(lines) == 10 # verify alignment position = len(lines[0].split(":")[0]) for line in lines: