Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 38 additions & 18 deletions presentation.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,25 +44,45 @@ def collect(self):
total_loss = 0
total_jitter = 0

for item in stats_netprobe['stats']: # Expose each individual latency / loss metric for each site tested
average_latency = 0
average_loss = 0
average_jitter = 0

# Check if there are any stats before proceeding
if len(stats_netprobe['stats']) > 0:

for item in stats_netprobe['stats']:
# Safely get latency, loss, jitter, and site values with defaults if missing
latency = float(item.get('latency', 0))
loss = float(item.get('loss', 0))
jitter = float(item.get('jitter', 0))
site = item.get('site', 'unknown')

# Expose each individual latency/loss/jitter metric for each site tested
g.add_metric(['latency', site], latency)
g.add_metric(['loss', site], loss)
g.add_metric(['jitter', site], jitter)

# Aggregate totals
total_latency += latency
total_loss += loss
total_jitter += jitter

# Calculate averages
average_latency = total_latency / len(stats_netprobe['stats'])
average_loss = total_loss / len(stats_netprobe['stats'])
average_jitter = total_jitter / len(stats_netprobe['stats'])

# Add aggregated metrics for all sites
g.add_metric(['latency', 'all'], average_latency)
g.add_metric(['loss', 'all'], average_loss)
g.add_metric(['jitter', 'all'], average_jitter)

g.add_metric(['latency',item['site']],item['latency'])
g.add_metric(['loss',item['site']],item['loss'])
g.add_metric(['jitter',item['site']],item['jitter'])

for item in stats_netprobe['stats']: # Aggregate all latency / loss metrics into one

total_latency += float(item['latency'])
total_loss += float(item['loss'])
total_jitter += float(item['jitter'])

average_latency = total_latency / len(stats_netprobe['stats'])
average_loss = total_loss / len(stats_netprobe['stats'])
average_jitter = total_jitter / len(stats_netprobe['stats'])

g.add_metric(['latency','all'],average_latency)
g.add_metric(['loss','all'],average_loss)
g.add_metric(['jitter','all'],average_jitter)
else:
# If no stats are available, report zeros for the aggregated metrics
g.add_metric(['latency', 'all'], 0)
g.add_metric(['loss', 'all'], 0)
g.add_metric(['jitter', 'all'], 0)

yield g

Expand Down