mirror of
https://gitea.invidious.io/iv-org/litespeed-quic.git
synced 2024-08-15 00:53:43 +00:00
55cd0b38b2
[FEATURE] Add qlog log module.
83 lines
1.9 KiB
Python
83 lines
1.9 KiB
Python
import time
|
|
import json
|
|
import re
|
|
import argparse
|
|
|
|
_ev_time = 0
|
|
_ev_cate = 1
|
|
_ev_type = 2
|
|
_ev_trig = 3
|
|
_ev_data = 4
|
|
_conn_base = {
|
|
'qlog_version': '0.1',
|
|
'vantagepoint': 'NETWORK',
|
|
'connectionid': '0',
|
|
'starttime': '0',
|
|
'fields': [
|
|
'time',
|
|
'category',
|
|
'type',
|
|
'trigger',
|
|
'data',
|
|
],
|
|
'events': [],
|
|
}
|
|
|
|
arg_parser = argparse.ArgumentParser(description='Test the ExploreParser.')
|
|
arg_parser.add_argument('qlog_path', type=str, help='path to QLog file')
|
|
args = arg_parser.parse_args()
|
|
|
|
try:
|
|
with open(args.qlog_path, 'r') as file:
|
|
text = file.read()
|
|
except IOError:
|
|
print('ERROR: QLog not found at given path.')
|
|
|
|
events = {}
|
|
event_times = {}
|
|
start_time = {}
|
|
|
|
qlog = {
|
|
'qlog_version': '0.1',
|
|
'description': 'test with local log file',
|
|
'connections': [],
|
|
}
|
|
|
|
lines = text.split('\n')
|
|
for line in lines:
|
|
if 'qlog' in line:
|
|
i = line.find('[QUIC:')
|
|
j = line.find(']', i)
|
|
k = line.find('qlog: ')
|
|
|
|
cid = line[i+6:j]
|
|
try:
|
|
event = json.loads(line[k+6:])
|
|
except json.JSONDecodeError:
|
|
continue
|
|
|
|
if not cid in events:
|
|
events[cid] = [event]
|
|
event_times[cid] = [event[_ev_time]]
|
|
else:
|
|
events[cid].append(event)
|
|
event_times[cid].append(event[_ev_time])
|
|
|
|
for cid, times in event_times.items():
|
|
new_events = []
|
|
start_time[cid] = min(times)
|
|
times = [t - min(times) for t in times]
|
|
for t, i in sorted(((t, i) for i, t in enumerate(times))):
|
|
events[cid][i][0] = t
|
|
new_events.append(events[cid][i])
|
|
events[cid] = new_events
|
|
|
|
for cid, event_list in events.items():
|
|
conn = _conn_base.copy()
|
|
conn['connectionid'] = cid
|
|
conn['starttime'] = start_time[cid]
|
|
conn['events'] = event_list
|
|
qlog['connections'].append(conn)
|
|
|
|
print(json.dumps(qlog, indent=2))
|
|
|