Skip to content
Snippets Groups Projects
Commit 95f9eabf authored by Jarrod Pas's avatar Jarrod Pas
Browse files

Cleans up packet analytics

parent 7b0f70f5
No related branches found
No related tags found
1 merge request!3Version 0.2
......@@ -242,37 +242,16 @@ class PacketGenerator(TickProcess):
source.recv(packet)
yield self.env.timeout(self.start_delay)
print('starting packets')
#@DEBUG
for i in range(217):
pass
#@DEBUG
if False:
for i in range(84):
create(packet_id)
packet_id += 1
return
while True:
create(packet_id)
yield self.tick()
packet_id += 1
@property
def recieved(self):
return len([
packet
for packet in self.packets
if packet.recieved
])
@property
def recieved_count(self):
return sum([
packet.recieved_count
for packet in self.packets
])
@property
def sent(self):
return sum([
packet.sent
for packet in self.packets
])
@property
def stats(self):
stats = {}
......@@ -282,33 +261,21 @@ class PacketGenerator(TickProcess):
stats[stat] = value
else:
stats[stat] += value
stats['packets'] = len(self.packets)
stats['recieved'] = len([p for p in self.packets if p.recieved])
stats['delivery_ratio'] = stats['recieved'] / stats['packets']
stats['duplicates'] = sum([p.duplicates for p in self.packets])
stats['transmissions'] = sum([p.sent for p in self.packets])
stats['delivery_cost'] = stats['transmissions'] / stats['recieved']
return stats
@property
def paths(self):
return {
packet: packet.path
for packet in self.packets
if packet.recieved
}
@property
def total(self):
return len(self.packets)
def __str__(self):
ret = "recieved: {}/{}, delivery ratio: {}, packets: {}, sent: {}, stats: {}, path: {}".format(
self.recieved,
self.recieved_count,
self.recieved / len(self.packets),
len(self.packets),
self.sent,
self.stats,
sum([ len(path) for path in self.paths.values() ]) / self.recieved
)
ret = ''
for stat, value in sorted(self.stats.items()):
ret += f'{stat}: {value}\n'
'''
for packet, path in self.paths.items():
ret += '\n {}: {}'.format(packet, path)
for packet in self.packets:
ret += '\n {}: {}'.format(packet, packet.path)
'''
return ret
......@@ -325,12 +292,9 @@ class Packet:
self.stats = dict()
self.sent = 0
self.recieved = False
self.recieved_count = 0
self.dropped = False
self.dropped_count = 0
self.duplicates = 0
self.dropped = 0
def send(self, a, b, reason=None):
if reason is None:
......@@ -339,13 +303,13 @@ class Packet:
self.path.append((a.id, b.id, reason))
self.sent += 1
def drop(self):
self.dropped = True
self.dropped_count += 1
def recv(self):
if self.recieved:
self.duplicates += 1
self.recieved = True
self.recieved_count += 1
def drop(self):
self.dropped += 1
def __str__(self):
return "Packet(id={}, src={}, dst={})".format(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment