diff options
| author | sebright <sebright@google.com> | 2017-03-28 17:46:38 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-03-28 17:46:38 -0700 |
| commit | 39cee944e3ce562a1675f5416c3b756d561643e0 (patch) | |
| tree | 81e4f61b513eb918a7d8fb932c9c78691db64c60 /core | |
| parent | 4400097d1b3d243a8fb62cab838b3c980d5a673d (diff) | |
| parent | 08f0953545b1a8c480c53f9775a0fb51ef9d927d (diff) | |
| download | platform_external_opencensus-java-39cee944e3ce562a1675f5416c3b756d561643e0.tar.gz platform_external_opencensus-java-39cee944e3ce562a1675f5416c3b756d561643e0.tar.bz2 platform_external_opencensus-java-39cee944e3ce562a1675f5416c3b756d561643e0.zip | |
Merge pull request #132 from sebright/auto-value
Starts using AutoValue for classes in stats-core.
Diffstat (limited to 'core')
3 files changed, 64 insertions, 43 deletions
diff --git a/core/build.gradle b/core/build.gradle index bc3849d4..9e9f4286 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -2,6 +2,7 @@ description = 'Instrumentation: Core' dependencies { compile project(':shared'), + libraries.auto_value, libraries.grpc_context, libraries.guava diff --git a/core/src/main/java/com/google/instrumentation/stats/MeasurementDescriptor.java b/core/src/main/java/com/google/instrumentation/stats/MeasurementDescriptor.java index d44c3637..19028e8e 100644 --- a/core/src/main/java/com/google/instrumentation/stats/MeasurementDescriptor.java +++ b/core/src/main/java/com/google/instrumentation/stats/MeasurementDescriptor.java @@ -13,6 +13,8 @@ package com.google.instrumentation.stats; +import com.google.auto.value.AutoValue; + import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -22,47 +24,34 @@ import java.util.List; * * <p>Note: MeasurementDescriptor names are {@link String}s with enforced restrictions. */ -public final class MeasurementDescriptor { +@AutoValue +public abstract class MeasurementDescriptor { public static final int MAX_LENGTH = StringUtil.MAX_LENGTH; + MeasurementDescriptor() {} + /** * Constructs a new {@link MeasurementDescriptor}. */ public static MeasurementDescriptor create( String name, String description, MeasurementUnit unit) { - return new MeasurementDescriptor(name, description, unit); + return new AutoValue_MeasurementDescriptor(StringUtil.sanitize(name), description, unit); } /** * Name of measurement, e.g. rpc_latency, cpu. Must be unique. */ - public String getName() { - return name; - } + public abstract String getName(); /** * Detailed description of the measurement, used in documentation. */ - public String getDescription() { - return description; - } + public abstract String getDescription(); /** * The units in which {@link MeasurementDescriptor} values are measured. */ - public MeasurementUnit getUnit() { - return unit; - } - - private final String name; - private final String description; - private final MeasurementUnit unit; - - private MeasurementDescriptor(String name, String description, MeasurementUnit unit) { - this.name = StringUtil.sanitize(name); - this.description = description; - this.unit = unit; - } + public abstract MeasurementUnit getUnit(); /** * Fundamental units of measurement. @@ -105,28 +94,34 @@ public final class MeasurementDescriptor { * power10: -9 * numerator: SECS */ - public static final class MeasurementUnit { + @AutoValue + public abstract static class MeasurementUnit { + + MeasurementUnit() {} + /** * Constructs a {@link MeasurementUnit}. */ public static MeasurementUnit create( int power10, List<BasicUnit> numerators, List<BasicUnit> denominators) { - return new MeasurementUnit(power10, numerators, denominators); + return new AutoValue_MeasurementDescriptor_MeasurementUnit( + power10, + Collections.unmodifiableList(new ArrayList<BasicUnit>(numerators)), + Collections.unmodifiableList(new ArrayList<BasicUnit>(denominators))); } /** * Constructs a {@link MeasurementUnit} without the optional {@code denominators}. */ public static MeasurementUnit create(int power10, List<BasicUnit> numerators) { - return new MeasurementUnit(power10, numerators, new ArrayList<BasicUnit>()); + return new AutoValue_MeasurementDescriptor_MeasurementUnit( + power10, numerators, Collections.<BasicUnit>emptyList()); } /** * Unit multiplier (i.e. 10^power10). */ - public int getPower10() { - return power10; - } + public abstract int getPower10(); /** * Unit Numerators. @@ -134,9 +129,7 @@ public final class MeasurementDescriptor { * <p>Note: The returned list is unmodifiable and attempts to update it will throw an * UnsupportedOperationException. */ - public List<BasicUnit> getNumerators() { - return numerators; - } + public abstract List<BasicUnit> getNumerators(); /** * Unit Denominators. @@ -144,18 +137,6 @@ public final class MeasurementDescriptor { * <p>Note: The returned list is unmodifiable and attempts to update it will throw an * UnsupportedOperationException. */ - public final List<BasicUnit> getDenominators() { - return denominators; - } - - private final int power10; - private final List<BasicUnit> numerators; - private final List<BasicUnit> denominators; - - private MeasurementUnit(int power10, List<BasicUnit> numerators, List<BasicUnit> denominators) { - this.power10 = power10; - this.numerators = Collections.unmodifiableList(new ArrayList<BasicUnit>(numerators)); - this.denominators = Collections.unmodifiableList(new ArrayList<BasicUnit>(denominators)); - } + public abstract List<BasicUnit> getDenominators(); } } diff --git a/core/src/test/java/com/google/instrumentation/stats/MeasurementDescriptorTest.java b/core/src/test/java/com/google/instrumentation/stats/MeasurementDescriptorTest.java index 9fa16f37..e362b473 100644 --- a/core/src/test/java/com/google/instrumentation/stats/MeasurementDescriptorTest.java +++ b/core/src/test/java/com/google/instrumentation/stats/MeasurementDescriptorTest.java @@ -15,6 +15,7 @@ package com.google.instrumentation.stats; import static com.google.common.truth.Truth.assertThat; +import com.google.common.testing.EqualsTester; import com.google.instrumentation.stats.MeasurementDescriptor.BasicUnit; import com.google.instrumentation.stats.MeasurementDescriptor.MeasurementUnit; import java.util.Arrays; @@ -60,6 +61,44 @@ public final class MeasurementDescriptorTest { assertThat(measurement.getUnit().getDenominators().get(0)).isEqualTo(BasicUnit.SECONDS); } + @Test + public void testMeasurementUnitEquals() { + new EqualsTester() + .addEqualityGroup( + MeasurementUnit.create( + 1, Arrays.asList(BasicUnit.BYTES), Arrays.asList(BasicUnit.SECONDS)), + MeasurementUnit.create( + 1, Arrays.asList(BasicUnit.BYTES), Arrays.asList(BasicUnit.SECONDS))) + .addEqualityGroup( + MeasurementUnit.create( + 2, Arrays.asList(BasicUnit.BYTES), Arrays.asList(BasicUnit.SECONDS))) + .addEqualityGroup(MeasurementUnit.create(1, Arrays.asList(BasicUnit.BYTES))) + .testEquals(); + } + + @Test + public void testMeasurementDescriptorEquals() { + new EqualsTester() + .addEqualityGroup( + MeasurementDescriptor.create( + "name", + "description", + MeasurementUnit.create( + 1, Arrays.asList(BasicUnit.BITS), Arrays.asList(BasicUnit.SECONDS))), + MeasurementDescriptor.create( + "name", + "description", + MeasurementUnit.create( + 1, Arrays.asList(BasicUnit.BITS), Arrays.asList(BasicUnit.SECONDS)))) + .addEqualityGroup( + MeasurementDescriptor.create( + "name", + "description 2", + MeasurementUnit.create( + 1, Arrays.asList(BasicUnit.BYTES), Arrays.asList(BasicUnit.SECONDS)))) + .testEquals(); + } + private static final MeasurementDescriptor makeSimpleDescriptor(String name) { return MeasurementDescriptor.create( name, |
