#!/usr/bin/env python3 """Small closed-loop HTTP write benchmark; not an open-loop capacity proof.""" from concurrent.futures import ThreadPoolExecutor import json import math from pathlib import Path import threading import time from client import Client, Failure, LAB, arguments, check, run def main(): def configure(p): p.add_argument('--duration',type=float,default=30) p.add_argument('--concurrency',type=int,default=4) p.add_argument('--output',default=None,help='Optional JSON metrics, no session tokens') args = arguments('Synthetic POST message load, closed loop; creates users/messages',configure) check(1<=args.duration<=3600,'duration must be 1..3600 seconds') check(1<=args.concurrency<=128,'concurrency must be 1..128') c = Client(args.base_url,args.ca_file) alice,bob,eve,chat = c.bootstrap() barrier = threading.Barrier(args.concurrency) def worker(worker_id): local = Client(args.base_url,args.ca_file,timeout=5) barrier.wait() deadline = time.monotonic()+args.duration latencies,errors = [],0 index = 0 while time.monotonic()