tor_multipath_voip/scripts/jantoran.py

64 lines
1.7 KiB
Python
Raw Normal View History

2020-01-13 17:01:57 +00:00
#!/usr/bin/python3
2020-01-14 11:09:52 +00:00
import os,sys,re,functools
2020-01-13 17:01:57 +00:00
2020-01-14 11:09:52 +00:00
def compute_failure(s):
it = s['current']['interval']
if it not in s['failure']: s['failure'][it] = []
s['failure'][it].append(round(s['current']['max_pkt'] * s['current']['interval'] / 1000 / 60))
2020-01-13 17:01:57 +00:00
2020-01-14 11:09:52 +00:00
def extract_measlat(log, s):
with open(log) as f:
for l in f:
x = re.search(r'Packet (\d+) latency (\d+)µs with', l)
if x:
s['current']['max_pkt'] = int(x.groups()[0])
def extract_info(inf, s):
with open(inf) as f:
full = ''.join(f.readlines())
x = re.search(r'orig-server (\d+) (\d+) \d+', full)
s['current']['npkt'] = int(x.groups()[0])
s['current']['interval'] = int(x.groups()[1])
def extract_folder(p, s):
extract_info(p + '/info.txt', s)
extract_measlat(p + '/log/client-measlat-stdout.log', s)
compute_failure(s)
def extract(p, s):
item_count = functools.reduce(lambda acc, prev: acc + 1, os.listdir(p), 0)
counter = 0
print("extracting...")
2020-01-13 17:01:57 +00:00
for folder in os.listdir(p):
2020-01-14 11:09:52 +00:00
s['current'] = {}
extract_folder(p + '/' + folder, s)
s[folder] = s['current']
counter += 1
progress = round(counter / item_count * 100)
print(f"{progress}%", end="\r")
print("done")
def analyze_failure(s):
2020-01-14 14:32:20 +00:00
with open('jan_failure.csv', 'w') as f:
f.write(f"rate,duration,ecdf\n")
for k, v in s['failure'].items():
v = sorted(v)
total = len(v)
rate = round(1000 / k)
for idx,e in enumerate(v,start=1):
if e == 90: break
f.write(f"{rate},{e},{idx/total}\n")
2020-01-14 11:09:52 +00:00
def analyze(s):
print("analyzing...")
analyze_failure(s)
state = {'failure': {}}
extract(sys.argv[1], state)
analyze(state)
2020-01-13 17:01:57 +00:00
2020-01-14 11:09:52 +00:00
#for key, value in state.items():
# print(value)