Loading ci/process_long_term_logs.py +42 −4 Original line number Diff line number Diff line #!/usr/bin/env python3 import os import pandas as pd import argparse import plotly.express as px import re import plotly.graph_objects as go from plotly.subplots import make_subplots Loading Loading @@ -39,9 +41,13 @@ def parse_csv_data(csv_data): return concat_df def plot_data(df, output_filename, days, measure): def plot_data(df, args): """plot max values for measure and data and save to html file.""" measure = args.measure days = args.days # Convert 'date' to datetime df["date"] = pd.to_datetime(df["date"], errors="coerce") df["MLD"] = pd.to_numeric(df[measure], errors="coerce") Loading @@ -53,6 +59,21 @@ def plot_data(df, output_filename, days, measure): # Drop rows with NaT and NaN df = df.dropna(subset=["date", measure]) # Filter test cases based on include/reject/match arguments if args.include: mask = pd.Series(False, index=df.index) for tag in args.include: mask |= df["testcase"].str.contains(tag, case=False, na=False) df = df[mask] if args.reject: mask = pd.Series(False, index=df.index) for tag in args.reject: mask |= df["testcase"].str.contains(tag, case=False, na=False) df = df[~mask] if args.match: pattern = re.compile(args.match, re.IGNORECASE) df = df[df["testcase"].str.contains(pattern, na=False)] # Group by 'format' and 'date' to get rows with max 'MLD' per group idx = df.groupby(["format", "date"])[measure].idxmax() max = df.loc[idx].reset_index(drop=True) Loading Loading @@ -133,7 +154,7 @@ def plot_data(df, output_filename, days, measure): fig.update_yaxes(automargin=True) # Save to html fig.write_html(output_filename) fig.write_html(args.output_filename) if __name__ == "__main__": Loading @@ -160,8 +181,25 @@ if __name__ == "__main__": help="Measure for analysis: MLD, MAX_ABS_DIFF, MIN_ODG, default: MLD", default="MLD", ) parser.add_argument( "--include", nargs="+", type=str, help="List of tags to include", ) parser.add_argument( "--reject", nargs="+", type=str, help="List of tags to reject", ) parser.add_argument( "--match", type=str, help="Regex pattern for selecting tests", ) args = parser.parse_args() csv_data = read_csv_files(args.root_dir) data = parse_csv_data(csv_data) plot_data(data, args.output_filename, args.days, args.measure) plot_data(data, args) Loading
ci/process_long_term_logs.py +42 −4 Original line number Diff line number Diff line #!/usr/bin/env python3 import os import pandas as pd import argparse import plotly.express as px import re import plotly.graph_objects as go from plotly.subplots import make_subplots Loading Loading @@ -39,9 +41,13 @@ def parse_csv_data(csv_data): return concat_df def plot_data(df, output_filename, days, measure): def plot_data(df, args): """plot max values for measure and data and save to html file.""" measure = args.measure days = args.days # Convert 'date' to datetime df["date"] = pd.to_datetime(df["date"], errors="coerce") df["MLD"] = pd.to_numeric(df[measure], errors="coerce") Loading @@ -53,6 +59,21 @@ def plot_data(df, output_filename, days, measure): # Drop rows with NaT and NaN df = df.dropna(subset=["date", measure]) # Filter test cases based on include/reject/match arguments if args.include: mask = pd.Series(False, index=df.index) for tag in args.include: mask |= df["testcase"].str.contains(tag, case=False, na=False) df = df[mask] if args.reject: mask = pd.Series(False, index=df.index) for tag in args.reject: mask |= df["testcase"].str.contains(tag, case=False, na=False) df = df[~mask] if args.match: pattern = re.compile(args.match, re.IGNORECASE) df = df[df["testcase"].str.contains(pattern, na=False)] # Group by 'format' and 'date' to get rows with max 'MLD' per group idx = df.groupby(["format", "date"])[measure].idxmax() max = df.loc[idx].reset_index(drop=True) Loading Loading @@ -133,7 +154,7 @@ def plot_data(df, output_filename, days, measure): fig.update_yaxes(automargin=True) # Save to html fig.write_html(output_filename) fig.write_html(args.output_filename) if __name__ == "__main__": Loading @@ -160,8 +181,25 @@ if __name__ == "__main__": help="Measure for analysis: MLD, MAX_ABS_DIFF, MIN_ODG, default: MLD", default="MLD", ) parser.add_argument( "--include", nargs="+", type=str, help="List of tags to include", ) parser.add_argument( "--reject", nargs="+", type=str, help="List of tags to reject", ) parser.add_argument( "--match", type=str, help="Regex pattern for selecting tests", ) args = parser.parse_args() csv_data = read_csv_files(args.root_dir) data = parse_csv_data(csv_data) plot_data(data, args.output_filename, args.days, args.measure) plot_data(data, args)