import csv
import sys
INPUT_HEADER = [
"label", "count", "min_us", "avg_us", "stddev_us",
"p50_us", "p90_us", "p99_us", "p999_us", "max_us",
]
OUTPUT_HEADER = [
"Sample", "Payload", "p99", "count", "min_us", "avg_us", "stddev_us",
"p50_us", "p90_us", "p999_us", "max_us",
]
def main(argv: list[str]) -> int:
if len(argv) != 2:
sys.stderr.write(f"usage: {argv[0]} <input.csv>\n")
return 2
with open(argv[1], newline="", encoding="utf-8") as f:
reader = csv.reader(f)
header = next(reader)
if header != INPUT_HEADER:
sys.stderr.write(
f"error: unexpected input header.\n got: {header}\n"
f" expected: {INPUT_HEADER}\n"
)
return 1
writer = csv.writer(sys.stdout, lineterminator="\n")
writer.writerow(OUTPUT_HEADER)
for row in reader:
if not row:
continue
if len(row) != 10:
sys.stderr.write(f"error: row has {len(row)} cols, expected 10: {row}\n")
return 1
label = row[0]
sep = label.rfind("_")
if sep < 0:
sys.stderr.write(f"error: label has no underscore: {label!r}\n")
return 1
sample, payload = label[:sep], label[sep + 1:]
count, min_us, avg_us, stddev_us, p50, p90, p99, p999, mx = row[1:]
writer.writerow([sample, payload, p99, count, min_us, avg_us,
stddev_us, p50, p90, p999, mx])
return 0
if __name__ == "__main__":
sys.exit(main(sys.argv))