"""Small sequential read-only production sample, not a load test."""
import json
from pathlib import Path
import statistics
import time
import urllib.request

cases = {
    'health_https': 'https://connectlyvideochat.com/health',
    'profile_qa': 'https://connectlyvideochat.com/api/getUserDetail?user_id=166828',
    'discovery_qa': 'https://connectlyvideochat.com/api/discover/feed?user_id=166828&limit=20',
    'call_history_qa_without_token': 'https://connectlyvideochat.com/api/call/history?user_id=166828&limit=1',
    'direct_node_port': 'http://13.204.142.120:3000/health',
}
result = {'method': '3 sequential requests per case from development host; includes network/TLS; not a mobile or load benchmark', 'cases': {}}
for name,url in cases.items():
    samples=[]
    for _ in range(3):
        started=time.perf_counter()
        try:
            with urllib.request.urlopen(url,timeout=20) as response:
                body=response.read(1024*1024)
                samples.append({'status':response.status,'elapsed_ms':round((time.perf_counter()-started)*1000,1),'bytes':len(body)})
        except Exception as error:
            samples.append({'error':type(error).__name__,'elapsed_ms':round((time.perf_counter()-started)*1000,1)})
        time.sleep(0.3)
    timings=[sample['elapsed_ms'] for sample in samples if 'status' in sample]
    result['cases'][name]={'samples':samples, 'median_ms':statistics.median(timings) if timings else None}
    print(name, result['cases'][name]['median_ms'],flush=True)
Path('.deploy/audit/latency.json').write_text(json.dumps(result,indent=2)+'\n')
