commit bd2c7af771a64dd393970e2e483c59778b32dbfc Author: Karsten Loesing karsten.loesing@gmx.net Date: Mon Jan 15 11:12:51 2018 +0100
Fix off-by-one bug in writing history documents.
When we consider a history interval from start to end, we really mean the interval [start, end[. Fixing a few off-by-one bugs in the code. --- .../java/org/torproject/onionoo/writer/BandwidthDocumentWriter.java | 4 ++-- .../java/org/torproject/onionoo/writer/ClientsDocumentWriter.java | 4 ++-- src/main/java/org/torproject/onionoo/writer/UptimeDocumentWriter.java | 4 ++-- .../java/org/torproject/onionoo/writer/WeightsDocumentWriter.java | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/src/main/java/org/torproject/onionoo/writer/BandwidthDocumentWriter.java b/src/main/java/org/torproject/onionoo/writer/BandwidthDocumentWriter.java index 99a5a00..f1c5041 100644 --- a/src/main/java/org/torproject/onionoo/writer/BandwidthDocumentWriter.java +++ b/src/main/java/org/torproject/onionoo/writer/BandwidthDocumentWriter.java @@ -111,7 +111,7 @@ public class BandwidthDocumentWriter implements DocumentWriter { long totalBandwidth = 0L; for (long[] v : history.values()) { long endMillis = v[1]; - if (endMillis < intervalStartMillis) { + if (endMillis <= intervalStartMillis) { continue; } else if (endMillis > graphEndMillis) { break; @@ -124,7 +124,7 @@ public class BandwidthDocumentWriter implements DocumentWriter { continue; } while ((intervalStartMillis / dataPointInterval) - != (endMillis / dataPointInterval)) { + != ((endMillis - 1L) / dataPointInterval)) { dataPoints.add(totalMillis * 5L < dataPointInterval ? -1L : (totalBandwidth * DateTimeHelper.ONE_SECOND) / totalMillis); diff --git a/src/main/java/org/torproject/onionoo/writer/ClientsDocumentWriter.java b/src/main/java/org/torproject/onionoo/writer/ClientsDocumentWriter.java index 834df9c..81168f5 100644 --- a/src/main/java/org/torproject/onionoo/writer/ClientsDocumentWriter.java +++ b/src/main/java/org/torproject/onionoo/writer/ClientsDocumentWriter.java @@ -140,13 +140,13 @@ public class ClientsDocumentWriter implements DocumentWriter { long millis = 0L; double responses = 0.0; for (ClientsHistory hist : history) { - if (hist.getEndMillis() < intervalStartMillis) { + if (hist.getEndMillis() <= intervalStartMillis) { continue; } else if (hist.getEndMillis() > graphEndMillis) { break; } while ((intervalStartMillis / dataPointInterval) - != (hist.getEndMillis() / dataPointInterval)) { + != ((hist.getEndMillis() - 1L) / dataPointInterval)) { dataPoints.add(millis * 2L < dataPointInterval ? -1.0 : responses * ((double) DateTimeHelper.ONE_DAY) / (((double) millis) * 10.0)); diff --git a/src/main/java/org/torproject/onionoo/writer/UptimeDocumentWriter.java b/src/main/java/org/torproject/onionoo/writer/UptimeDocumentWriter.java index f739b9e..2aee7a1 100644 --- a/src/main/java/org/torproject/onionoo/writer/UptimeDocumentWriter.java +++ b/src/main/java/org/torproject/onionoo/writer/UptimeDocumentWriter.java @@ -175,7 +175,7 @@ public class UptimeDocumentWriter implements DocumentWriter { } long histEndMillis = hist.getStartMillis() + DateTimeHelper.ONE_HOUR * hist.getUptimeHours(); - if (histEndMillis < intervalStartMillis) { + if (histEndMillis <= intervalStartMillis) { continue; } else if (histEndMillis > graphEndMillis) { histEndMillis = graphEndMillis; @@ -218,7 +218,7 @@ public class UptimeDocumentWriter implements DocumentWriter { } long histEndMillis = hist.getStartMillis() + DateTimeHelper.ONE_HOUR * hist.getUptimeHours(); - if (histEndMillis < intervalStartMillis) { + if (histEndMillis <= intervalStartMillis) { continue; } else if (histEndMillis > graphEndMillis) { histEndMillis = graphEndMillis; diff --git a/src/main/java/org/torproject/onionoo/writer/WeightsDocumentWriter.java b/src/main/java/org/torproject/onionoo/writer/WeightsDocumentWriter.java index ad54fea..10d8a94 100644 --- a/src/main/java/org/torproject/onionoo/writer/WeightsDocumentWriter.java +++ b/src/main/java/org/torproject/onionoo/writer/WeightsDocumentWriter.java @@ -132,13 +132,13 @@ public class WeightsDocumentWriter implements DocumentWriter { long startMillis = e.getKey()[0]; long endMillis = e.getKey()[1]; double weight = e.getValue()[graphTypeIndex]; - if (endMillis < intervalStartMillis) { + if (endMillis <= intervalStartMillis) { continue; } else if (endMillis > graphEndMillis) { break; } while ((intervalStartMillis / dataPointInterval) - != (endMillis / dataPointInterval)) { + != ((endMillis - 1L) / dataPointInterval)) { dataPoints.add(totalMillis * 5L < dataPointInterval ? -1.0 : totalWeightTimesMillis / (double) totalMillis); totalWeightTimesMillis = 0.0;
tor-commits@lists.torproject.org