-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLogReader.py
49 lines (41 loc) · 1.41 KB
/
LogReader.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from Event import InjectEvent, SentEvent, ErrorEvent
class PacketEntry:
def __init__(self, packet, start, end, successful):
self.packet = packet
self.start = start
self.end = end
self.successful = successful
class LogReader:
def __init__(self, filename):
self.filename = filename
self.readLog()
def readLog(self):
self.injects = []
self.errors = []
self.algPackets = []
self.advPackets = []
def parseEntry(entry):
parts = entry.strip().split()
return float(parts[0]), parts[1], parts[2:]
lastScheduledPacket = {}
def appendPacketEntry(algorithm, time, successful):
scheduledPacketTime, scheduledPacket = lastScheduledPacket[algorithm]
packetEntry = PacketEntry(scheduledPacket, scheduledPacketTime, time, successful)
if algorithm == "ALG":
self.algPackets.append(packetEntry)
elif algorithm == "ADV":
self.advPackets.append(packetEntry)
del lastScheduledPacket[algorithm]
with open(self.filename, 'r') as log:
for entry in log:
time, event, params = parseEntry(entry)
if event == 'inject':
self.injects.append((time, float(params[0])))
elif event == 'error':
self.errors.append(time)
for algorithm in list(lastScheduledPacket.keys()):
appendPacketEntry(algorithm, time, False)
elif event == 'schedule':
lastScheduledPacket[params[0]] = time, float(params[1])
elif event == 'sent':
appendPacketEntry(params[0], time, True)