From 982d677c999899acd08ecb7376f828f4d402ca8e Mon Sep 17 00:00:00 2001 From: rafabailon Date: Fri, 14 Jun 2024 13:05:08 +0200 Subject: [PATCH] feat: add method to unify process values --- .../wazuh_testing/scripts/data_visualizations.py | 4 +++- .../tools/performance/visualization.py | 16 +++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/scripts/data_visualizations.py b/deps/wazuh_testing/wazuh_testing/scripts/data_visualizations.py index f7c665dc4f..d43e27641d 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/data_visualizations.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/data_visualizations.py @@ -20,6 +20,8 @@ def get_script_arguments(): help=f'Base name for the images. Default {None}.') parser.add_argument('-c', '--columns', dest='columns', default=None, help=f'Path to Json with Columns to Plot. Default {None}.') + parser.add_argument('-u', '--unify', dest='unify', default=False, + help=f'Unify process values. Default {False}.') return parser.parse_args() @@ -32,7 +34,7 @@ def main(): makedirs(destination) dv = DataVisualizer(dataframes=options.csv_list, target=options.visualization_target, compare=False, store_path=options.destination, base_name=options.name, - columns_path=options.columns) + columns_path=options.columns, unify=options.unify) dv.plot() diff --git a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py index 807d3ed5b5..9c59ff9cf7 100644 --- a/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py +++ b/deps/wazuh_testing/wazuh_testing/tools/performance/visualization.py @@ -32,7 +32,7 @@ class DataVisualizer: base_name (str, optional): base name used to store the images. """ def __init__(self, dataframes, target, compare=False, store_path=gettempdir(), x_ticks_granularity='minutes', - x_ticks_interval=1, base_name=None, columns_path=None): + x_ticks_interval=1, base_name=None, columns_path=None, unify=False): self.dataframes_paths = dataframes self.dataframe = None self.compare = compare @@ -48,6 +48,9 @@ def __init__(self, dataframes, target, compare=False, store_path=gettempdir(), x if target in ['binary', 'analysis', 'remote', 'agent', 'logcollector', 'wazuhdb']: self.columns_to_plot = self._load_columns_to_plot(columns_path) + if unify: + self._unify_dataframes() + @staticmethod def _color_palette(size): """Create a list of different colors. @@ -87,6 +90,17 @@ def _load_dataframes(self): new_csv = pd.read_csv(df_path, index_col="Timestamp", parse_dates=True) self.dataframe = pd.concat([self.dataframe, new_csv]) + def _unify_dataframes(self): + """Unify dataframe values.""" + df_row = self.dataframe.iloc[0] + df_names = [df_row['Daemon'], df_row['Version'], df_row['PID']] + columns_to_drop = ['Daemon', 'Version', 'PID', 'Timestamp'] + columns_to_sum = self.dataframe.columns.drop(columns_to_drop) + self.dataframe = self.dataframe.groupby('Timestamp')[columns_to_sum].sum().reset_index(drop=False) + + for index, value in enumerate(df_names): + self.dataframe.insert(index, columns_to_drop[index], value) + def _set_x_ticks_interval(self, ax): """Set the number of labels that will appear in the X axis and their format.