"""Assigned replication timeline and routing policies; not a database test."""
import csv,json
from pathlib import Path
ROOT=Path(__file__).resolve().parent
rows=[]
for policy in ('replica','primary','sticky_2_seconds','version_gate'):
 for elapsed in (0.1,1.0,2.1,3.1):
  primary=42;replica=41 if elapsed<3 else 42;required=42
  target='replica'
  if policy=='primary' or (policy=='sticky_2_seconds' and elapsed<2) or (policy=='version_gate' and replica<required):target='primary'
  seen=primary if target=='primary' else replica
  rows.append(dict(policy=policy,elapsed_seconds=elapsed,primary_revision=primary,replica_revision=replica,required_revision=required,target=target,seen_revision=seen,read_your_write=seen>=required))
failures={p:sum(not r['read_your_write']for r in rows if r['policy']==p)for p in ('replica','primary','sticky_2_seconds','version_gate')}
assert failures=={'replica':3,'primary':0,'sticky_2_seconds':1,'version_gate':0}
with (ROOT/'trace.csv').open('w',newline='')as f:w=csv.DictWriter(f,fieldnames=list(rows[0]));w.writeheader();w.writerows(rows)
(ROOT/'results.json').write_text(json.dumps(dict(reads=len(rows),failures=failures,assignedReplayDelaySeconds=3,scope='One record and one replication history; a trusted revision marker, not a PostgreSQL LSN implementation.'),indent=2)+'\n')
print(json.dumps(failures))
