Switch upload pre-allocation to true, but allow disabling
This commit is contained in:
parent
401c469991
commit
2c89c53a79
|
@ -78,7 +78,7 @@ Usage
|
||||||
[--simple] [--csv] [--csv-delimiter CSV_DELIMITER]
|
[--simple] [--csv] [--csv-delimiter CSV_DELIMITER]
|
||||||
[--csv-header] [--json] [--list] [--server SERVER]
|
[--csv-header] [--json] [--list] [--server SERVER]
|
||||||
[--mini MINI] [--source SOURCE] [--timeout TIMEOUT]
|
[--mini MINI] [--source SOURCE] [--timeout TIMEOUT]
|
||||||
[--secure] [--version]
|
[--secure] [--no-pre-allocate] [--version]
|
||||||
|
|
||||||
Command line interface for testing internet bandwidth using speedtest.net.
|
Command line interface for testing internet bandwidth using speedtest.net.
|
||||||
--------------------------------------------------------------------------
|
--------------------------------------------------------------------------
|
||||||
|
@ -112,6 +112,10 @@ Usage
|
||||||
--timeout TIMEOUT HTTP timeout in seconds. Default 10
|
--timeout TIMEOUT HTTP timeout in seconds. Default 10
|
||||||
--secure Use HTTPS instead of HTTP when communicating with
|
--secure Use HTTPS instead of HTTP when communicating with
|
||||||
speedtest.net operated servers
|
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
|
--version Show the version number and exit
|
||||||
|
|
||||||
|
|
||||||
|
|
24
speedtest.py
24
speedtest.py
|
@ -542,7 +542,7 @@ class HTTPUploaderData(object):
|
||||||
|
|
||||||
self.total = [0]
|
self.total = [0]
|
||||||
|
|
||||||
def _create_data(self):
|
def pre_allocate(self):
|
||||||
chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||||
multiplier = int(round(int(self.length) / 36.0))
|
multiplier = int(round(int(self.length) / 36.0))
|
||||||
IO = BytesIO or StringIO
|
IO = BytesIO or StringIO
|
||||||
|
@ -555,7 +555,7 @@ class HTTPUploaderData(object):
|
||||||
@property
|
@property
|
||||||
def data(self):
|
def data(self):
|
||||||
if not self._data:
|
if not self._data:
|
||||||
self._create_data()
|
self.pre_allocate()
|
||||||
return self._data
|
return self._data
|
||||||
|
|
||||||
def read(self, n=10240):
|
def read(self, n=10240):
|
||||||
|
@ -1130,7 +1130,7 @@ class Speedtest(object):
|
||||||
self.config['threads']['upload'] = 8
|
self.config['threads']['upload'] = 8
|
||||||
return self.results.download
|
return self.results.download
|
||||||
|
|
||||||
def upload(self, callback=do_nothing):
|
def upload(self, callback=do_nothing, pre_allocate=True):
|
||||||
"""Test upload speed against speedtest.net"""
|
"""Test upload speed against speedtest.net"""
|
||||||
|
|
||||||
sizes = []
|
sizes = []
|
||||||
|
@ -1146,13 +1146,12 @@ class Speedtest(object):
|
||||||
for i, size in enumerate(sizes):
|
for i, size in enumerate(sizes):
|
||||||
# We set ``0`` for ``start`` and handle setting the actual
|
# We set ``0`` for ``start`` and handle setting the actual
|
||||||
# ``start`` in ``HTTPUploader`` to get better measurements
|
# ``start`` in ``HTTPUploader`` to get better measurements
|
||||||
|
data = HTTPUploaderData(size, 0, self.config['length']['upload'])
|
||||||
|
if pre_allocate:
|
||||||
|
data.pre_allocate()
|
||||||
requests.append(
|
requests.append(
|
||||||
(
|
(
|
||||||
build_request(
|
build_request(self.best['url'], data),
|
||||||
self.best['url'],
|
|
||||||
HTTPUploaderData(size, 0,
|
|
||||||
self.config['length']['upload'])
|
|
||||||
),
|
|
||||||
size
|
size
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -1279,6 +1278,13 @@ def parse_args():
|
||||||
parser.add_argument('--secure', action='store_true',
|
parser.add_argument('--secure', action='store_true',
|
||||||
help='Use HTTPS instead of HTTP when communicating '
|
help='Use HTTPS instead of HTTP when communicating '
|
||||||
'with speedtest.net operated servers')
|
'with speedtest.net operated servers')
|
||||||
|
parser.add_argument('--no-pre-allocate', dest='pre_allocate',
|
||||||
|
action='store_const', default=True, const=False,
|
||||||
|
help='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')
|
||||||
parser.add_argument('--version', action='store_true',
|
parser.add_argument('--version', action='store_true',
|
||||||
help='Show the version number and exit')
|
help='Show the version number and exit')
|
||||||
parser.add_argument('--debug', action='store_true',
|
parser.add_argument('--debug', action='store_true',
|
||||||
|
@ -1457,7 +1463,7 @@ def shell():
|
||||||
if args.upload:
|
if args.upload:
|
||||||
printer('Testing upload speed', quiet,
|
printer('Testing upload speed', quiet,
|
||||||
end=('', '\n')[bool(debug)])
|
end=('', '\n')[bool(debug)])
|
||||||
speedtest.upload(callback=callback)
|
speedtest.upload(callback=callback, pre_allocate=args.pre_allocate)
|
||||||
printer('Upload: %0.2f M%s/s' %
|
printer('Upload: %0.2f M%s/s' %
|
||||||
((results.upload / 1000.0 / 1000.0) / args.units[1],
|
((results.upload / 1000.0 / 1000.0) / args.units[1],
|
||||||
args.units[0]),
|
args.units[0]),
|
||||||
|
|
Loading…
Reference in New Issue