52 lines
1.5 KiB
Python
Executable File
52 lines
1.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import os
|
|
import sys
|
|
import subprocess
|
|
|
|
from bwparser import BandwidthParser
|
|
|
|
# Plot the bandwidth files using gnuplot
|
|
|
|
if __name__ == '__main__':
|
|
if len(sys.argv) != 2:
|
|
sys.stderr.write("Usage: outputdir\n")
|
|
sys.exit(1)
|
|
|
|
# set some defaults
|
|
bandwidth_file = os.getenv('BW_FILE')
|
|
output_dir = sys.argv[1]
|
|
output_file = output_dir + "/bw_file.pdf"
|
|
|
|
# calculate invariants
|
|
bw_parser = BandwidthParser(bw_file=bandwidth_file)
|
|
network_size = bw_parser.get_relay_num()
|
|
|
|
# Create dat files and gpcode
|
|
gpcode = """set terminal pdf font "DejaVuSans,14" size 5,2.25
|
|
set output '%s'
|
|
set title 'Bandwidth distribution'
|
|
set key out
|
|
set xlabel "Bandwidth (kB/s)"
|
|
set ylabel "Number of relays"
|
|
set xtics 100000
|
|
plot """ % (output_file)
|
|
|
|
|
|
for bw_file in bw_parser.get_files():
|
|
local_bw_parser = BandwidthParser(bw_file=bw_file)
|
|
bandwidths = local_bw_parser.get_distribution()
|
|
|
|
with open("%s.dat" % bw_file, "w") as datout:
|
|
for i in range(len(bandwidths)):
|
|
datout.write("%s %s\n" % \
|
|
(i, bandwidths[i]))
|
|
datout.close()
|
|
|
|
date_string = bw_file.split("-")[0] + "-" + bw_file.split("-")[1] + "-" + bw_file.split("-")[2]
|
|
|
|
gpcode += "'%s.dat' using 2:1 with lines title '%s'," % (bw_file, date_string)
|
|
|
|
gp = subprocess.Popen(['gnuplot', '-'], stdin=subprocess.PIPE)
|
|
gp.communicate(gpcode.encode('ascii'))
|