mirror of
https://github.com/cwinfo/yggdrasil-go.git
synced 2024-11-27 00:41:35 +00:00
63 lines
1.6 KiB
Python
63 lines
1.6 KiB
Python
|
import glob
|
||
|
import sys
|
||
|
inputDirPath = sys.argv[1]
|
||
|
|
||
|
inputFilePaths = glob.glob(inputDirPath+"/*")
|
||
|
inputFilePaths.sort()
|
||
|
|
||
|
merged = dict()
|
||
|
|
||
|
stretches = []
|
||
|
|
||
|
total = 0
|
||
|
for inputFilePath in inputFilePaths:
|
||
|
print "Processing file {}".format(inputFilePath)
|
||
|
with open(inputFilePath, 'r') as f:
|
||
|
inData = f.readlines()
|
||
|
pathsChecked = 0.
|
||
|
avgStretch = 0.
|
||
|
for line in inData:
|
||
|
dat = line.rstrip('\n').split(' ')
|
||
|
eHops = int(dat[0])
|
||
|
nHops = int(dat[1])
|
||
|
count = int(dat[2])
|
||
|
if eHops not in merged: merged[eHops] = dict()
|
||
|
if nHops not in merged[eHops]: merged[eHops][nHops] = 0
|
||
|
merged[eHops][nHops] += count
|
||
|
total += count
|
||
|
pathsChecked += count
|
||
|
stretch = float(nHops)/eHops
|
||
|
avgStretch += stretch*count
|
||
|
finStretch = avgStretch / max(1, pathsChecked)
|
||
|
stretches.append(str(finStretch))
|
||
|
|
||
|
hopsUsed = 0.
|
||
|
hopsNeeded = 0.
|
||
|
avgStretch = 0.
|
||
|
results = []
|
||
|
for eHops in sorted(merged.keys()):
|
||
|
for nHops in sorted(merged[eHops].keys()):
|
||
|
count = merged[eHops][nHops]
|
||
|
result = "{} {} {}".format(eHops, nHops, count)
|
||
|
results.append(result)
|
||
|
hopsUsed += nHops*count
|
||
|
hopsNeeded += eHops*count
|
||
|
stretch = float(nHops)/eHops
|
||
|
avgStretch += stretch*count
|
||
|
print result
|
||
|
bandwidthUsage = hopsUsed/max(1, hopsNeeded)
|
||
|
avgStretch /= max(1, total)
|
||
|
|
||
|
with open("results.txt", "w") as f:
|
||
|
f.write('\n'.join(results))
|
||
|
|
||
|
with open("stretches.txt", "w") as f:
|
||
|
f.write('\n'.join(stretches))
|
||
|
|
||
|
print "Total files processed: {}".format(len(inputFilePaths))
|
||
|
print "Total paths found: {}".format(total)
|
||
|
print "Bandwidth usage: {}".format(bandwidthUsage)
|
||
|
print "Average stretch: {}".format(avgStretch)
|
||
|
|
||
|
|