From 5a3f598e60654ecb1a806e9c1167c93b41fe1827 Mon Sep 17 00:00:00 2001 From: David Yastremsky Date: Fri, 1 Mar 2024 13:22:43 -0800 Subject: [PATCH 1/5] Print exception when non-zero error code --- .../{genaipa_exceptions.py => genai_pa/exceptions.py} | 0 .../genai-pa/{ => genai_pa}/llm_inputs/__init__.py | 0 .../genai-pa/{ => genai_pa}/llm_inputs/llm_inputs.py | 2 +- src/c++/perf_analyzer/genai-pa/genai_pa/main.py | 11 +++++++---- src/c++/perf_analyzer/genai-pa/genai_pa/wrapper.py | 2 +- .../perf_analyzer/genai-pa/tests/test_llm_inputs.py | 4 ++-- 6 files changed, 11 insertions(+), 8 deletions(-) rename src/c++/perf_analyzer/genai-pa/{genaipa_exceptions.py => genai_pa/exceptions.py} (100%) rename src/c++/perf_analyzer/genai-pa/{ => genai_pa}/llm_inputs/__init__.py (100%) rename src/c++/perf_analyzer/genai-pa/{ => genai_pa}/llm_inputs/llm_inputs.py (99%) diff --git a/src/c++/perf_analyzer/genai-pa/genaipa_exceptions.py b/src/c++/perf_analyzer/genai-pa/genai_pa/exceptions.py similarity index 100% rename from src/c++/perf_analyzer/genai-pa/genaipa_exceptions.py rename to src/c++/perf_analyzer/genai-pa/genai_pa/exceptions.py diff --git a/src/c++/perf_analyzer/genai-pa/llm_inputs/__init__.py b/src/c++/perf_analyzer/genai-pa/genai_pa/llm_inputs/__init__.py similarity index 100% rename from src/c++/perf_analyzer/genai-pa/llm_inputs/__init__.py rename to src/c++/perf_analyzer/genai-pa/genai_pa/llm_inputs/__init__.py diff --git a/src/c++/perf_analyzer/genai-pa/llm_inputs/llm_inputs.py b/src/c++/perf_analyzer/genai-pa/genai_pa/llm_inputs/llm_inputs.py similarity index 99% rename from src/c++/perf_analyzer/genai-pa/llm_inputs/llm_inputs.py rename to src/c++/perf_analyzer/genai-pa/genai_pa/llm_inputs/llm_inputs.py index 924c0bdc4..816acb4a2 100644 --- a/src/c++/perf_analyzer/genai-pa/llm_inputs/llm_inputs.py +++ b/src/c++/perf_analyzer/genai-pa/genai_pa/llm_inputs/llm_inputs.py @@ -17,7 +17,7 @@ from typing import Dict, List, Optional, Tuple import requests -from genaipa_exceptions import GenAiPAException +from genai_pa.exceptions import GenAiPAException from requests import Response diff --git a/src/c++/perf_analyzer/genai-pa/genai_pa/main.py b/src/c++/perf_analyzer/genai-pa/genai_pa/main.py index 79748df50..cdfb0cc51 100755 --- a/src/c++/perf_analyzer/genai-pa/genai_pa/main.py +++ b/src/c++/perf_analyzer/genai-pa/genai_pa/main.py @@ -30,6 +30,7 @@ from genai_pa import parser from genai_pa.constants import LOGGER_NAME +from genai_pa.exceptions import GenAiPAException logging.basicConfig(level=logging.INFO, format="%(name)s - %(levelname)s - %(message)s") logger = logging.getLogger(LOGGER_NAME) @@ -39,16 +40,18 @@ # to assert correct errors and messages. # Optional argv used for testing - will default to sys.argv if None. def run(argv=None): - args = parser.parse_args(argv) - args.func(args) + try: + args = parser.parse_args(argv) + args.func(args) + except Exception as e: + raise GenAiPAException(e) def main(): - # Interactive use will catch exceptions and log formatted errors rather than tracebacks. try: run() except Exception as e: - logger.error(f"{e}") + logger.error(f"Unhandled exception: {e}") return 1 return 0 diff --git a/src/c++/perf_analyzer/genai-pa/genai_pa/wrapper.py b/src/c++/perf_analyzer/genai-pa/genai_pa/wrapper.py index 49ca35aef..25e776425 100644 --- a/src/c++/perf_analyzer/genai-pa/genai_pa/wrapper.py +++ b/src/c++/perf_analyzer/genai-pa/genai_pa/wrapper.py @@ -57,4 +57,4 @@ def run(model, args=None): arg = utils.convert_option_name(arg) cmd += f"--{arg} {value} " logger.info(f"Running Perf Analyzer : '{cmd}'") - subprocess.run(cmd, shell=True) + subprocess.run(cmd, shell=True, check=True) diff --git a/src/c++/perf_analyzer/genai-pa/tests/test_llm_inputs.py b/src/c++/perf_analyzer/genai-pa/tests/test_llm_inputs.py index 7abeb3f53..bc8855e7f 100644 --- a/src/c++/perf_analyzer/genai-pa/tests/test_llm_inputs.py +++ b/src/c++/perf_analyzer/genai-pa/tests/test_llm_inputs.py @@ -16,8 +16,8 @@ import os import pytest -from genaipa_exceptions import GenAiPAException -from llm_inputs.llm_inputs import LlmInputs +from genai_pa.exceptions import GenAiPAException +from genai_pa.llm_inputs.llm_inputs import LlmInputs class TestLlmInputs: From e7e38083327f78a19b369bf2dee0d2cd4ac07cd8 Mon Sep 17 00:00:00 2001 From: David Yastremsky Date: Fri, 1 Mar 2024 13:31:45 -0800 Subject: [PATCH 2/5] Add test for GenAiPAException for nonzero exit --- src/c++/perf_analyzer/genai-pa/tests/test_cli.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/c++/perf_analyzer/genai-pa/tests/test_cli.py b/src/c++/perf_analyzer/genai-pa/tests/test_cli.py index bc103acd4..71c0a067a 100644 --- a/src/c++/perf_analyzer/genai-pa/tests/test_cli.py +++ b/src/c++/perf_analyzer/genai-pa/tests/test_cli.py @@ -28,6 +28,8 @@ import pytest from genai_pa import parser +from genai_pa.exceptions import GenAiPAException +from genai_pa.main import run class TestCLIArguments: @@ -91,3 +93,7 @@ def test_arguments_model_not_provided(self): # Check that the exit was unsuccessful assert exc_info.value.code != 0 + + def test_execption_on_nonzero_exit(self): + with pytest.raises(GenAiPAException) as e: + _ = run(["-m", "nonexistent_model"]) From 3c0377273f7e00461c77e0133e9d45b874c93404 Mon Sep 17 00:00:00 2001 From: David Yastremsky Date: Fri, 1 Mar 2024 13:38:26 -0800 Subject: [PATCH 3/5] Revert format/comment changes. --- src/c++/perf_analyzer/genai-pa/genai_pa/main.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/c++/perf_analyzer/genai-pa/genai_pa/main.py b/src/c++/perf_analyzer/genai-pa/genai_pa/main.py index cdfb0cc51..b0f5c1e5a 100755 --- a/src/c++/perf_analyzer/genai-pa/genai_pa/main.py +++ b/src/c++/perf_analyzer/genai-pa/genai_pa/main.py @@ -48,10 +48,11 @@ def run(argv=None): def main(): + # Interactive use will catch exceptions and log formatted errors rather than tracebacks. try: run() except Exception as e: - logger.error(f"Unhandled exception: {e}") + logger.error(f"{e}") return 1 return 0 From d51e1b8ae045482ae675e5d6b808a135534dd023 Mon Sep 17 00:00:00 2001 From: dyastremsky <58150256+dyastremsky@users.noreply.github.com> Date: Fri, 1 Mar 2024 14:29:10 -0800 Subject: [PATCH 4/5] Fix typo Co-authored-by: Ryan McCormick --- src/c++/perf_analyzer/genai-pa/tests/test_cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/c++/perf_analyzer/genai-pa/tests/test_cli.py b/src/c++/perf_analyzer/genai-pa/tests/test_cli.py index 71c0a067a..4f2cb66ed 100644 --- a/src/c++/perf_analyzer/genai-pa/tests/test_cli.py +++ b/src/c++/perf_analyzer/genai-pa/tests/test_cli.py @@ -94,6 +94,6 @@ def test_arguments_model_not_provided(self): # Check that the exit was unsuccessful assert exc_info.value.code != 0 - def test_execption_on_nonzero_exit(self): + def test_exception_on_nonzero_exit(self): with pytest.raises(GenAiPAException) as e: _ = run(["-m", "nonexistent_model"]) From 33cc984e357aa806209f110c1ae01f65790282cb Mon Sep 17 00:00:00 2001 From: dyastremsky <58150256+dyastremsky@users.noreply.github.com> Date: Fri, 1 Mar 2024 14:29:37 -0800 Subject: [PATCH 5/5] Remove unnecessary return value Co-authored-by: Ryan McCormick --- src/c++/perf_analyzer/genai-pa/tests/test_cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/c++/perf_analyzer/genai-pa/tests/test_cli.py b/src/c++/perf_analyzer/genai-pa/tests/test_cli.py index 4f2cb66ed..4aaff401b 100644 --- a/src/c++/perf_analyzer/genai-pa/tests/test_cli.py +++ b/src/c++/perf_analyzer/genai-pa/tests/test_cli.py @@ -96,4 +96,4 @@ def test_arguments_model_not_provided(self): def test_exception_on_nonzero_exit(self): with pytest.raises(GenAiPAException) as e: - _ = run(["-m", "nonexistent_model"]) + run(["-m", "nonexistent_model"])