import csv
import json
import os
from pathlib import Path

os.umask(0o077)
R=Path(__file__).parent
d=json.loads((R/'r02/run.json').read_text())
m=d['measurement']; before=m['before']; after=m['after']
seconds=(after['sampled_ns']-before['sampled_ns'])/1e9
counts={key:after['counts'].get(key,0)-before['counts'].get(key,0) for key in after['counts']}
calls=d['calls']
out=dict(runtime_windows=2,builds=2,first_window='API_TIMEOUT_CAPTURE_MISMATCH',
         second_window=d['window_result'], measurement_seconds=seconds,
         counts=counts,fps={k:v/seconds for k,v in counts.items()},
         capture_included=True, raw_events_created=d['result_events_created'],
         redis_events_observed=d['events_observed'], matched_frames=d['redis_visual_matches'],
         first_result_seconds=(d['first_result_ns']-calls[0]['requested_ns'])/1e9,
         start_response_seconds=(calls[0]['returned_ns']-calls[0]['requested_ns'])/1e9,
         stop_response_seconds=(calls[1]['returned_ns']-calls[1]['requested_ns'])/1e9,
         cleanup_seconds=d['observations'][-1]['last_cleanup']['elapsed_s'],
         cleanup=d['cleanup_verified'], final=d['final'],
         temporary_mounts_removed=d['temporary_mounts_removed'],input_restored=d['input_settings_restored'])
(R/'summary.json').write_text(json.dumps(out,indent=2))
with (R/'summary.csv').open('w',newline='') as f:
    writer=csv.writer(f);writer.writerow(['stage','frames','seconds','fps'])
    for k,v in counts.items():writer.writerow([k,v,seconds,out['fps'][k]])
print(json.dumps(out))
