From 271c692b71a9fad67cffb19f8f4f9b7afe6ec244 Mon Sep 17 00:00:00 2001 From: Xian55 <367101+Xian55@users.noreply.github.com> Date: Thu, 26 Sep 2024 23:53:52 +0200 Subject: [PATCH 1/2] Fix: Division by 0 issue in presentation --- presentation.py | 52 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/presentation.py b/presentation.py index ded96be..4fa9a91 100644 --- a/presentation.py +++ b/presentation.py @@ -44,25 +44,41 @@ 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 + # 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 From 32019cd62504910e69e82475dc95a8fb3a680dca Mon Sep 17 00:00:00 2001 From: Xian55 <367101+Xian55@users.noreply.github.com> Date: Sun, 29 Sep 2024 19:59:19 +0200 Subject: [PATCH 2/2] init average values --- presentation.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/presentation.py b/presentation.py index 4fa9a91..23988c0 100644 --- a/presentation.py +++ b/presentation.py @@ -44,6 +44,10 @@ def collect(self): total_loss = 0 total_jitter = 0 + average_latency = 0 + average_loss = 0 + average_jitter = 0 + # Check if there are any stats before proceeding if len(stats_netprobe['stats']) > 0: