From d016649e2a7996f4300193ef21c6e821a6f7030a Mon Sep 17 00:00:00 2001 From: Alexander Garden Date: Mon, 14 Sep 2015 12:25:07 -0400 Subject: [PATCH] Added flags for testing only upload or only download speed --- README.rst | 3 +++ speedtest-cli.1 | 10 ++++++++++ speedtest_cli.py | 47 ++++++++++++++++++++++++++++------------------- 3 files changed, 41 insertions(+), 19 deletions(-) diff --git a/README.rst b/README.rst index fccf934..0d0e19e 100644 --- a/README.rst +++ b/README.rst @@ -76,6 +76,7 @@ Usage $ speedtest-cli -h usage: speedtest-cli [-h] [--bytes] [--share] [--simple] [--list] [--server SERVER] [--mini MINI] [--source SOURCE] + [--download] [--upload] [--timeout TIMEOUT] [--secure] [--version] Command line interface for testing internet bandwidth using speedtest.net. @@ -94,6 +95,8 @@ Usage --server SERVER Specify a server ID to test against --mini MINI URL of the Speedtest Mini server --source SOURCE Source IP address to bind to + --download Only test download speed + --upload Only test upload speed --timeout TIMEOUT HTTP timeout in seconds. Default 10 --secure Use HTTPS instead of HTTP when communicating with speedtest.net operated servers diff --git a/speedtest-cli.1 b/speedtest-cli.1 index eb20ea7..74cb5f5 100644 --- a/speedtest-cli.1 +++ b/speedtest-cli.1 @@ -58,6 +58,16 @@ URL of the Speedtest Mini server Source IP address to bind to .RE +\fB\-\-download\fR +.RS +Only test download speed +.RE + +\fB\-\-upload\fR +.RS +Only test upload speed +.RE + \fB\-\-version\fR .RS Show the version number and exit diff --git a/speedtest_cli.py b/speedtest_cli.py index 05c3b01..559e1ff 100755 --- a/speedtest_cli.py +++ b/speedtest_cli.py @@ -590,6 +590,10 @@ def speedtest(): parser.add_argument('--secure', action='store_true', help='Use HTTPS instead of HTTP when communicating ' 'with speedtest.net operated servers') + parser.add_argument('--download', dest='downloadonly', action='store_true', + help='Only test download speed') + parser.add_argument('--upload', dest='uploadonly', action='store_true', + help='Only test upload speed') parser.add_argument('--version', action='store_true', help='Show the version number and exit') @@ -714,30 +718,35 @@ def speedtest(): for i in range(0, 4): urls.append('%s/random%sx%s.jpg' % (os.path.dirname(best['url']), size, size)) - if not args.simple: - print_('Testing download speed', end='') - dlspeed = downloadSpeed(urls, args.simple) - if not args.simple: - print_() - print_('Download: %0.2f M%s/s' % - ((dlspeed / 1000 / 1000) * args.units[1], args.units[0])) + if not args.uploadonly: + if not args.simple: + print_('Testing download speed', end='') + dlspeed = downloadSpeed(urls, args.simple) + if not args.simple: + print_() + print_('Download: %0.2f M%s/s' % + ((dlspeed / 1000 / 1000) * args.units[1], args.units[0])) - sizesizes = [int(.25 * 1000 * 1000), int(.5 * 1000 * 1000)] - sizes = [] - for size in sizesizes: - for i in range(0, 25): - sizes.append(size) - if not args.simple: - print_('Testing upload speed', end='') - ulspeed = uploadSpeed(best['url'], sizes, args.simple) - if not args.simple: - print_() - print_('Upload: %0.2f M%s/s' % - ((ulspeed / 1000 / 1000) * args.units[1], args.units[0])) + if not args.downloadonly: + sizesizes = [int(.25 * 1000 * 1000), int(.5 * 1000 * 1000)] + sizes = [] + for size in sizesizes: + for i in range(0, 25): + sizes.append(size) + if not args.simple: + print_('Testing upload speed', end='') + ulspeed = uploadSpeed(best['url'], sizes, args.simple) + if not args.simple: + print_() + print_('Upload: %0.2f M%s/s' % + ((ulspeed / 1000 / 1000) * args.units[1], args.units[0])) if args.share and args.mini: print_('Cannot generate a speedtest.net share results image while ' 'testing against a Speedtest Mini server') + elif args.share and (args.uploadonly or args.downloadonly): + print_('Cannot generate a speedtest.net share results image while ' + 'testing only upload or download speed') elif args.share: dlspeedk = int(round((dlspeed / 1000) * 8, 0)) ping = int(round(best['latency'], 0))