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