From 76a0a5cfa63cdc26fd4319408c24f87303fb19a3 Mon Sep 17 00:00:00 2001 From: Kristen Kozak Date: Fri, 10 Mar 2017 18:49:15 -0800 Subject: Starts using AutoValue for classes in stats-core. This commit applies AutoValue to MeasurementDescriptor and MeasurementUnit. --- .../stats/MeasurementDescriptor.java | 62 +++++++--------------- 1 file changed, 19 insertions(+), 43 deletions(-) (limited to 'core') 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..3f9880d4 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,7 +24,8 @@ import java.util.List; * *

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; /** @@ -30,39 +33,23 @@ public final class 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 +92,31 @@ public final class MeasurementDescriptor { * power10: -9 * numerator: SECS */ - public static final class MeasurementUnit { + @AutoValue + public abstract static class MeasurementUnit { /** * Constructs a {@link MeasurementUnit}. */ public static MeasurementUnit create( int power10, List numerators, List denominators) { - return new MeasurementUnit(power10, numerators, denominators); + return new AutoValue_MeasurementDescriptor_MeasurementUnit( + power10, + Collections.unmodifiableList(new ArrayList(numerators)), + Collections.unmodifiableList(new ArrayList(denominators))); } /** * Constructs a {@link MeasurementUnit} without the optional {@code denominators}. */ public static MeasurementUnit create(int power10, List numerators) { - return new MeasurementUnit(power10, numerators, new ArrayList()); + return new AutoValue_MeasurementDescriptor_MeasurementUnit( + power10, numerators, Collections.emptyList()); } /** * Unit multiplier (i.e. 10^power10). */ - public int getPower10() { - return power10; - } + public abstract int getPower10(); /** * Unit Numerators. @@ -134,9 +124,7 @@ public final class MeasurementDescriptor { *

Note: The returned list is unmodifiable and attempts to update it will throw an * UnsupportedOperationException. */ - public List getNumerators() { - return numerators; - } + public abstract List getNumerators(); /** * Unit Denominators. @@ -144,18 +132,6 @@ public final class MeasurementDescriptor { *

Note: The returned list is unmodifiable and attempts to update it will throw an * UnsupportedOperationException. */ - public final List getDenominators() { - return denominators; - } - - private final int power10; - private final List numerators; - private final List denominators; - - private MeasurementUnit(int power10, List numerators, List denominators) { - this.power10 = power10; - this.numerators = Collections.unmodifiableList(new ArrayList(numerators)); - this.denominators = Collections.unmodifiableList(new ArrayList(denominators)); - } + public abstract List getDenominators(); } } -- cgit v1.2.3 From 911e8d1970cf0bad3530705432ca0a38fab530ed Mon Sep 17 00:00:00 2001 From: Kristen Kozak Date: Fri, 10 Mar 2017 19:27:09 -0800 Subject: Tests MeasurementDescriptor and MeasurementUnit equals() and hashCode(). --- .../stats/MeasurementDescriptorTest.java | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'core') 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, -- cgit v1.2.3 From 9cb23841bb3c82b1d5285b37e87959765a3ce149 Mon Sep 17 00:00:00 2001 From: Kristen Kozak Date: Tue, 21 Mar 2017 17:51:20 -0700 Subject: Add AutoValue to Gradle build. --- core/build.gradle | 1 + 1 file changed, 1 insertion(+) (limited to 'core') 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 -- cgit v1.2.3 From d42079c10291ab5a052b062d4c168496523f697a Mon Sep 17 00:00:00 2001 From: Kristen Kozak Date: Thu, 16 Mar 2017 16:33:49 -0700 Subject: Reduce visibility of MeasurementDescriptor and MeasurementUnit constructors. --- .../java/com/google/instrumentation/stats/MeasurementDescriptor.java | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'core') 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 3f9880d4..19028e8e 100644 --- a/core/src/main/java/com/google/instrumentation/stats/MeasurementDescriptor.java +++ b/core/src/main/java/com/google/instrumentation/stats/MeasurementDescriptor.java @@ -28,6 +28,8 @@ import java.util.List; public abstract class MeasurementDescriptor { public static final int MAX_LENGTH = StringUtil.MAX_LENGTH; + MeasurementDescriptor() {} + /** * Constructs a new {@link MeasurementDescriptor}. */ @@ -94,6 +96,9 @@ public abstract class MeasurementDescriptor { */ @AutoValue public abstract static class MeasurementUnit { + + MeasurementUnit() {} + /** * Constructs a {@link MeasurementUnit}. */ -- cgit v1.2.3