Unverified Commit 13845e01 authored by norvell's avatar norvell
Browse files

Add filtering options for testcase

parent d1042321
Loading
Loading
Loading
Loading
+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

@@ -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")
@@ -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)
@@ -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__":
@@ -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)