From 52db71457ad8f9d83ef9b010cfa3b43a0d3675a5 Mon Sep 17 00:00:00 2001 From: Kajetan Puchalski Date: Thu, 7 Sep 2023 16:30:24 +0100 Subject: [PATCH] wp.device & wp.processor: Add proper config error handling --- wp/device.py | 15 ++++++++++----- wp/exception.py | 3 +++ wp/processor.py | 8 ++++++-- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/wp/device.py b/wp/device.py index 7f91891..9c67448 100644 --- a/wp/device.py +++ b/wp/device.py @@ -28,18 +28,23 @@ from devlib.exception import TargetStableCalledProcessError from wp.constants import APP_NAME +from wp.exception import WPConfigError class WorkloadDevice: def __init__(self): self.config = confuse.Configuration(APP_NAME, __name__) """Handle for the `Confuse` configuration object.""" - self.device = Target.from_conf( - TargetConf.from_yaml_map( - Path(self.config['target']['target_conf'].get()).expanduser() - ) - ) + self.device = None """Handle for the Target device""" + try: + self.device = Target.from_conf( + TargetConf.from_yaml_map( + Path(self.config['target']['target_conf'].get()).expanduser() + ) + ) + except FileNotFoundError: + raise WPConfigError('target_conf was not properly set in the config') self.device.execute("setenforce 0", as_root=True) diff --git a/wp/exception.py b/wp/exception.py index 06b0a16..48bbaa3 100644 --- a/wp/exception.py +++ b/wp/exception.py @@ -8,3 +8,6 @@ class WorkloadProcessingError(Exception): class WPMetricFailedError(Exception): pass + +class WPConfigError(Exception): + pass diff --git a/wp/processor.py b/wp/processor.py index e937c29..59ec0c3 100644 --- a/wp/processor.py +++ b/wp/processor.py @@ -15,7 +15,7 @@ from wp.constants import APP_NAME, SUPPORTED_WORKLOADS from wp.helpers import wa_output_to_mock_traces, wa_output_to_traces, cpu_cluster from wp.helpers import df_sort_by_clusters, df_add_wa_output_tags, df_iterations_mean -from wp.exception import WPMetricFailedError, WorkloadProcessorError +from wp.exception import WPMetricFailedError, WorkloadProcessorError, WPConfigError class WorkloadProcessor: @@ -45,7 +45,11 @@ def __init__(self, output_path, config=None): self.plat_info = None plat_info_path = os.path.expanduser(self.config['target']['plat_info'].get(str)) if plat_info_path is not None: - self.plat_info = PlatformInfo.from_yaml_map(plat_info_path) + try: + self.plat_info = PlatformInfo.from_yaml_map(plat_info_path) + except FileNotFoundError: + raise WPConfigError('plat_info was not properly set in the config') + trace_parquet_found = shutil.which('trace-parquet') is not None no_parser = self.config['no_parser'].get(False)