Merge 0621c29189 into 22210ca352
This commit is contained in:
commit
44bb7c036f
61
README.rst
61
README.rst
|
|
@ -17,7 +17,7 @@ speedtest.net
|
|||
Versions
|
||||
--------
|
||||
|
||||
speedtest-cli works with Python 2.4-3.7
|
||||
speedtest-cli works with Python 2.4-3.12
|
||||
|
||||
.. image:: https://img.shields.io/pypi/pyversions/speedtest-cli.svg
|
||||
:target: https://pypi.python.org/pypi/speedtest-cli/
|
||||
|
|
@ -75,54 +75,37 @@ Usage
|
|||
::
|
||||
|
||||
$ speedtest-cli -h
|
||||
usage: speedtest-cli [-h] [--no-download] [--no-upload] [--single] [--bytes]
|
||||
[--share] [--simple] [--csv]
|
||||
[--csv-delimiter CSV_DELIMITER] [--csv-header] [--json]
|
||||
[--list] [--server SERVER] [--exclude EXCLUDE]
|
||||
[--mini MINI] [--source SOURCE] [--timeout TIMEOUT]
|
||||
[--secure] [--no-pre-allocate] [--version]
|
||||
|
||||
Command line interface for testing internet bandwidth using speedtest.net.
|
||||
--------------------------------------------------------------------------
|
||||
usage: speedtest.py [-h] [--no-download] [--no-upload] [--single] [--bytes] [--units {Mibyte,Mbyte,Mibit,Mbit,Kibyte,Kbyte,Kibit,Kbit,byte,bit}] [--share]
|
||||
[--simple] [--csv] [--csv-delimiter CSV_DELIMITER] [--csv-header] [--json] [--list] [--server SERVER] [--exclude EXCLUDE] [--mini MINI]
|
||||
[--source SOURCE] [--timeout TIMEOUT] [--secure] [--no-pre-allocate] [--version]
|
||||
|
||||
Command line interface for testing internet bandwidth using speedtest.net. --------------------------------------------------------------------------
|
||||
https://github.com/sivel/speedtest-cli
|
||||
|
||||
optional arguments:
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--no-download Do not perform download test
|
||||
--no-upload Do not perform upload test
|
||||
--single Only use a single connection instead of multiple. This
|
||||
simulates a typical file transfer.
|
||||
--bytes Display values in bytes instead of bits. Does not
|
||||
affect the image generated by --share, nor output from
|
||||
--json or --csv
|
||||
--share Generate and provide a URL to the speedtest.net share
|
||||
results image, not displayed with --csv
|
||||
--single Only use a single connection instead of multiple. This simulates a typical file transfer.
|
||||
--bytes Display values in bytes instead of bits. Does not affect the image generated by --share, nor output from --json or --csv
|
||||
--units {Mibyte,Mbyte,Mibit,Mbit,Kibyte,Kbyte,Kibit,Kbit,byte,bit}
|
||||
Determines which units to display values in. Does not affect the image generated by --share, nor output from --json or --csv
|
||||
--share Generate and provide a URL to the speedtest.net share results image, not displayed with --csv
|
||||
--simple Suppress verbose output, only show basic information
|
||||
--csv Suppress verbose output, only show basic information
|
||||
in CSV format. Speeds listed in bit/s and not affected
|
||||
by --bytes
|
||||
--csv Suppress verbose output, only show basic information in CSV format. Speeds listed in bit/s and not affected by --bytes or --units
|
||||
--csv-delimiter CSV_DELIMITER
|
||||
Single character delimiter to use in CSV output.
|
||||
Default ","
|
||||
Single character delimiter to use in CSV output. Default ","
|
||||
--csv-header Print CSV headers
|
||||
--json Suppress verbose output, only show basic information
|
||||
in JSON format. Speeds listed in bit/s and not
|
||||
affected by --bytes
|
||||
--list Display a list of speedtest.net servers sorted by
|
||||
distance
|
||||
--server SERVER Specify a server ID to test against. Can be supplied
|
||||
multiple times
|
||||
--exclude EXCLUDE Exclude a server from selection. Can be supplied
|
||||
multiple times
|
||||
--json Suppress verbose output, only show basic information in JSON format. Speeds listed in bit/s and not affected by --bytes or --units
|
||||
--list Display a list of speedtest.net servers sorted by distance
|
||||
--server SERVER Specify a server ID to test against. Can be supplied multiple times
|
||||
--exclude EXCLUDE Exclude a server from selection. Can be supplied multiple times
|
||||
--mini MINI URL of the Speedtest Mini server
|
||||
--source SOURCE Source IP address to bind to
|
||||
--timeout TIMEOUT HTTP timeout in seconds. Default 10
|
||||
--secure Use HTTPS instead of HTTP when communicating with
|
||||
speedtest.net operated servers
|
||||
--no-pre-allocate Do not pre allocate upload data. Pre allocation is
|
||||
enabled by default to improve upload performance. To
|
||||
support systems with insufficient memory, use this
|
||||
option to avoid a MemoryError
|
||||
--secure Use HTTPS instead of HTTP when communicating with speedtest.net operated servers
|
||||
--no-pre-allocate Do not pre allocate upload data. Pre allocation is enabled by default to improve upload performance. To support systems with
|
||||
insufficient memory, use this option to avoid a MemoryError
|
||||
--version Show the version number and exit
|
||||
|
||||
|
||||
|
|
|
|||
48
speedtest.py
48
speedtest.py
|
|
@ -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:
|
||||
|
|
@ -957,7 +969,7 @@ class SpeedtestResults(object):
|
|||
self.client = client or {}
|
||||
|
||||
self._share = None
|
||||
self.timestamp = '%sZ' % datetime.datetime.utcnow().isoformat()
|
||||
self.timestamp = '%sZ' % datetime.datetime.now(datetime.UTC).isoformat()
|
||||
self.bytes_received = 0
|
||||
self.bytes_sent = 0
|
||||
|
||||
|
|
@ -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 args.bytes and 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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue