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