From 4e8ca603fe36bd216f54c1be71bdaa3a50e903fa Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Thu, 21 Jul 2016 17:54:01 -0700 Subject: [PATCH] Calculate bytes per second in network gauges // FREEBIE --- .../textsecuregcm/metrics/NetworkGauge.java | 2 +- .../metrics/NetworkReceivedGauge.java | 24 ++++++++++----- .../metrics/NetworkSentGauge.java | 30 ++++++++++++------- 3 files changed, 36 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkGauge.java b/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkGauge.java index 245d33dde..d32167867 100644 --- a/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkGauge.java +++ b/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkGauge.java @@ -9,7 +9,7 @@ import java.io.File; import java.io.FileReader; import java.io.IOException; -public abstract class NetworkGauge implements Gauge { +public abstract class NetworkGauge implements Gauge { protected Pair getSentReceived() throws IOException { File proc = new File("/proc/net/dev"); diff --git a/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkReceivedGauge.java b/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkReceivedGauge.java index 647a69c99..eda263629 100644 --- a/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkReceivedGauge.java +++ b/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkReceivedGauge.java @@ -13,23 +13,31 @@ public class NetworkReceivedGauge extends NetworkGauge { private long lastTimestamp; private long lastReceived; + public NetworkReceivedGauge() { + try { + this.lastTimestamp = System.currentTimeMillis(); + this.lastReceived = getSentReceived().second(); + } catch (IOException e) { + logger.warn(NetworkReceivedGauge.class.getSimpleName(), e); + } + } + @Override - public Long getValue() { + public Double getValue() { try { long timestamp = System.currentTimeMillis(); Pair sentAndReceived = getSentReceived(); - long result = 0; + double bytesReceived = sentAndReceived.second() - lastReceived; + double secondsElapsed = (timestamp - this.lastTimestamp) / 1000; + double result = bytesReceived / secondsElapsed; - if (lastTimestamp != 0) { - result = sentAndReceived.second() - lastReceived; - lastReceived = sentAndReceived.second(); - } + this.lastTimestamp = timestamp; + this.lastReceived = sentAndReceived.second(); - lastTimestamp = timestamp; return result; } catch (IOException e) { logger.warn("NetworkReceivedGauge", e); - return -1L; + return -1D; } } diff --git a/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkSentGauge.java b/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkSentGauge.java index 0e922a7b7..73939f933 100644 --- a/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkSentGauge.java +++ b/src/main/java/org/whispersystems/textsecuregcm/metrics/NetworkSentGauge.java @@ -13,23 +13,31 @@ public class NetworkSentGauge extends NetworkGauge { private long lastTimestamp; private long lastSent; - @Override - public Long getValue() { + public NetworkSentGauge() { try { - long timestamp = System.currentTimeMillis(); - Pair sentAndReceived = getSentReceived(); - long result = 0; + this.lastTimestamp = System.currentTimeMillis(); + this.lastSent = getSentReceived().first(); + } catch (IOException e) { + logger.warn(NetworkSentGauge.class.getSimpleName(), e); + } + } - if (lastTimestamp != 0) { - result = sentAndReceived.first() - lastSent; - lastSent = sentAndReceived.first(); - } + @Override + public Double getValue() { + try { + long timestamp = System.currentTimeMillis(); + Pair sentAndReceived = getSentReceived(); + double bytesTransmitted = sentAndReceived.first() - lastSent; + double secondsElapsed = (timestamp - this.lastTimestamp) / 1000; + double result = bytesTransmitted / secondsElapsed; + + this.lastSent = sentAndReceived.first(); + this.lastTimestamp = timestamp; - lastTimestamp = timestamp; return result; } catch (IOException e) { logger.warn("NetworkSentGauge", e); - return -1L; + return -1D; } } }