diff options
author | Yang Song <songy23@users.noreply.github.com> | 2017-12-19 09:40:03 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-19 09:40:03 -0800 |
commit | 2ca42d812c7c01f229635d35c26c854f621ef962 (patch) | |
tree | 17188c75c7f989bbf209776883899201dbfb0ef2 /api/src/test/java/io/opencensus/stats | |
parent | b211232aa11cb3a35a33ad7d0fbd4ce7d07f0522 (diff) | |
download | opencensus-java-2ca42d812c7c01f229635d35c26c854f621ef962.tar.gz |
Validate types of Aggregation and AggregationData when creating ViewData (#839)
Diffstat (limited to 'api/src/test/java/io/opencensus/stats')
-rw-r--r-- | api/src/test/java/io/opencensus/stats/ViewDataTest.java | 84 |
1 files changed, 75 insertions, 9 deletions
diff --git a/api/src/test/java/io/opencensus/stats/ViewDataTest.java b/api/src/test/java/io/opencensus/stats/ViewDataTest.java index 028506fb..0dc78e33 100644 --- a/api/src/test/java/io/opencensus/stats/ViewDataTest.java +++ b/api/src/test/java/io/opencensus/stats/ViewDataTest.java @@ -25,8 +25,14 @@ import io.opencensus.common.Duration; import io.opencensus.common.Function; 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.Mean; +import io.opencensus.stats.Aggregation.Sum; +import io.opencensus.stats.AggregationData.CountData; import io.opencensus.stats.AggregationData.DistributionData; +import io.opencensus.stats.AggregationData.SumDataDouble; +import io.opencensus.stats.AggregationData.SumDataLong; import io.opencensus.stats.View.AggregationWindow; import io.opencensus.stats.View.AggregationWindow.Cumulative; import io.opencensus.stats.View.AggregationWindow.Interval; @@ -38,6 +44,7 @@ import io.opencensus.tags.TagValue; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Map; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -52,7 +59,7 @@ public final class ViewDataTest { @Test public void testCumulativeViewData() { - View view = View.create(NAME, DESCRIPTION, MEASURE, DISTRIBUTION, tagKeys, CUMULATIVE); + View view = View.create(NAME, DESCRIPTION, MEASURE_DOUBLE, DISTRIBUTION, TAG_KEYS, CUMULATIVE); Timestamp start = Timestamp.fromMillis(1000); Timestamp end = Timestamp.fromMillis(2000); AggregationWindowData windowData = CumulativeData.create(start, end); @@ -64,7 +71,8 @@ public final class ViewDataTest { @Test public void testIntervalViewData() { - View view = View.create(NAME, DESCRIPTION, MEASURE, DISTRIBUTION, tagKeys, INTERVAL_HOUR); + View view = + View.create(NAME, DESCRIPTION, MEASURE_DOUBLE, DISTRIBUTION, TAG_KEYS, INTERVAL_HOUR); Timestamp end = Timestamp.fromMillis(2000); AggregationWindowData windowData = IntervalData.create(end); ViewData viewData = ViewData.create(view, ENTRIES, windowData); @@ -76,9 +84,9 @@ public final class ViewDataTest { @Test public void testViewDataEquals() { View cumulativeView = - View.create(NAME, DESCRIPTION, MEASURE, DISTRIBUTION, tagKeys, CUMULATIVE); + View.create(NAME, DESCRIPTION, MEASURE_DOUBLE, DISTRIBUTION, TAG_KEYS, CUMULATIVE); View intervalView = - View.create(NAME, DESCRIPTION, MEASURE, DISTRIBUTION, tagKeys, INTERVAL_HOUR); + View.create(NAME, DESCRIPTION, MEASURE_DOUBLE, DISTRIBUTION, TAG_KEYS, INTERVAL_HOUR); new EqualsTester() .addEqualityGroup( @@ -150,8 +158,9 @@ public final class ViewDataTest { @Test public void preventWindowAndAggregationWindowDataMismatch() { thrown.expect(IllegalArgumentException.class); + thrown.expectMessage("AggregationWindow and AggregationWindowData types mismatch. "); ViewData.create( - View.create(NAME, DESCRIPTION, MEASURE, DISTRIBUTION, tagKeys, INTERVAL_HOUR), + View.create(NAME, DESCRIPTION, MEASURE_DOUBLE, DISTRIBUTION, TAG_KEYS, INTERVAL_HOUR), ENTRIES, CumulativeData.create(Timestamp.fromMillis(1000), Timestamp.fromMillis(2000))); } @@ -159,8 +168,9 @@ public final class ViewDataTest { @Test public void preventWindowAndAggregationWindowDataMismatch2() { thrown.expect(IllegalArgumentException.class); + thrown.expectMessage("AggregationWindow and AggregationWindowData types mismatch. "); ViewData.create( - View.create(NAME, DESCRIPTION, MEASURE, DISTRIBUTION, tagKeys, CUMULATIVE), + View.create(NAME, DESCRIPTION, MEASURE_DOUBLE, DISTRIBUTION, TAG_KEYS, CUMULATIVE), ENTRIES, IntervalData.create(Timestamp.fromMillis(1000))); } @@ -171,10 +181,64 @@ public final class ViewDataTest { CumulativeData.create(Timestamp.fromMillis(3000), Timestamp.fromMillis(2000)); } + @Test + public void preventAggregationAndAggregationDataMismatch_SumDouble_SumLong() { + aggregationAndAggregationDataMismatch( + createView(Sum.create(), MEASURE_DOUBLE), + ImmutableMap.<List<TagValue>, AggregationData>of( + Arrays.asList(V1, V2), SumDataLong.create(100))); + } + + @Test + public void preventAggregationAndAggregationDataMismatch_SumLong_SumDouble() { + aggregationAndAggregationDataMismatch( + createView(Sum.create(), MEASURE_LONG), + ImmutableMap.<List<TagValue>, AggregationData>of( + Arrays.asList(V1, V2), SumDataDouble.create(100))); + } + + @Test + public void preventAggregationAndAggregationDataMismatch_Count_Distribution() { + aggregationAndAggregationDataMismatch(createView(Count.create()), ENTRIES); + } + + @Test + public void preventAggregationAndAggregationDataMismatch_Mean_Distribution() { + aggregationAndAggregationDataMismatch(createView(Mean.create()), ENTRIES); + } + + @Test + public void preventAggregationAndAggregationDataMismatch_Distribution_Count() { + aggregationAndAggregationDataMismatch( + createView(DISTRIBUTION), + ImmutableMap.of( + Arrays.asList(V1, V2), + DistributionData.create(1, 1, 1, 1, 0, Arrays.asList(0L, 1L, 0L)), + Arrays.asList(V10, V20), + CountData.create(100))); + } + + private static View createView(Aggregation aggregation) { + return createView(aggregation, MEASURE_DOUBLE); + } + + private static View createView(Aggregation aggregation, Measure measure) { + return View.create(NAME, DESCRIPTION, measure, aggregation, TAG_KEYS, CUMULATIVE); + } + + private void aggregationAndAggregationDataMismatch( + View view, Map<List<TagValue>, ? extends AggregationData> entries) { + CumulativeData cumulativeData = + CumulativeData.create(Timestamp.fromMillis(1000), Timestamp.fromMillis(2000)); + thrown.expect(IllegalArgumentException.class); + thrown.expectMessage("Aggregation and AggregationData types mismatch. "); + ViewData.create(view, entries, cumulativeData); + } + // tag keys private static final TagKey K1 = TagKey.create("k1"); private static final TagKey K2 = TagKey.create("k2"); - private final List<TagKey> tagKeys = Arrays.asList(K1, K2); + private static final List<TagKey> TAG_KEYS = Arrays.asList(K1, K2); // tag values private static final TagValue V1 = TagValue.create("v1"); @@ -202,6 +266,8 @@ public final class ViewDataTest { // description private static final String DESCRIPTION = "test-view-descriptor description"; // measure - private static final Measure MEASURE = - Measure.MeasureDouble.create("measure", "measure description", "1"); + private static final Measure MEASURE_DOUBLE = + Measure.MeasureDouble.create("measure1", "measure description", "1"); + private static final Measure MEASURE_LONG = + Measure.MeasureLong.create("measure2", "measure description", "1"); } |