import json, resource, socket, sys, time
N = int(sys.argv[1])
resource.setrlimit(resource.RLIMIT_NOFILE, (8192, resource.getrlimit(resource.RLIMIT_NOFILE)[1]))
def netstat():
    lines = open("/proc/net/netstat").read().split("\n")
    h, v = lines[0].split(), lines[1].split()
    d = dict(zip(h[1:], map(int, v[1:])))
    return {k: d[k] for k in ("ListenOverflows", "ListenDrops")}
a = netstat(); t0 = time.monotonic(); socks = []; slow = 0
for i in range(N):
    t = time.monotonic()
    s = socket.create_connection(("127.0.0.1", 8199)); s.sendall(b"GET /api/events/stream HTTP/1.1\r\nHost: t\r\n\r\n")
    if time.monotonic() - t > 0.5: slow += 1
    socks.append(s)
b = netstat()
print(json.dumps({"n": N, "connect_loop_s": round(time.monotonic() - t0, 2), "connects_over_0.5s": slow,
                  "ListenOverflows": b["ListenOverflows"] - a["ListenOverflows"], "ListenDrops": b["ListenDrops"] - a["ListenDrops"]}))
