"""Deterministic admission model using integer milliseconds and milli-tokens.""" import json from pathlib import Path REQUESTS=[{'id':f'{t}-{i}','time_ms':t,'work_units':1 if i<10 else 5} for t in [990,1010] for i in range(20)] def simulate(policy,requests=REQUESTS,burst=20,rate=20,weighted=False): tokens=burst*1000; previous=0; windows={};trace=[] for req in requests: t=req['time_ms'];assert t>=previous cost=req['work_units'] if weighted else 1 if policy=='Fixed window': window=t//1000; used=windows.get(window,0);ok=used=cost*1000 if ok:tokens-=cost*1000 remaining=tokens/1000 previous=t trace.append({**req,'accepted':ok,'remaining':remaining}) return {'policy':policy,'rate':rate,'burst':None if policy=='Fixed window' else burst,'weighted':weighted,'accepted':sum(t['accepted'] for t in trace),'accepted_work_units':sum(t['work_units'] for t in trace if t['accepted']),'trace':trace} def run(): runs=[simulate('Fixed window'),simulate('Token bucket B=5',burst=5),simulate('Token bucket B=10',burst=10),simulate('Token bucket B=20',burst=20),simulate('Weighted bucket B=20',burst=20,weighted=True)] assert [(r['accepted'],r['accepted_work_units']) for r in runs]==[(40,120),(5,5),(10,10),(20,60),(12,20)] assert runs[3]['trace'][-1]['remaining']==.4 # One unit every 50 ms equals the refill rate and stays admitted. steady=[{'id':str(i),'time_ms':i*50,'work_units':1} for i in range(100)] assert simulate('steady',steady,burst=1)['accepted']==100 assert simulate('oversize',[{'id':'x','time_ms':0,'work_units':6}],burst=5,weighted=True)['accepted']==0 return {'scope':'Deterministic single-admission-authority model; no actual request execution','requests':40,'duration_ms':20,'total_work_units':120,'runs':runs} if __name__=='__main__': out=run();assert out==run() Path(__file__).with_name('results.json').write_text(json.dumps(out,indent=2)+'\n') print([(r['policy'],r['accepted'],r['accepted_work_units']) for r in out['runs']])