From fa80298d6ef968002b3041850a64758fd816b3b6 Mon Sep 17 00:00:00 2001 From: Piotr Binkowski Date: Tue, 22 Oct 2019 15:34:26 +0200 Subject: [PATCH] tools: add scripts for automating tests of old tool revisions Signed-off-by: Piotr Binkowski --- tools/compare.sh | 28 ++++++++++++++++++++++++++++ tools/csv-analyzer | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100755 tools/compare.sh create mode 100755 tools/csv-analyzer diff --git a/tools/compare.sh b/tools/compare.sh new file mode 100755 index 0000000000000..441ca20cd6774 --- /dev/null +++ b/tools/compare.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +rm -r ./tests/generated +make generate-tests + +for i in $(seq 0 $1); do + DATE=$(date --date="`date` -$i week" '+%Y-%m-%d') + + rm -r ./out/ + rm -rf ./third_party/tools + git submodule update + + echo $DATE + + for d in ./third_party/tools/*/ ; do + pushd $d + git checkout `git rev-list -n 1 --first-parent --before="$DATE" HEAD` + popd + done + + make runners -j`nproc` + + make -j`nproc` + + cp ./out/report/report.csv $DATE.csv +done + +./tools/csv-analyzer *.csv diff --git a/tools/csv-analyzer b/tools/csv-analyzer new file mode 100755 index 0000000000000..80200367f3c22 --- /dev/null +++ b/tools/csv-analyzer @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 + +import argparse +import csv +import os + +parser = argparse.ArgumentParser() + +parser.add_argument("files", metavar='N', type=str, nargs='+') + +args = parser.parse_args() + +results = {} + +for f in args.files: + name = os.path.splitext(os.path.basename(f))[0] + results[name] = {} + with open(f, newline='') as csvfile: + reader = csv.DictReader(csvfile) + runners = reader.fieldnames[3:] + for runner in runners: + results[name][runner] = 0 + for row in reader: + for runner in runners: + if row[runner] == 'True': + results[name][runner] += 1 + +with open('out.csv', 'w', newline='') as csvfile: + writer = csv.writer(csvfile) + writer.writerow(['date', *runners]) + for d in results: + row = [d] + for runner in runners: + row.append(results[d][runner]) + writer.writerow(row)