#!/usr/bin/env python3

import os
import re
import subprocess
import sys

os.chdir(os.path.dirname(os.path.realpath(sys.argv[0])))
os.chdir("../application-ooni")
os.environ['PYTHONUNBUFFERED'] = '1'

subprocess.run(["cargo", "bench", "-p", "ooniauth-core"])
proc = subprocess.Popen(["python3", "scripts/criterion_extract.py"], stdout=subprocess.PIPE, text=True)
timings = {}
for line in proc.stdout:
    line = line.rstrip()
    if matches := re.match(r'(client|server)_(reg|submit|update)\s+([\d\.]+)\s+([\d\.]+)', line):
        timings[f"{matches.group(1)}_{matches.group(2)}"] = f"{matches.group(3)} ({matches.group(4)})"
    else:
        print(f"Unparsable line: {line}")

print("\n=== Table 3 ===\n")
print("protocol,client native ms,server native ms")
print(f"Registration,{timings['client_reg']},{timings['server_reg']}")
print(f"Submit,{timings['client_submit']},{timings['server_submit']}")
print(f"Update,{timings['client_update']},{timings['server_update']}")
