From 0d7a549182aed7e03eb7cb9a6684cf3958e11de0 Mon Sep 17 00:00:00 2001 From: Alex Willmer Date: Thu, 22 Jan 2026 11:52:53 +0000 Subject: [PATCH] tests: Parameterize connection benchmarks --- docs/changelog.rst | 1 + tests/bench/connection/fork_lifecycle.py | 12 ++++++++++-- tests/bench/connection/fork_roundtrip.py | 12 ++++++++++-- tests/bench/connection/local_lifecycle.py | 12 ++++++++++-- tests/bench/connection/ssh_roundtrip.py | 18 ++++++++++++++++-- 5 files changed, 47 insertions(+), 8 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 71355169..58c34b50 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -24,6 +24,7 @@ In progress (unreleased) * :gh:issue:`1415` :mod:`mitogen`: Put fallbacks & polyfills into ``if sys.version_info`` blocks * :gh:issue:`1423` tests: Group and unify naming of connection benchmarks +* :gh:issue:`1424` tests: Parameterize connection benchmarks v0.3.37 (2026-01-08) diff --git a/tests/bench/connection/fork_lifecycle.py b/tests/bench/connection/fork_lifecycle.py index d77f4437..7731d53a 100644 --- a/tests/bench/connection/fork_lifecycle.py +++ b/tests/bench/connection/fork_lifecycle.py @@ -13,9 +13,17 @@ except NameError: @mitogen.main() def main(router): + import optparse + parser = optparse.OptionParser(description=__doc__) + parser.add_option( + '-i', '--iterations', type=int, metavar='N', default=200, + help='Number of iterations (default %default)') + parser.add_option('--debug', action='store_true') + opts, args = parser.parse_args() + t0 = mitogen.core.now() - for x in xrange(200): + for x in xrange(opts.iterations): t = mitogen.core.now() - ctx = router.fork() + ctx = router.fork(debug=opts.debug) ctx.shutdown(wait=True) print('++ %d' % 1000 * ((mitogen.core.now() - t0) / (1.0+x))) diff --git a/tests/bench/connection/fork_roundtrip.py b/tests/bench/connection/fork_roundtrip.py index 774dfc5b..7609b923 100644 --- a/tests/bench/connection/fork_roundtrip.py +++ b/tests/bench/connection/fork_roundtrip.py @@ -19,9 +19,17 @@ def do_nothing(): @mitogen.main() def main(router): - f = router.fork() + import optparse + parser = optparse.OptionParser(description=__doc__) + parser.add_option( + '-i', '--iterations', type=int, metavar='N', default=20000, + help='Number of iterations (default %default)') + parser.add_option('--debug', action='store_true') + opts, args = parser.parse_args() + + f = router.fork(debug=opts.debug) f.call(do_nothing) t0 = mitogen.core.now() - for x in xrange(20000): + for x in xrange(opts.iterations): f.call(do_nothing) print('++', int(1e6 * ((mitogen.core.now() - t0) / (1.0+x))), 'usec') diff --git a/tests/bench/connection/local_lifecycle.py b/tests/bench/connection/local_lifecycle.py index 0653a0de..6c232202 100644 --- a/tests/bench/connection/local_lifecycle.py +++ b/tests/bench/connection/local_lifecycle.py @@ -14,10 +14,18 @@ mitogen.utils.setup_gil() @mitogen.main() def main(router): + import optparse + parser = optparse.OptionParser(description=__doc__) + parser.add_option( + '-i', '--iterations', type=int, metavar='N', default=100, + help='Number of iterations (default %default)') + parser.add_option('--debug', action='store_true') + opts, args = parser.parse_args() + t0 = mitogen.core.now() - for x in range(100): + for x in range(opts.iterations): t = mitogen.core.now() - f = router.local()# debug=True) + f = router.local(debug=opts.debug) tt = mitogen.core.now() print(x, 1000 * (tt - t)) print('%.03f ms' % (1000 * (mitogen.core.now() - t0) / (1.0 + x))) diff --git a/tests/bench/connection/ssh_roundtrip.py b/tests/bench/connection/ssh_roundtrip.py index c5f14574..7bed604a 100644 --- a/tests/bench/connection/ssh_roundtrip.py +++ b/tests/bench/connection/ssh_roundtrip.py @@ -2,7 +2,7 @@ Measure latency of SSH RPC. """ -import sys +import getpass import mitogen.core import mitogen.utils @@ -21,7 +21,21 @@ def do_nothing(): @mitogen.main() def main(router): - f = router.ssh(hostname=sys.argv[1]) + import optparse + parser = optparse.OptionParser(description=__doc__) + parser.add_option( + '-p', '--python', metavar='CMD', default='python3', + help='Remote python path (default %default)') + parser.add_option( + '-u', '--user', metavar='S', default=getpass.getuser(), + help='Remote username (default %default)') + parser.add_option('--debug', action='store_true') + opts, args = parser.parse_args() + + f = router.ssh( + hostname=args[0], python_path=opts.python, username=opts.user, + debug=opts.debug, + ) f.call(do_nothing) t0 = mitogen.core.now() end = mitogen.core.now() + 5.0