issue #485: import new throuhgput bench
parent
6281f231cb
commit
fedd294f96
@ -0,0 +1,74 @@
|
||||
# Verify throughput over sudo and SSH at various compression levels.
|
||||
|
||||
import os
|
||||
import random
|
||||
import socket
|
||||
import subprocess
|
||||
import tempfile
|
||||
import time
|
||||
|
||||
import mitogen
|
||||
import mitogen.service
|
||||
|
||||
|
||||
def prepare():
|
||||
pass
|
||||
|
||||
|
||||
def transfer(context, path):
|
||||
fp = open('/dev/null', 'wb')
|
||||
mitogen.service.FileService.get(context, path, fp)
|
||||
fp.close()
|
||||
|
||||
|
||||
def fill_with_random(fp, size):
|
||||
n = 0
|
||||
s = os.urandom(1048576*16)
|
||||
while n < size:
|
||||
fp.write(s)
|
||||
n += len(s)
|
||||
|
||||
|
||||
def run_test(router, fp, s, context):
|
||||
fp.seek(0, 2)
|
||||
size = fp.tell()
|
||||
print('Testing %s...' % (s,))
|
||||
context.call(prepare)
|
||||
t0 = time.time()
|
||||
context.call(transfer, router.myself(), fp.name)
|
||||
t1 = time.time()
|
||||
print('%s took %.2f ms to transfer %.2f MiB, %.2f MiB/s' % (
|
||||
s, 1000 * (t1 - t0), size / 1048576.0,
|
||||
(size / (t1 - t0) / 1048576.0),
|
||||
))
|
||||
|
||||
|
||||
@mitogen.main()
|
||||
def main(router):
|
||||
bigfile = tempfile.NamedTemporaryFile()
|
||||
fill_with_random(bigfile, 1048576*512)
|
||||
|
||||
file_service = mitogen.service.FileService(router)
|
||||
pool = mitogen.service.Pool(router, ())
|
||||
file_service.register(bigfile.name)
|
||||
pool.add(file_service)
|
||||
try:
|
||||
context = router.local()
|
||||
run_test(router, bigfile, 'local()', context)
|
||||
context.shutdown(wait=True)
|
||||
|
||||
context = router.sudo()
|
||||
run_test(router, bigfile, 'sudo()', context)
|
||||
context.shutdown(wait=True)
|
||||
|
||||
context = router.ssh(hostname='localhost', compression=False)
|
||||
run_test(router, bigfile, 'ssh(compression=False)', context)
|
||||
context.shutdown(wait=True)
|
||||
|
||||
context = router.ssh(hostname='localhost', compression=True)
|
||||
run_test(router, bigfile, 'ssh(compression=True)', context)
|
||||
context.shutdown(wait=True)
|
||||
finally:
|
||||
pool.stop()
|
||||
bigfile.close()
|
||||
|
Loading…
Reference in New Issue