From 90edbd5a8a0ff10d7658bd78beae9434aee8cdbe Mon Sep 17 00:00:00 2001 From: Bogdan Drutu Date: Tue, 2 Oct 2018 17:48:35 -0400 Subject: Mode classes for metrics data model in the exporter package. (#1480) * Mode classes for metrics data model in the exporter package. Consistent with trace. * Fix test class coments. --- .../io/opencensus/metrics/export/ValueTest.java | 155 +++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 api/src/test/java/io/opencensus/metrics/export/ValueTest.java (limited to 'api/src/test/java/io/opencensus/metrics/export/ValueTest.java') diff --git a/api/src/test/java/io/opencensus/metrics/export/ValueTest.java b/api/src/test/java/io/opencensus/metrics/export/ValueTest.java new file mode 100644 index 00000000..3758ed2d --- /dev/null +++ b/api/src/test/java/io/opencensus/metrics/export/ValueTest.java @@ -0,0 +1,155 @@ +/* + * Copyright 2018, OpenCensus Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.opencensus.metrics.export; + +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.metrics.export.Distribution.Bucket; +import io.opencensus.metrics.export.Summary.Snapshot; +import io.opencensus.metrics.export.Summary.Snapshot.ValueAtPercentile; +import io.opencensus.metrics.export.Value.ValueDistribution; +import io.opencensus.metrics.export.Value.ValueDouble; +import io.opencensus.metrics.export.Value.ValueLong; +import io.opencensus.metrics.export.Value.ValueSummary; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +/** Unit tests for {@link Value}. */ +@RunWith(JUnit4.class) +public class ValueTest { + private static final double TOLERANCE = 1e-6; + + private static final Distribution DISTRIBUTION = + Distribution.create( + 10, + 10, + 1, + Arrays.asList(-5.0, 0.0, 5.0), + Arrays.asList(Bucket.create(3), Bucket.create(1), Bucket.create(2), Bucket.create(4))); + private static final Summary SUMMARY = + Summary.create( + 10L, + 10.0, + Snapshot.create( + 10L, 87.07, Collections.singletonList(ValueAtPercentile.create(0.98, 10.2)))); + + @Test + public void createAndGet_ValueDouble() { + Value value = Value.doubleValue(-34.56); + assertThat(value).isInstanceOf(ValueDouble.class); + assertThat(((ValueDouble) value).getValue()).isWithin(TOLERANCE).of(-34.56); + } + + @Test + public void createAndGet_ValueLong() { + Value value = Value.longValue(123456789); + assertThat(value).isInstanceOf(ValueLong.class); + assertThat(((ValueLong) value).getValue()).isEqualTo(123456789); + } + + @Test + public void createAndGet_ValueDistribution() { + Value value = Value.distributionValue(DISTRIBUTION); + assertThat(value).isInstanceOf(ValueDistribution.class); + assertThat(((ValueDistribution) value).getValue()).isEqualTo(DISTRIBUTION); + } + + @Test + public void createAndGet_ValueSummary() { + Value value = Value.summaryValue(SUMMARY); + assertThat(value).isInstanceOf(ValueSummary.class); + assertThat(((ValueSummary) value).getValue()).isEqualTo(SUMMARY); + } + + @Test + public void testEquals() { + new EqualsTester() + .addEqualityGroup(Value.doubleValue(1.0), Value.doubleValue(1.0)) + .addEqualityGroup(Value.doubleValue(2.0)) + .addEqualityGroup(Value.longValue(1L)) + .addEqualityGroup(Value.longValue(2L)) + .addEqualityGroup( + Value.distributionValue( + Distribution.create( + 7, + 10, + 23.456, + Arrays.asList(-5.0, 0.0, 5.0), + Arrays.asList( + Bucket.create(3), Bucket.create(1), Bucket.create(2), Bucket.create(4))))) + .testEquals(); + } + + @Test + public void testMatch() { + List values = + Arrays.asList( + ValueDouble.create(1.0), + ValueLong.create(-1), + ValueDistribution.create(DISTRIBUTION), + ValueSummary.create(SUMMARY)); + List expected = + Arrays.asList(1.0, -1L, 10.0, 10L, 1.0, -5.0, 0.0, 5.0, 3L, 1L, 2L, 4L); + final List actual = new ArrayList(); + for (Value value : values) { + value.match( + new Function() { + @Override + public Object apply(Double arg) { + actual.add(arg); + return null; + } + }, + new Function() { + @Override + public Object apply(Long arg) { + actual.add(arg); + return null; + } + }, + new Function() { + @Override + public Object apply(Distribution arg) { + actual.add(arg.getSum()); + actual.add(arg.getCount()); + actual.add(arg.getSumOfSquaredDeviations()); + actual.addAll(arg.getBucketBoundaries()); + for (Bucket bucket : arg.getBuckets()) { + actual.add(bucket.getCount()); + } + return null; + } + }, + new Function() { + @Override + public Object apply(Summary arg) { + return null; + } + }, + Functions.throwAssertionError()); + } + assertThat(actual).containsExactlyElementsIn(expected).inOrder(); + } +} -- cgit v1.2.3 From 4aa3f0c4a17a183c43b793eb5e946c34fdefd4bf Mon Sep 17 00:00:00 2001 From: Mayur Kale Date: Sat, 13 Oct 2018 12:14:59 -0700 Subject: Add BucketOptions for DistributionValue (#1484) * Add BucketOptions for DistributionValue * Fix reviews --- .../io/opencensus/metrics/export/ValueTest.java | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'api/src/test/java/io/opencensus/metrics/export/ValueTest.java') diff --git a/api/src/test/java/io/opencensus/metrics/export/ValueTest.java b/api/src/test/java/io/opencensus/metrics/export/ValueTest.java index 3758ed2d..bf947692 100644 --- a/api/src/test/java/io/opencensus/metrics/export/ValueTest.java +++ b/api/src/test/java/io/opencensus/metrics/export/ValueTest.java @@ -22,6 +22,8 @@ import com.google.common.testing.EqualsTester; import io.opencensus.common.Function; import io.opencensus.common.Functions; import io.opencensus.metrics.export.Distribution.Bucket; +import io.opencensus.metrics.export.Distribution.BucketOptions; +import io.opencensus.metrics.export.Distribution.BucketOptions.ExplicitOptions; import io.opencensus.metrics.export.Summary.Snapshot; import io.opencensus.metrics.export.Summary.Snapshot.ValueAtPercentile; import io.opencensus.metrics.export.Value.ValueDistribution; @@ -46,7 +48,7 @@ public class ValueTest { 10, 10, 1, - Arrays.asList(-5.0, 0.0, 5.0), + BucketOptions.explicitOptions(Arrays.asList(1.0, 2.0, 5.0)), Arrays.asList(Bucket.create(3), Bucket.create(1), Bucket.create(2), Bucket.create(4))); private static final Summary SUMMARY = Summary.create( @@ -96,7 +98,7 @@ public class ValueTest { 7, 10, 23.456, - Arrays.asList(-5.0, 0.0, 5.0), + BucketOptions.explicitOptions(Arrays.asList(1.0, 2.0, 5.0)), Arrays.asList( Bucket.create(3), Bucket.create(1), Bucket.create(2), Bucket.create(4))))) .testEquals(); @@ -111,7 +113,7 @@ public class ValueTest { ValueDistribution.create(DISTRIBUTION), ValueSummary.create(SUMMARY)); List expected = - Arrays.asList(1.0, -1L, 10.0, 10L, 1.0, -5.0, 0.0, 5.0, 3L, 1L, 2L, 4L); + Arrays.asList(1.0, -1L, 10.0, 10L, 1.0, 1.0, 2.0, 5.0, 3L, 1L, 2L, 4L); final List actual = new ArrayList(); for (Value value : values) { value.match( @@ -135,7 +137,18 @@ public class ValueTest { actual.add(arg.getSum()); actual.add(arg.getCount()); actual.add(arg.getSumOfSquaredDeviations()); - actual.addAll(arg.getBucketBoundaries()); + + arg.getBucketOptions() + .match( + new Function() { + @Override + public Object apply(ExplicitOptions arg) { + actual.addAll(arg.getBucketBoundaries()); + return null; + } + }, + Functions.throwAssertionError()); + for (Bucket bucket : arg.getBuckets()) { actual.add(bucket.getCount()); } -- cgit v1.2.3