aboutsummaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
authorYang Song <songy23@users.noreply.github.com>2018-04-27 14:47:12 -0700
committerGitHub <noreply@github.com>2018-04-27 14:47:12 -0700
commitdec25072b4b7671a8ff35f0a121b41eddff5f66f (patch)
treef395d21ddce7c2889c987cd46c0bbdcdc469b089 /api
parent4e62aac18595243b9ed4c98137c24e7413c1dc48 (diff)
downloadopencensus-java-dec25072b4b7671a8ff35f0a121b41eddff5f66f.tar.gz
Add Aggregation.LastValue and AggregationData.LastValueData to support Gauge (#1055)
* Add LastValue and LastValueData * Support LastValue and LastValueData in impl * Use Utils instead of Precondition * Add LastValue and remove Mean from match() method. * Support LastValue and LastValueData in exporters and zpages. * Update MutableLastValue, add comments on why Mean is still supported.
Diffstat (limited to 'api')
-rw-r--r--api/src/main/java/io/opencensus/stats/Aggregation.java85
-rw-r--r--api/src/main/java/io/opencensus/stats/AggregationData.java157
-rw-r--r--api/src/main/java/io/opencensus/stats/ViewData.java52
-rw-r--r--api/src/test/java/io/opencensus/stats/AggregationDataTest.java31
-rw-r--r--api/src/test/java/io/opencensus/stats/AggregationTest.java39
-rw-r--r--api/src/test/java/io/opencensus/stats/ViewDataTest.java19
6 files changed, 223 insertions, 160 deletions
diff --git a/api/src/main/java/io/opencensus/stats/Aggregation.java b/api/src/main/java/io/opencensus/stats/Aggregation.java
index e8579c33..f5efed9b 100644
--- a/api/src/main/java/io/opencensus/stats/Aggregation.java
+++ b/api/src/main/java/io/opencensus/stats/Aggregation.java
@@ -25,12 +25,13 @@ import javax.annotation.concurrent.Immutable;
* {@link Aggregation} is the process of combining a certain set of {@code MeasureValue}s for a
* given {@code Measure} into an {@link AggregationData}.
*
- * <p>{@link Aggregation} currently supports 3 types of basic aggregation:
+ * <p>{@link Aggregation} currently supports 4 types of basic aggregation:
*
* <ul>
* <li>Sum
* <li>Count
* <li>Distribution
+ * <li>LastValue
* </ul>
*
* <p>When creating a {@link View}, one {@link Aggregation} needs to be specified as how to
@@ -46,27 +47,13 @@ public abstract class Aggregation {
/**
* Applies the given match function to the underlying data type.
*
- * @since 0.8
- * @deprecated in favor of {@link #match(Function, Function, Function, Function)}.
- */
- @Deprecated
- public abstract <T> T match(
- Function<? super Sum, T> p0,
- Function<? super Count, T> p1,
- Function<? super Mean, T> p2,
- Function<? super Distribution, T> p3,
- Function<? super Aggregation, T> defaultFunction);
-
- /**
- * Applies the given match function to the underlying data type.
- *
* @since 0.13
*/
- @SuppressWarnings("InconsistentOverloads")
public abstract <T> T match(
Function<? super Sum, T> p0,
Function<? super Count, T> p1,
Function<? super Distribution, T> p2,
+ Function<? super LastValue, T> p3,
Function<? super Aggregation, T> defaultFunction);
/**
@@ -96,17 +83,8 @@ public abstract class Aggregation {
public final <T> T match(
Function<? super Sum, T> p0,
Function<? super Count, T> p1,
- Function<? super Mean, T> p2,
- Function<? super Distribution, T> p3,
- Function<? super Aggregation, T> defaultFunction) {
- return p0.apply(this);
- }
-
- @Override
- public final <T> T match(
- Function<? super Sum, T> p0,
- Function<? super Count, T> p1,
Function<? super Distribution, T> p2,
+ Function<? super LastValue, T> p3,
Function<? super Aggregation, T> defaultFunction) {
return p0.apply(this);
}
@@ -139,17 +117,8 @@ public abstract class Aggregation {
public final <T> T match(
Function<? super Sum, T> p0,
Function<? super Count, T> p1,
- Function<? super Mean, T> p2,
- Function<? super Distribution, T> p3,
- Function<? super Aggregation, T> defaultFunction) {
- return p1.apply(this);
- }
-
- @Override
- public final <T> T match(
- Function<? super Sum, T> p0,
- Function<? super Count, T> p1,
Function<? super Distribution, T> p2,
+ Function<? super LastValue, T> p3,
Function<? super Aggregation, T> defaultFunction) {
return p1.apply(this);
}
@@ -185,17 +154,8 @@ public abstract class Aggregation {
public final <T> T match(
Function<? super Sum, T> p0,
Function<? super Count, T> p1,
- Function<? super Mean, T> p2,
- Function<? super Distribution, T> p3,
- Function<? super Aggregation, T> defaultFunction) {
- return p2.apply(this);
- }
-
- @Override
- public final <T> T match(
- Function<? super Sum, T> p0,
- Function<? super Count, T> p1,
Function<? super Distribution, T> p2,
+ Function<? super LastValue, T> p3,
Function<? super Aggregation, T> defaultFunction) {
return defaultFunction.apply(this);
}
@@ -236,10 +196,34 @@ public abstract class Aggregation {
public final <T> T match(
Function<? super Sum, T> p0,
Function<? super Count, T> p1,
- Function<? super Mean, T> p2,
- Function<? super Distribution, T> p3,
+ Function<? super Distribution, T> p2,
+ Function<? super LastValue, T> p3,
Function<? super Aggregation, T> defaultFunction) {
- return p3.apply(this);
+ return p2.apply(this);
+ }
+ }
+
+ /**
+ * Calculate the last value of aggregated {@code MeasureValue}s.
+ *
+ * @since 0.13
+ */
+ @Immutable
+ @AutoValue
+ public abstract static class LastValue extends Aggregation {
+
+ LastValue() {}
+
+ private static final LastValue INSTANCE = new AutoValue_Aggregation_LastValue();
+
+ /**
+ * Construct a {@code LastValue}.
+ *
+ * @return a new {@code LastValue}.
+ * @since 0.13
+ */
+ public static LastValue create() {
+ return INSTANCE;
}
@Override
@@ -247,8 +231,9 @@ public abstract class Aggregation {
Function<? super Sum, T> p0,
Function<? super Count, T> p1,
Function<? super Distribution, T> p2,
+ Function<? super LastValue, T> p3,
Function<? super Aggregation, T> defaultFunction) {
- return p2.apply(this);
+ return p3.apply(this);
}
}
}
diff --git a/api/src/main/java/io/opencensus/stats/AggregationData.java b/api/src/main/java/io/opencensus/stats/AggregationData.java
index 716e97d8..95ac3282 100644
--- a/api/src/main/java/io/opencensus/stats/AggregationData.java
+++ b/api/src/main/java/io/opencensus/stats/AggregationData.java
@@ -28,13 +28,15 @@ import javax.annotation.concurrent.Immutable;
* {@link AggregationData} is the result of applying a given {@link Aggregation} to a set of {@code
* MeasureValue}s.
*
- * <p>{@link AggregationData} currently supports 4 types of basic aggregation values:
+ * <p>{@link AggregationData} currently supports 6 types of basic aggregation values:
*
* <ul>
* <li>SumDataDouble
* <li>SumDataLong
* <li>CountData
* <li>DistributionData
+ * <li>LastValueDataDouble
+ * <li>LastValueDataLong
* </ul>
*
* <p>{@link ViewData} will contain one {@link AggregationData}, corresponding to its {@link
@@ -50,29 +52,15 @@ public abstract class AggregationData {
/**
* Applies the given match function to the underlying data type.
*
- * @since 0.8
- * @deprecated in favor of {@link #match(Function, Function, Function, Function, Function)}.
- */
- @Deprecated
- public abstract <T> T match(
- Function<? super SumDataDouble, T> p0,
- Function<? super SumDataLong, T> p1,
- Function<? super CountData, T> p2,
- Function<? super MeanData, T> p3,
- Function<? super DistributionData, T> p4,
- Function<? super AggregationData, T> defaultFunction);
-
- /**
- * Applies the given match function to the underlying data type.
- *
* @since 0.13
*/
- @SuppressWarnings("InconsistentOverloads")
public abstract <T> T match(
Function<? super SumDataDouble, T> p0,
Function<? super SumDataLong, T> p1,
Function<? super CountData, T> p2,
Function<? super DistributionData, T> p3,
+ Function<? super LastValueDataDouble, T> p4,
+ Function<? super LastValueDataLong, T> p5,
Function<? super AggregationData, T> defaultFunction);
/**
@@ -110,18 +98,9 @@ public abstract class AggregationData {
Function<? super SumDataDouble, T> p0,
Function<? super SumDataLong, T> p1,
Function<? super CountData, T> p2,
- Function<? super MeanData, T> p3,
- Function<? super DistributionData, T> p4,
- Function<? super AggregationData, T> defaultFunction) {
- return p0.apply(this);
- }
-
- @Override
- public final <T> T match(
- Function<? super SumDataDouble, T> p0,
- Function<? super SumDataLong, T> p1,
- Function<? super CountData, T> p2,
Function<? super DistributionData, T> p3,
+ Function<? super LastValueDataDouble, T> p4,
+ Function<? super LastValueDataLong, T> p5,
Function<? super AggregationData, T> defaultFunction) {
return p0.apply(this);
}
@@ -162,18 +141,9 @@ public abstract class AggregationData {
Function<? super SumDataDouble, T> p0,
Function<? super SumDataLong, T> p1,
Function<? super CountData, T> p2,
- Function<? super MeanData, T> p3,
- Function<? super DistributionData, T> p4,
- Function<? super AggregationData, T> defaultFunction) {
- return p1.apply(this);
- }
-
- @Override
- public final <T> T match(
- Function<? super SumDataDouble, T> p0,
- Function<? super SumDataLong, T> p1,
- Function<? super CountData, T> p2,
Function<? super DistributionData, T> p3,
+ Function<? super LastValueDataDouble, T> p4,
+ Function<? super LastValueDataLong, T> p5,
Function<? super AggregationData, T> defaultFunction) {
return p1.apply(this);
}
@@ -214,18 +184,9 @@ public abstract class AggregationData {
Function<? super SumDataDouble, T> p0,
Function<? super SumDataLong, T> p1,
Function<? super CountData, T> p2,
- Function<? super MeanData, T> p3,
- Function<? super DistributionData, T> p4,
- Function<? super AggregationData, T> defaultFunction) {
- return p2.apply(this);
- }
-
- @Override
- public final <T> T match(
- Function<? super SumDataDouble, T> p0,
- Function<? super SumDataLong, T> p1,
- Function<? super CountData, T> p2,
Function<? super DistributionData, T> p3,
+ Function<? super LastValueDataDouble, T> p4,
+ Function<? super LastValueDataLong, T> p5,
Function<? super AggregationData, T> defaultFunction) {
return p2.apply(this);
}
@@ -278,18 +239,9 @@ public abstract class AggregationData {
Function<? super SumDataDouble, T> p0,
Function<? super SumDataLong, T> p1,
Function<? super CountData, T> p2,
- Function<? super MeanData, T> p3,
- Function<? super DistributionData, T> p4,
- Function<? super AggregationData, T> defaultFunction) {
- return p3.apply(this);
- }
-
- @Override
- public final <T> T match(
- Function<? super SumDataDouble, T> p0,
- Function<? super SumDataLong, T> p1,
- Function<? super CountData, T> p2,
Function<? super DistributionData, T> p3,
+ Function<? super LastValueDataDouble, T> p4,
+ Function<? super LastValueDataLong, T> p5,
Function<? super AggregationData, T> defaultFunction) {
return defaultFunction.apply(this);
}
@@ -394,11 +346,86 @@ public abstract class AggregationData {
Function<? super SumDataDouble, T> p0,
Function<? super SumDataLong, T> p1,
Function<? super CountData, T> p2,
- Function<? super MeanData, T> p3,
- Function<? super DistributionData, T> p4,
+ Function<? super DistributionData, T> p3,
+ Function<? super LastValueDataDouble, T> p4,
+ Function<? super LastValueDataLong, T> p5,
+ Function<? super AggregationData, T> defaultFunction) {
+ return p3.apply(this);
+ }
+ }
+
+ /**
+ * The last value of aggregated {@code MeasureValueDouble}s.
+ *
+ * @since 0.13
+ */
+ @Immutable
+ @AutoValue
+ public abstract static class LastValueDataDouble extends AggregationData {
+
+ LastValueDataDouble() {}
+
+ /**
+ * Creates a {@code LastValueDataDouble}.
+ *
+ * @param lastValue the last value.
+ * @return a {@code LastValueDataDouble}.
+ * @since 0.13
+ */
+ public static LastValueDataDouble create(double lastValue) {
+ return new AutoValue_AggregationData_LastValueDataDouble(lastValue);
+ }
+
+ /**
+ * Returns the last value.
+ *
+ * @return the last value.
+ * @since 0.13
+ */
+ public abstract double getLastValue();
+
+ @Override
+ public final <T> T match(
+ Function<? super SumDataDouble, T> p0,
+ Function<? super SumDataLong, T> p1,
+ Function<? super CountData, T> p2,
+ Function<? super DistributionData, T> p3,
+ Function<? super LastValueDataDouble, T> p4,
+ Function<? super LastValueDataLong, T> p5,
Function<? super AggregationData, T> defaultFunction) {
return p4.apply(this);
}
+ }
+
+ /**
+ * The last value of aggregated {@code MeasureValueLong}s.
+ *
+ * @since 0.13
+ */
+ @Immutable
+ @AutoValue
+ public abstract static class LastValueDataLong extends AggregationData {
+
+ LastValueDataLong() {}
+
+ /**
+ * Creates a {@code LastValueDataLong}.
+ *
+ * @param lastValue the last value.
+ * @return a {@code LastValueDataLong}.
+ * @since 0.13
+ */
+ public static LastValueDataLong create(long lastValue) {
+ return new AutoValue_AggregationData_LastValueDataLong(lastValue);
+ }
+
+ /**
+ * Returns the last value.
+ *
+ * @return the last value.
+ * @since 0.13
+ */
+ public abstract long getLastValue();
@Override
public final <T> T match(
@@ -406,8 +433,10 @@ public abstract class AggregationData {
Function<? super SumDataLong, T> p1,
Function<? super CountData, T> p2,
Function<? super DistributionData, T> p3,
+ Function<? super LastValueDataDouble, T> p4,
+ Function<? super LastValueDataLong, T> p5,
Function<? super AggregationData, T> defaultFunction) {
- return p3.apply(this);
+ return p5.apply(this);
}
}
}
diff --git a/api/src/main/java/io/opencensus/stats/ViewData.java b/api/src/main/java/io/opencensus/stats/ViewData.java
index c511edab..259f1068 100644
--- a/api/src/main/java/io/opencensus/stats/ViewData.java
+++ b/api/src/main/java/io/opencensus/stats/ViewData.java
@@ -24,9 +24,12 @@ import io.opencensus.common.Timestamp;
import io.opencensus.internal.Utils;
import io.opencensus.stats.Aggregation.Count;
import io.opencensus.stats.Aggregation.Distribution;
+import io.opencensus.stats.Aggregation.LastValue;
import io.opencensus.stats.Aggregation.Sum;
import io.opencensus.stats.AggregationData.CountData;
import io.opencensus.stats.AggregationData.DistributionData;
+import io.opencensus.stats.AggregationData.LastValueDataDouble;
+import io.opencensus.stats.AggregationData.LastValueDataLong;
import io.opencensus.stats.AggregationData.SumDataDouble;
import io.opencensus.stats.AggregationData.SumDataLong;
import io.opencensus.stats.Measure.MeasureDouble;
@@ -272,25 +275,56 @@ public abstract class ViewData {
return null;
}
},
- new Function<Aggregation.Mean, Void>() {
+ new Function<Distribution, Void>() {
@Override
- public Void apply(Aggregation.Mean arg) {
+ public Void apply(Distribution arg) {
Utils.checkArgument(
- aggregationData instanceof AggregationData.MeanData,
+ aggregationData instanceof DistributionData,
createErrorMessageForAggregation(aggregation, aggregationData));
return null;
}
},
- new Function<Distribution, Void>() {
+ new Function<LastValue, Void>() {
@Override
- public Void apply(Distribution arg) {
- Utils.checkArgument(
- aggregationData instanceof DistributionData,
- createErrorMessageForAggregation(aggregation, aggregationData));
+ public Void apply(LastValue arg) {
+ measure.match(
+ new Function<MeasureDouble, Void>() {
+ @Override
+ public Void apply(MeasureDouble arg) {
+ Utils.checkArgument(
+ aggregationData instanceof LastValueDataDouble,
+ createErrorMessageForAggregation(aggregation, aggregationData));
+ return null;
+ }
+ },
+ new Function<MeasureLong, Void>() {
+ @Override
+ public Void apply(MeasureLong arg) {
+ Utils.checkArgument(
+ aggregationData instanceof LastValueDataLong,
+ createErrorMessageForAggregation(aggregation, aggregationData));
+ return null;
+ }
+ },
+ Functions.</*@Nullable*/ Void>throwAssertionError());
return null;
}
},
- Functions.</*@Nullable*/ Void>throwAssertionError());
+ new Function<Aggregation, Void>() {
+ @Override
+ public Void apply(Aggregation arg) {
+ // TODO(songya): remove this once Mean aggregation is completely removed. Before that
+ // we need to continue supporting Mean, since it could still be used by users and some
+ // deprecated RPC views.
+ if (arg instanceof Aggregation.Mean) {
+ Utils.checkArgument(
+ aggregationData instanceof AggregationData.MeanData,
+ createErrorMessageForAggregation(aggregation, aggregationData));
+ return null;
+ }
+ throw new AssertionError();
+ }
+ });
}
private static String createErrorMessageForAggregation(
diff --git a/api/src/test/java/io/opencensus/stats/AggregationDataTest.java b/api/src/test/java/io/opencensus/stats/AggregationDataTest.java
index 3431d043..9f2aa589 100644
--- a/api/src/test/java/io/opencensus/stats/AggregationDataTest.java
+++ b/api/src/test/java/io/opencensus/stats/AggregationDataTest.java
@@ -23,6 +23,8 @@ import io.opencensus.common.Function;
import io.opencensus.common.Functions;
import io.opencensus.stats.AggregationData.CountData;
import io.opencensus.stats.AggregationData.DistributionData;
+import io.opencensus.stats.AggregationData.LastValueDataDouble;
+import io.opencensus.stats.AggregationData.LastValueDataLong;
import io.opencensus.stats.AggregationData.MeanData;
import io.opencensus.stats.AggregationData.SumDataDouble;
import io.opencensus.stats.AggregationData.SumDataLong;
@@ -95,6 +97,8 @@ public class AggregationDataTest {
.addEqualityGroup(DistributionData.create(10, 10, 1, 1, 55.5, Arrays.asList(0L, 10L, 0L)))
.addEqualityGroup(MeanData.create(5.0, 1), MeanData.create(5.0, 1))
.addEqualityGroup(MeanData.create(-5.0, 1), MeanData.create(-5.0, 1))
+ .addEqualityGroup(LastValueDataDouble.create(20.0), LastValueDataDouble.create(20.0))
+ .addEqualityGroup(LastValueDataLong.create(20), LastValueDataLong.create(20))
.testEquals();
}
@@ -105,8 +109,9 @@ public class AggregationDataTest {
SumDataDouble.create(10.0),
SumDataLong.create(100000000),
CountData.create(40),
- MeanData.create(5.0, 1),
- DistributionData.create(1, 1, 1, 1, 0, Arrays.asList(0L, 10L, 0L)));
+ DistributionData.create(1, 1, 1, 1, 0, Arrays.asList(0L, 10L, 0L)),
+ LastValueDataDouble.create(20.0),
+ LastValueDataLong.create(200000000L));
final List<Object> actual = new ArrayList<Object>();
for (AggregationData aggregation : aggregations) {
@@ -132,17 +137,24 @@ public class AggregationDataTest {
return null;
}
},
- new Function<MeanData, Void>() {
+ new Function<DistributionData, Void>() {
@Override
- public Void apply(MeanData arg) {
- actual.add(arg.getMean());
+ public Void apply(DistributionData arg) {
+ actual.add(arg.getBucketCounts());
return null;
}
},
- new Function<DistributionData, Void>() {
+ new Function<LastValueDataDouble, Void>() {
@Override
- public Void apply(DistributionData arg) {
- actual.add(arg.getBucketCounts());
+ public Void apply(LastValueDataDouble arg) {
+ actual.add(arg.getLastValue());
+ return null;
+ }
+ },
+ new Function<LastValueDataLong, Void>() {
+ @Override
+ public Void apply(LastValueDataLong arg) {
+ actual.add(arg.getLastValue());
return null;
}
},
@@ -150,6 +162,7 @@ public class AggregationDataTest {
}
assertThat(actual)
- .isEqualTo(Arrays.asList(10.0, 100000000L, 40L, 5.0, Arrays.asList(0L, 10L, 0L)));
+ .containsExactly(10.0, 100000000L, 40L, Arrays.asList(0L, 10L, 0L), 20.0, 200000000L)
+ .inOrder();
}
}
diff --git a/api/src/test/java/io/opencensus/stats/AggregationTest.java b/api/src/test/java/io/opencensus/stats/AggregationTest.java
index 3ef131b8..c2e6a716 100644
--- a/api/src/test/java/io/opencensus/stats/AggregationTest.java
+++ b/api/src/test/java/io/opencensus/stats/AggregationTest.java
@@ -19,10 +19,10 @@ package io.opencensus.stats;
import static com.google.common.truth.Truth.assertThat;
import com.google.common.testing.EqualsTester;
-import io.opencensus.common.Function;
import io.opencensus.common.Functions;
import io.opencensus.stats.Aggregation.Count;
import io.opencensus.stats.Aggregation.Distribution;
+import io.opencensus.stats.Aggregation.LastValue;
import io.opencensus.stats.Aggregation.Mean;
import io.opencensus.stats.Aggregation.Sum;
import java.util.ArrayList;
@@ -66,6 +66,7 @@ public class AggregationTest {
Distribution.create(BucketBoundaries.create(Arrays.asList(0.0, 1.0, 5.0))),
Distribution.create(BucketBoundaries.create(Arrays.asList(0.0, 1.0, 5.0))))
.addEqualityGroup(Mean.create(), Mean.create())
+ .addEqualityGroup(LastValue.create(), LastValue.create())
.testEquals();
}
@@ -76,39 +77,21 @@ public class AggregationTest {
Sum.create(),
Count.create(),
Mean.create(),
- Distribution.create(BucketBoundaries.create(Arrays.asList(-10.0, 1.0, 5.0))));
+ Distribution.create(BucketBoundaries.create(Arrays.asList(-10.0, 1.0, 5.0))),
+ LastValue.create());
List<String> actual = new ArrayList<String>();
for (Aggregation aggregation : aggregations) {
actual.add(
aggregation.match(
- new Function<Sum, String>() {
- @Override
- public String apply(Sum arg) {
- return "SUM";
- }
- },
- new Function<Count, String>() {
- @Override
- public String apply(Count arg) {
- return "COUNT";
- }
- },
- new Function<Mean, String>() {
- @Override
- public String apply(Mean arg) {
- return "MEAN";
- }
- },
- new Function<Distribution, String>() {
- @Override
- public String apply(Distribution arg) {
- return "DISTRIBUTION";
- }
- },
- Functions.<String>throwIllegalArgumentException()));
+ Functions.returnConstant("SUM"),
+ Functions.returnConstant("COUNT"),
+ Functions.returnConstant("DISTRIBUTION"),
+ Functions.returnConstant("LASTVALUE"),
+ Functions.returnConstant("UNKNOWN")));
}
- assertThat(actual).isEqualTo(Arrays.asList("SUM", "COUNT", "MEAN", "DISTRIBUTION"));
+ assertThat(actual)
+ .isEqualTo(Arrays.asList("SUM", "COUNT", "UNKNOWN", "DISTRIBUTION", "LASTVALUE"));
}
}
diff --git a/api/src/test/java/io/opencensus/stats/ViewDataTest.java b/api/src/test/java/io/opencensus/stats/ViewDataTest.java
index 0dc78e33..89009f34 100644
--- a/api/src/test/java/io/opencensus/stats/ViewDataTest.java
+++ b/api/src/test/java/io/opencensus/stats/ViewDataTest.java
@@ -27,10 +27,13 @@ import io.opencensus.common.Functions;
import io.opencensus.common.Timestamp;
import io.opencensus.stats.Aggregation.Count;
import io.opencensus.stats.Aggregation.Distribution;
+import io.opencensus.stats.Aggregation.LastValue;
import io.opencensus.stats.Aggregation.Mean;
import io.opencensus.stats.Aggregation.Sum;
import io.opencensus.stats.AggregationData.CountData;
import io.opencensus.stats.AggregationData.DistributionData;
+import io.opencensus.stats.AggregationData.LastValueDataDouble;
+import io.opencensus.stats.AggregationData.LastValueDataLong;
import io.opencensus.stats.AggregationData.SumDataDouble;
import io.opencensus.stats.AggregationData.SumDataLong;
import io.opencensus.stats.View.AggregationWindow;
@@ -218,6 +221,22 @@ public final class ViewDataTest {
CountData.create(100)));
}
+ @Test
+ public void preventAggregationAndAggregationDataMismatch_LastValueDouble_LastValueLong() {
+ aggregationAndAggregationDataMismatch(
+ createView(LastValue.create(), MEASURE_DOUBLE),
+ ImmutableMap.<List<TagValue>, AggregationData>of(
+ Arrays.asList(V1, V2), LastValueDataLong.create(100)));
+ }
+
+ @Test
+ public void preventAggregationAndAggregationDataMismatch_LastValueLong_LastValueDouble() {
+ aggregationAndAggregationDataMismatch(
+ createView(LastValue.create(), MEASURE_LONG),
+ ImmutableMap.<List<TagValue>, AggregationData>of(
+ Arrays.asList(V1, V2), LastValueDataDouble.create(100)));
+ }
+
private static View createView(Aggregation aggregation) {
return createView(aggregation, MEASURE_DOUBLE);
}