Added additional unit flexibility for download/upload speeds.

This commit is contained in:
Windows81 2021-07-28 22:34:52 +00:00
parent 22210ca352
commit 8fcd4a019e
1 changed files with 36 additions and 10 deletions

View File

@ -59,6 +59,18 @@ PY25PLUS = sys.version_info[:2] >= (2, 5)
PY26PLUS = sys.version_info[:2] >= (2, 6)
PY32PLUS = sys.version_info[:2] >= (3, 2)
PY310PLUS = sys.version_info[:2] >= (3, 10)
SIZEMAP = {
"Mibyte": 8. * 1024 * 1024,
"Mbyte": 8. * 1000 * 1000,
"Mibit": 1. * 1024 * 1024,
"Mbit": 1. * 1000 * 1000,
"Kibyte": 8. * 1024,
"Kbyte": 8. * 1000,
"Kibit": 1. * 1024,
"Kbit": 1. * 1000,
"byte": 8.,
"bit": 1.,
}
# Begin import game to handle Python 2 and Python 3
try:
@ -1733,11 +1745,14 @@ def parse_args():
help='Only use a single connection instead of '
'multiple. This simulates a typical file '
'transfer.')
parser.add_argument('--bytes', dest='units', action='store_const',
const=('byte', 8), default=('bit', 1),
parser.add_argument('--bytes', default=False, action='store_true',
help='Display values in bytes instead of bits. Does '
'not affect the image generated by --share, nor '
'output from --json or --csv')
parser.add_argument('--units', choices=tuple(SIZEMAP),
help='Determines which units to display values in. Does '
'not affect the image generated by --share, nor '
'output from --json or --csv')
parser.add_argument('--share', action='store_true',
help='Generate and provide a URL to the speedtest.net '
'share results image, not displayed with --csv')
@ -1747,7 +1762,7 @@ def parse_args():
parser.add_argument('--csv', action='store_true', default=False,
help='Suppress verbose output, only show basic '
'information in CSV format. Speeds listed in '
'bit/s and not affected by --bytes')
'bit/s and not affected by --bytes or --units')
parser.add_argument('--csv-delimiter', default=',', type=PARSER_TYPE_STR,
help='Single character delimiter to use in CSV '
'output. Default ","')
@ -1756,7 +1771,7 @@ def parse_args():
parser.add_argument('--json', action='store_true', default=False,
help='Suppress verbose output, only show basic '
'information in JSON format. Speeds listed in '
'bit/s and not affected by --bytes')
'bit/s and not affected by --bytes or --units')
parser.add_argument('--list', action='store_true',
help='Display a list of speedtest.net servers '
'sorted by distance')
@ -1850,6 +1865,10 @@ def shell():
raise SpeedtestCLIError('Cannot supply both --no-download and '
'--no-upload')
if not args.bytes and not args.units:
raise SpeedtestCLIError('Cannot supply both --bytes and '
'--units')
if len(args.csv_delimiter) != 1:
raise SpeedtestCLIError('--csv-delimiter must be a single character')
@ -1864,6 +1883,13 @@ def shell():
if debug:
DEBUG = True
if args.bytes:
units = 'Mbyte'
elif args.units:
units = args.units
else:
units = 'Mbit'
if args.simple or args.csv or args.json:
quiet = True
else:
@ -1951,9 +1977,9 @@ def shell():
callback=callback,
threads=(None, 1)[args.single]
)
printer('Download: %0.2f M%s/s' %
((results.download / 1000.0 / 1000.0) / args.units[1],
args.units[0]),
printer('Download: %0.2f %s/s' %
(results.download / SIZEMAP[units],
units),
quiet)
else:
printer('Skipping download test', quiet)
@ -1966,9 +1992,9 @@ def shell():
pre_allocate=args.pre_allocate,
threads=(None, 1)[args.single]
)
printer('Upload: %0.2f M%s/s' %
((results.upload / 1000.0 / 1000.0) / args.units[1],
args.units[0]),
printer('Upload: %0.2f %s/s' %
(results.upload / SIZEMAP[units],
units),
quiet)
else:
printer('Skipping upload test', quiet)