def _detectOneBenchmarkRegression()

in benchmarking/regression_detectors/regression_detectors.py [0:0]


def _detectOneBenchmarkRegression(data):
    regressed = []
    if "meta.txt" not in data:
        getLogger().error("Meta is not found")
        return regressed
    meta = data.pop("meta.txt")
    if len(meta) < 2:
        return regressed, None
    control_commits = {
        x["control_commit"] if "control_commit" in x else x["commit"] for x in meta
    }
    control_change = len(control_commits) > 1
    metric = meta[0]["metric"]
    detector = detectors[metric]()
    for filename, one_data in data.items():
        if filename == "meta.txt":
            continue
        if len(one_data) < 2:
            continue
        if (
            detector.isRegressed(filename, one_data[0], one_data[2:], control_change)
        ) and detector.isRegressed(filename, one_data[1], one_data[2:], control_change):
            regressed.append(one_data[0]["type"])
    if len(regressed) > 0:
        infos = []
        for x in meta:
            idx = x["command"].index("--info")
            infos.append(json.loads(x["command"][idx + 1]))
        infos.reverse()
        return regressed, infos
    return regressed, None