diff --git a/metrics/__main__.py b/metrics/__main__.py index 78f64ea..9c15a8d 100644 --- a/metrics/__main__.py +++ b/metrics/__main__.py @@ -3,7 +3,7 @@ from argenta.app import StaticDividingLine from .handlers import router -app = App(initial_message="metrics", prompt=">>> ", dividing_line=StaticDividingLine('~', length=70)) +app = App(initial_message="metrics", prompt=">>> ", dividing_line=None) orchestrator = Orchestrator() diff --git a/metrics/benchmarks/core/models.py b/metrics/benchmarks/core/models.py index 386dea1..a495bf2 100644 --- a/metrics/benchmarks/core/models.py +++ b/metrics/benchmarks/core/models.py @@ -154,10 +154,10 @@ class Benchmarks: benchmark_results=benchmark_results ) - def run_benchmarks_grouped_by_type(self) -> list[BenchmarkGroupResult]: + def run_benchmarks_grouped_by_type(self, iterations: int = 100, is_gc_disabled: bool = False) -> list[BenchmarkGroupResult]: results: list[BenchmarkGroupResult] = [] for type_, benchmarks in self._benchmarks_grouped_by_type.items(): - results.append(self.run_benchmarks_by_type(type_)) + results.append(self.run_benchmarks_by_type(type_, iterations, is_gc_disabled)) return results def get_benchmarks_by_type(self, type_: str) -> list[Benchmark]: diff --git a/metrics/handlers.py b/metrics/handlers.py index e4f50b8..80ae9bf 100644 --- a/metrics/handlers.py +++ b/metrics/handlers.py @@ -1,5 +1,6 @@ from rich.console import Console +from argenta.command import Flag, PossibleValues from argenta.command.models import Command from argenta.response import Response from argenta.router import Router @@ -12,13 +13,19 @@ console = Console() router = Router(title="Metrics commands:") -@router.command(Command("all-print", description="Print all benchmarks results")) +@router.command( + Command( + "all-print", + description="Print all benchmarks results", + flags=Flag('without-gc', possible_values=PossibleValues.NEITHER) + ) +) def all_print_handler(_: Response) -> None: report_generator = ReportGenerator(get_system_info()) console.print(report_generator.generate_system_info_header()) console.print(report_generator.generate_system_info_table()) - return - type_grouped_benchmarks: list[BenchmarkGroupResult] = registered_benchmarks.run_benchmarks_grouped_by_type() + is_gc_disabled = _.input_flags.get_flag_by_name("without-gc") + type_grouped_benchmarks: list[BenchmarkGroupResult] = registered_benchmarks.run_benchmarks_grouped_by_type(is_gc_disabled=is_gc_disabled) for benchmark_group_result in type_grouped_benchmarks: console.print(report_generator.generate_benchmark_table_header(benchmark_group_result)) console.print(report_generator.generate_benchmark_report_table(benchmark_group_result)) diff --git a/metrics/services/report_generator.py b/metrics/services/report_generator.py index 4765221..5c383fb 100644 --- a/metrics/services/report_generator.py +++ b/metrics/services/report_generator.py @@ -36,6 +36,7 @@ class ReportGenerator: def generate_benchmark_table_header(benchmark_group_result: BenchmarkGroupResult) -> Panel: header_text = Text(f"TYPE: {benchmark_group_result.type_.upper()} ; " f"ITERATIONS: {benchmark_group_result.iterations} ; " + f"GC {"DISABLED" if benchmark_group_result.is_gc_disabled else "ENABLED"} ; " f"ALL TIME IN MS", style="bold magenta") return Panel(header_text, expand=False, border_style="magenta") @@ -55,8 +56,6 @@ class ReportGenerator: table.add_row("CPU Physical Cores", str(self.system_info.cpu_info.physical_cores)) table.add_row("CPU Logical Cores", str(self.system_info.cpu_info.logical_cores)) table.add_row("CPU Max Frequency", str(self.system_info.cpu_info.max_frequency) + ' GHz') - table.add_row("CPU Min Frequency", str(self.system_info.cpu_info.min_frequency) + ' GHz') - table.add_row("CPU Current Frequency", str(self.system_info.cpu_info.current_frequency) + ' GHz') table.add_row("Total RAM", str(self.system_info.memory_info.total_ram) + ' GB') table.add_row("Used RAM", str(self.system_info.memory_info.used_ram) + ' GB') table.add_row("Available RAM", str(self.system_info.memory_info.available_ram) + ' GB') diff --git a/metrics/services/system_info_reader.py b/metrics/services/system_info_reader.py index 2578158..4d369fe 100644 --- a/metrics/services/system_info_reader.py +++ b/metrics/services/system_info_reader.py @@ -30,8 +30,6 @@ class CPUInfo: physical_cores: int logical_cores: int max_frequency: float - min_frequency: float - current_frequency: float @dataclass(frozen=True, slots=True) class MemoryInfo: @@ -93,8 +91,6 @@ def get_cpu_info() -> CPUInfo: cpu_logical_cores = psutil.cpu_count(logical=True) cpu_freq = psutil.cpu_freq() or "N/A" - cpu_current_frequency = cpu_freq.current - cpu_min_frequency = cpu_freq.min cpu_max_frequency = cpu_freq.max return CPUInfo( @@ -102,8 +98,6 @@ def get_cpu_info() -> CPUInfo: architecture=cpu_architecture, physical_cores=cpu_physical_cores, logical_cores=cpu_logical_cores, - current_frequency=cpu_current_frequency, - min_frequency=cpu_min_frequency, max_frequency=cpu_max_frequency ) diff --git a/mock/min_app/main.py b/mock/min_app/main.py index a2b4326..87e534c 100644 --- a/mock/min_app/main.py +++ b/mock/min_app/main.py @@ -4,7 +4,7 @@ from argenta.app import DynamicDividingLine from .routers import router -app: App = App(prompt='>>> ', dividing_line=DynamicDividingLine('~')) +app: App = App(prompt='>>> ', dividing_line=None) orchestrator: Orchestrator = Orchestrator() def main() -> None: diff --git a/src/argenta/app/models.py b/src/argenta/app/models.py index 5f03f88..fd49d6a 100644 --- a/src/argenta/app/models.py +++ b/src/argenta/app/models.py @@ -42,7 +42,7 @@ class BaseApp: farewell_message: str, exit_command: Command, system_router_title: str, - dividing_line: StaticDividingLine | DynamicDividingLine, + dividing_line: StaticDividingLine | DynamicDividingLine | None, repeat_command_groups_printing: bool, override_system_messages: bool, autocompleter: AutoCompleter, @@ -198,7 +198,8 @@ class BaseApp: is_override=self._override_system_messages ) ) - + elif self._dividing_line is None: + print('\n' + text.strip("\n") + '\n') else: raise NotImplementedError @@ -408,7 +409,7 @@ class App(BaseApp): farewell_message: str = "\nSee you\n", exit_command: Command = DEFAULT_EXIT_COMMAND, system_router_title: str = "System points:", - dividing_line: AVAILABLE_DIVIDING_LINES = DEFAULT_DIVIDING_LINE, + dividing_line: AVAILABLE_DIVIDING_LINES | None = DEFAULT_DIVIDING_LINE, repeat_command_groups_printing: bool = False, override_system_messages: bool = False, autocompleter: AutoCompleter = DEFAULT_AUTOCOMPLETER, diff --git a/tests/unit_tests/test_app.py b/tests/unit_tests/test_app.py index 13b7924..df4b9cf 100644 --- a/tests/unit_tests/test_app.py +++ b/tests/unit_tests/test_app.py @@ -361,7 +361,7 @@ def test_set_exit_command_handler_stores_handler() -> None: def test_setup_default_view_formats_prompt() -> None: app = App(prompt='>>') - assert app._prompt == '[italic dim bold]>>' + assert app._prompt == '[italic dim bold]>>[/italic dim bold]' def test_setup_default_view_sets_default_unknown_command_handler() -> None: