Added CSV mode

This commit is contained in:
Gonzalo Cao Cabeza de Vaca 2015-07-06 12:25:31 +02:00
parent 72da41e4fc
commit b0257ba12a
3 changed files with 43 additions and 0 deletions

View File

@ -91,6 +91,7 @@ Usage
--mini MINI URL of the Speedtest Mini server
--source SOURCE Source IP address to bind to
--timeout TIMEOUT HTTP timeout in seconds. Default 10
--csv CSV Write output to CSV file
--version Show the version number and exit
Inconsistency

View File

@ -58,6 +58,12 @@ URL of the Speedtest Mini server
Source IP address to bind to
.RE
\fB\-\-csv CSV\fR
.RS
CSV file to write to
.RE
\fB\-\-version\fR
.RS
Show the version number and exit

View File

@ -23,6 +23,8 @@ import signal
import socket
import timeit
import threading
import csv
import datetime
__version__ = '0.3.2'
@ -547,6 +549,7 @@ def speedtest():
parser.add_argument('--source', help='Source IP address to bind to')
parser.add_argument('--timeout', default=10, type=int,
help='HTTP timeout in seconds. Default 10')
parser.add_argument('--csv', help='Add data to file using csv format')
parser.add_argument('--version', action='store_true',
help='Show the version number and exit')
@ -703,6 +706,39 @@ def speedtest():
print_('Upload: %0.2f M%s/s' %
((ulspeed / 1000 / 1000) * args.units[1], args.units[0]))
if args.csv:
filename = args.csv
file_exists = os.path.isfile(filename)
try:
with open(filename, 'ab+') as csvfile:
headers = ['Test server', 'Date/Time', 'Latency (ms)',
'Dowload Speed (Kb/s)', 'Upload Speed (Kb/s)']
csvwriter = csv.DictWriter(csvfile, delimiter=';',
lineterminator='\n',fieldnames=headers)
server = '%(sponsor)s (%(name)s) [%(d)0.2f km]' % best
current_time = datetime.datetime.now().isoformat()
dlspeedk = int(round((dlspeed / 1000) * 8, 0))
ping = float(round(best['latency'], 2))
ulspeedk = int(round((ulspeed / 1000) * 8, 0))
if not file_exists:
csvwriter.writeheader()
csvwriter.writerow({'Test server': server,
'Date/Time': current_time,
'Latency': ping,
'Dowload Speed (Kb/s)': dlspeedk,
'Upload Speed (Kb/s)': ulspeedk
})
csvfile.close()
except IOError:
print_("Unable to write CSV file")
sys.exit(1)
if args.share and args.mini:
print_('Cannot generate a speedtest.net share results image while '
'testing against a Speedtest Mini server')