leaky-bucket/poc/py-rps/testdata/rand_0_n_stream.py

35 lines
1.0 KiB
Python

import time
import random
from sys import stdout
import argparse
ap = argparse.ArgumentParser()
ap.add_argument("-b-min", type=int, help="burst minimum", default=1)
ap.add_argument("-b-max", type=int, help="burst maximum", default=20)
ap.add_argument("-d-min", type=int, help="sleep minimum ms", default=0)
ap.add_argument("-d-max", type=int, help="sleep maximum ms", default=3000)
ap.add_argument("-between", type=int, help="between maximum ms", default=1000)
ap.add_argument("-n", type=int, help="max to gen", default=14)
args = ap.parse_args()
random.seed(int(1000*time.time()))
def new_burst():
return random.randint(args.b_min, args.b_max)
def new_between():
return random.randint(0, args.between) / 1000.0
def new_delay():
return random.randint(args.d_min, args.d_max) / 1000.0
burst = new_burst()
while True:
line = random.randint(0, args.n-1)
if burst:
print(line, file=stdout)
stdout.flush()
time.sleep(new_between())
burst -= 1
if not burst:
time.sleep(new_delay())
burst = new_burst()