mitogen/preamble_size.py

77 lines
1.7 KiB
Python
Raw Normal View History

2017-09-15 06:24:41 +00:00
"""
Print the size of a typical SSH command line and the bootstrap code sent to new
contexts.
"""
import inspect
2018-08-18 13:17:41 +00:00
import sys
2017-09-15 06:24:41 +00:00
import zlib
2017-09-21 11:38:57 +00:00
import mitogen.fakessh
2017-09-15 06:24:41 +00:00
import mitogen.master
import mitogen.minify
import mitogen.parent
2018-05-29 17:14:29 +00:00
import mitogen.select
import mitogen.service
2017-09-15 06:24:41 +00:00
import mitogen.ssh
import mitogen.sudo
router = mitogen.master.Router()
context = mitogen.parent.Context(router, 0)
2018-04-01 22:49:43 +00:00
stream = mitogen.ssh.Stream(router, 0, max_message_size=0, hostname='foo')
2017-09-15 06:24:41 +00:00
print('SSH command size: %s' % (len(' '.join(stream.get_boot_command())),))
print('Preamble size: %s (%.2fKiB)' % (
2017-09-15 06:24:41 +00:00
len(stream.get_preamble()),
len(stream.get_preamble()) / 1024.0,
))
2018-08-18 13:17:41 +00:00
if '--dump' in sys.argv:
print(zlib.decompress(stream.get_preamble()))
exit()
2017-09-15 06:24:41 +00:00
print(
' '
' '
' Original '
' '
' Minimized '
' '
' Compressed '
)
2017-09-15 06:24:41 +00:00
for mod in (
mitogen.parent,
2017-09-15 06:24:41 +00:00
mitogen.ssh,
mitogen.sudo,
2018-05-29 17:14:29 +00:00
mitogen.select,
mitogen.service,
2017-09-21 11:38:57 +00:00
mitogen.fakessh,
mitogen.master,
):
original = inspect.getsource(mod)
original_size = len(original)
minimized = mitogen.minify.minimize_source(original)
minimized_size = len(minimized)
compressed = zlib.compress(minimized, 9)
compressed_size = len(compressed)
print(
'%-15s'
' '
'%5i %4.1fKiB'
' '
'%5i %4.1fKiB %.1f%%'
' '
'%5i %4.1fKiB %.1f%%'
% (
mod.__name__,
original_size,
original_size / 1024.0,
minimized_size,
minimized_size / 1024.0,
100 * minimized_size / float(original_size),
compressed_size,
compressed_size / 1024.0,
100 * compressed_size / float(original_size),
))