From cdec9d47885b96655d56adb282187a261e1d0ed3 Mon Sep 17 00:00:00 2001 From: Andrew Udvare Date: Sat, 27 Apr 2013 07:40:48 -0700 Subject: [PATCH 1/2] Add --bytes argument to get speed in MB/s --- README.md | 5 +++-- speedtest-cli | 17 +++++++++++++++-- speedtest-cli-3 | 17 +++++++++++++++-- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index fa793c7..db7438b 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ speedtest-cli-3 is written for use with Python 3 ## Usage $ speedtest-cli -h - usage: speedtest-cli [-h] [--share] [--simple] [--list] [--server SERVER] + usage: speedtest-cli [-h] [--share] [--simple] [--list] [--bytes] [--server SERVER] Command line interface for testing internet bandwidth using speedtest.net. -------------------------------------------------------------------------- @@ -23,4 +23,5 @@ speedtest-cli-3 is written for use with Python 3 results image --simple Suppress verbose output, only show basic information --list Display a list of speedtest.net servers sorted by distance - --server SERVER Specify a server ID to test against \ No newline at end of file + --bytes Display speeds in MBytes/s (instead of Mbit/s) + --server SERVER Specify a server ID to test against diff --git a/speedtest-cli b/speedtest-cli index 1ef445d..7fd8123 100755 --- a/speedtest-cli +++ b/speedtest-cli @@ -290,6 +290,7 @@ def speedtest(): help='Display a list of speedtest.net servers ' 'sorted by distance') parser.add_argument('--server', help='Specify a server ID to test against') + parser.add_argument('--bytes', action='store_true', help='Show speed in MB per second') options = parser.parse_args() if isinstance(options, tuple): @@ -341,6 +342,10 @@ def speedtest(): else: print 'Ping: %(latency)s ms' % best + unit = 'bits' + if args.bytes: + unit = 'B' + sizes = [350, 500, 750, 1000, 1500, 2000, 2500, 3000, 3500, 4000] urls = [] for size in sizes: @@ -352,7 +357,11 @@ def speedtest(): dlspeed = downloadSpeed(urls, args.simple) if not args.simple: print - print 'Download: %0.2f Mbit/s' % ((dlspeed / 1000 / 1000) * 8) + + dlspeed = dlspeed / 1000 / 1000 + if not args.bytes: + dlspeed = dlspeed * 8 + print 'Download: %0.2f M%s/s' % (dlspeed, unit) sizesizes = [int(.25 * 1000 * 1000), int(.5 * 1000 * 1000)] sizes = [] @@ -364,7 +373,11 @@ def speedtest(): ulspeed = uploadSpeed(best['url'], sizes, args.simple) if not args.simple: print - print 'Upload: %0.2f Mbit/s' % ((ulspeed / 1000 / 1000) * 8) + + ulspeed = ulspeed / 1000 / 1000 + if not args.bytes: + ulspeed = ulspeed * 8 + print 'Upload: %0.2f M%s/s' % (ulspeed, unit) if args.share: dlspeedk = int(round((dlspeed / 1000) * 8, 0)) diff --git a/speedtest-cli-3 b/speedtest-cli-3 index 4792a3b..e248664 100755 --- a/speedtest-cli-3 +++ b/speedtest-cli-3 @@ -272,6 +272,7 @@ def speedtest(): help='Display a list of speedtest.net servers ' 'sorted by distance') parser.add_argument('--server', help='Specify a server ID to test against') + parser.add_argument('--bytes', action='store_true', help='Show speed in MB per second') args = parser.parse_args() if not args.simple: @@ -318,6 +319,10 @@ def speedtest(): else: print('Ping: %(latency)s ms' % best) + unit = 'bits' + if args.bytes: + unit = 'B' + sizes = [350, 500, 750, 1000, 1500, 2000, 2500, 3000, 3500, 4000] urls = [] for size in sizes: @@ -329,7 +334,11 @@ def speedtest(): dlspeed = downloadSpeed(urls, args.simple) if not args.simple: print() - print('Download: %0.2f Mbit/s' % ((dlspeed / 1000 / 1000) * 8)) + + dlspeed = dlspeed / 1000 / 1000 + if not args.bytes: + dlspeed = dlspeed * 8 + print('Download: %0.2f M%s/s' % (dlspeed, unit)) sizesizes = [int(.25 * 1000 * 1000), int(.5 * 1000 * 1000)] sizes = [] @@ -341,7 +350,11 @@ def speedtest(): ulspeed = uploadSpeed(best['url'], sizes, args.simple) if not args.simple: print() - print('Upload: %0.2f Mbit/s' % ((ulspeed / 1000 / 1000) * 8)) + + ulspeed = ulspeed / 1000 / 1000 + if not args.bytes: + ulspeed = ulspeed * 8 + print('Upload: %0.2f M%s/s' % (ulspeed, unit)) if args.share: dlspeedk = int(round((dlspeed / 1000) * 8, 0)) From ab2bda7ea30b2e90785234a041c05646d159d52e Mon Sep 17 00:00:00 2001 From: Andrew Udvare Date: Sat, 27 Apr 2013 07:53:25 -0700 Subject: [PATCH 2/2] Add --ib option to use binary prefixes This is mainly for use with the --bytes options since many file managers and applications assume use of 1024 intead of 1000 when it comes to dealing with data sizes in bytes. This is so users can get a closer to realistic view for general data (pretty much except those on OS X and possibly Ubuntu, whose file manager(s) use SI units). Please see http://en.wikipedia.org/wiki/Binary_prefix --- README.md | 2 ++ speedtest-cli | 13 ++++++++++--- speedtest-cli-3 | 13 ++++++++++--- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index db7438b..f41ac01 100644 --- a/README.md +++ b/README.md @@ -24,4 +24,6 @@ speedtest-cli-3 is written for use with Python 3 --simple Suppress verbose output, only show basic information --list Display a list of speedtest.net servers sorted by distance --bytes Display speeds in MBytes/s (instead of Mbit/s) + --ib Use IEC binary prefixes (MiB, etc) + http://en.wikipedia.org/wiki/Binary_prefix --server SERVER Specify a server ID to test against diff --git a/speedtest-cli b/speedtest-cli index 7fd8123..696b70f 100755 --- a/speedtest-cli +++ b/speedtest-cli @@ -291,6 +291,7 @@ def speedtest(): 'sorted by distance') parser.add_argument('--server', help='Specify a server ID to test against') parser.add_argument('--bytes', action='store_true', help='Show speed in MB per second') + parser.add_argument('--ib', action='store_true', help='Use IEC binary prefixes (MiB, etc)') options = parser.parse_args() if isinstance(options, tuple): @@ -343,8 +344,13 @@ def speedtest(): print 'Ping: %(latency)s ms' % best unit = 'bits' + size_divisor = 1000 + if args.bytes: unit = 'B' + if args.ib: + unit = 'i' + unit + size_divisor = 1024 sizes = [350, 500, 750, 1000, 1500, 2000, 2500, 3000, 3500, 4000] urls = [] @@ -358,12 +364,12 @@ def speedtest(): if not args.simple: print - dlspeed = dlspeed / 1000 / 1000 + dlspeed = dlspeed / size_divisor / size_divisor if not args.bytes: dlspeed = dlspeed * 8 print 'Download: %0.2f M%s/s' % (dlspeed, unit) - sizesizes = [int(.25 * 1000 * 1000), int(.5 * 1000 * 1000)] + sizesizes = [int(.25 * size_divisor * size_divisor), int(.5 * size_divisor * size_divisor)] sizes = [] for size in sizesizes: for i in xrange(0, 25): @@ -374,11 +380,12 @@ def speedtest(): if not args.simple: print - ulspeed = ulspeed / 1000 / 1000 + ulspeed = ulspeed / size_divisor / size_divisor if not args.bytes: ulspeed = ulspeed * 8 print 'Upload: %0.2f M%s/s' % (ulspeed, unit) + # --ib option does not affect this part if args.share: dlspeedk = int(round((dlspeed / 1000) * 8, 0)) ping = int(round(best['latency'], 0)) diff --git a/speedtest-cli-3 b/speedtest-cli-3 index e248664..2e297d9 100755 --- a/speedtest-cli-3 +++ b/speedtest-cli-3 @@ -273,6 +273,7 @@ def speedtest(): 'sorted by distance') parser.add_argument('--server', help='Specify a server ID to test against') parser.add_argument('--bytes', action='store_true', help='Show speed in MB per second') + parser.add_argument('--ib', action='store_true', help='Use IEC binary prefixes (MiB, etc)') args = parser.parse_args() if not args.simple: @@ -320,8 +321,13 @@ def speedtest(): print('Ping: %(latency)s ms' % best) unit = 'bits' + size_divisor = 1000 + if args.bytes: unit = 'B' + if args.ib: + unit = 'i' + unit + size_divisor = 1024 sizes = [350, 500, 750, 1000, 1500, 2000, 2500, 3000, 3500, 4000] urls = [] @@ -335,12 +341,12 @@ def speedtest(): if not args.simple: print() - dlspeed = dlspeed / 1000 / 1000 + dlspeed = dlspeed / size_divisor / size_divisor if not args.bytes: dlspeed = dlspeed * 8 print('Download: %0.2f M%s/s' % (dlspeed, unit)) - sizesizes = [int(.25 * 1000 * 1000), int(.5 * 1000 * 1000)] + sizesizes = [int(.25 * size_divisor * size_divisor), int(.5 * size_divisor * size_divisor)] sizes = [] for size in sizesizes: for i in range(0, 25): @@ -351,11 +357,12 @@ def speedtest(): if not args.simple: print() - ulspeed = ulspeed / 1000 / 1000 + ulspeed = ulspeed / size_divisor / size_divisor if not args.bytes: ulspeed = ulspeed * 8 print('Upload: %0.2f M%s/s' % (ulspeed, unit)) + # --ib option does not affect this part if args.share: dlspeedk = int(round((dlspeed / 1000) * 8, 0)) ping = int(round(best['latency'], 0))