From 0b5b16e97c37c47a99aab8c33e41a7807c02db73 Mon Sep 17 00:00:00 2001 From: guyben Date: Wed, 4 Oct 2017 11:30:33 -0700 Subject: [PATCH] Allow EventSample.record to accept numSamples=0 There's really no reason not to. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=171037754 --- .../monitoring/metrics/MutableDistribution.java | 10 ++++++++-- .../monitoring/metrics/MutableDistributionTest.java | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/java/google/registry/monitoring/metrics/MutableDistribution.java b/java/google/registry/monitoring/metrics/MutableDistribution.java index 4803e4e1c..932fd684e 100644 --- a/java/google/registry/monitoring/metrics/MutableDistribution.java +++ b/java/google/registry/monitoring/metrics/MutableDistribution.java @@ -41,7 +41,7 @@ public final class MutableDistribution implements Distribution { private final DistributionFitter distributionFitter; private double sumOfSquaredDeviation = 0.0; private double mean = 0.0; - private int count = 0; + private long count = 0; /** Constructs an empty Distribution with the specified {@link DistributionFitter}. */ public MutableDistribution(DistributionFitter distributionFitter) { @@ -70,9 +70,15 @@ public final class MutableDistribution implements Distribution { } public void add(double value, long numSamples) { - checkArgument(numSamples > 0, "numSamples must be greater than 0"); + checkArgument(numSamples >= 0, "numSamples must be non-negative"); checkDouble(value); + // having numSamples = 0 works as expected (does nothing) even if we let it continue, but we + // can short-circuit it by returning early. + if (numSamples == 0) { + return; + } + Map.Entry, Long> entry = intervalCounts.getEntry(value); intervalCounts.put(entry.getKey(), entry.getValue() + numSamples); this.count += numSamples; diff --git a/javatests/google/registry/monitoring/metrics/MutableDistributionTest.java b/javatests/google/registry/monitoring/metrics/MutableDistributionTest.java index 4da8c4868..d87f75f42 100644 --- a/javatests/google/registry/monitoring/metrics/MutableDistributionTest.java +++ b/javatests/google/registry/monitoring/metrics/MutableDistributionTest.java @@ -109,6 +109,7 @@ public class MutableDistributionTest { distribution.add(2.0); distribution.add(16.0); distribution.add(128.0, 5); + distribution.add(1024.0, 0); assertThat(distribution.count()).isEqualTo(7); assertThat(distribution.mean()).isWithin(0.0).of(94.0);