from ops import *
import sys
mode=sys.argv[1];folder=HERE/mode
out=[]
for p in sorted(folder.glob('stage-*.json'))[-2:]:
    a=json.loads(p.read_text());x,y=a['samples'][0],a['samples'][-1];dt=y['t']-x['t'];groups={}
    for c,r in y['channels'].items():
        for k,v in r['providers'].items():
            old=x['channels'][c]['providers'][k];m=v['metadata_path'];n=old['metadata_path']
            pub=lambda s:next(iter(s['publisher_metrics'].get('delivery',{}).values()),{}).get(k,{})
            row=groups.setdefault(k,dict(n=0,complete=0,redis=0,expired=0,suppressed=0))
            row['n']+=1;row['complete']+=(m['providers'][k]['responses']-n['providers'][k]['responses'])/dt
            row['redis']+=(pub(v).get('count',0)-pub(old).get('count',0))/dt
            row['expired']+=m.get('completed_queue_expired',0)-n.get('completed_queue_expired',0)
            row['suppressed']+=m['artifacts'].get('event_candidates_suppressed',0)-n['artifacts'].get('event_candidates_suppressed',0)
    for row in groups.values():
        row['complete']=round(row['complete']/row['n'],2);row['redis']=round(row['redis']/row['n'],2)
    out.append(dict(level=a['level'],providers=groups))
print(json.dumps(dict(mode=mode,stages=out)))
