aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYang Song <songy23@users.noreply.github.com>2017-06-30 15:40:06 -0700
committerGitHub <noreply@github.com>2017-06-30 15:40:06 -0700
commit39ac27f3005d647c7825714ea5c5b5c0a5a84fda (patch)
treeb2900b6cc2536a6d8b3da8f2511d16dd59cb6646
parent344a5720df7ebc1a2075e68a74a7ef6fbfbf123b (diff)
downloadplatform_external_opencensus-java-39ac27f3005d647c7825714ea5c5b5c0a5a84fda.tar.gz
platform_external_opencensus-java-39ac27f3005d647c7825714ea5c5b5c0a5a84fda.tar.bz2
platform_external_opencensus-java-39ac27f3005d647c7825714ea5c5b5c0a5a84fda.zip
Refactor MeasurementDescriptor. (#396)
* Refactor MeasurementDescriptor. * Remove Measure.Name class for now.
-rw-r--r--core/src/main/java/io/opencensus/stats/Measure.java119
-rw-r--r--core/src/main/java/io/opencensus/stats/MeasurementDescriptor.java188
-rw-r--r--core/src/main/java/io/opencensus/stats/MeasurementMap.java78
-rw-r--r--core/src/main/java/io/opencensus/stats/MeasurementValue.java10
-rw-r--r--core/src/main/java/io/opencensus/stats/RpcMeasurementConstants.java150
-rw-r--r--core/src/main/java/io/opencensus/stats/ViewDescriptor.java20
-rw-r--r--core/src/test/java/io/opencensus/stats/MeasureTest.java116
-rw-r--r--core/src/test/java/io/opencensus/stats/MeasurementDescriptorTest.java126
-rw-r--r--core/src/test/java/io/opencensus/stats/MeasurementMapTest.java29
-rw-r--r--core/src/test/java/io/opencensus/stats/ViewDescriptorTest.java38
-rw-r--r--core/src/test/java/io/opencensus/stats/ViewTest.java14
-rw-r--r--core_impl/src/main/java/io/opencensus/stats/MeasureToViewMap.java (renamed from core_impl/src/main/java/io/opencensus/stats/MeasurementDescriptorToViewMap.java)16
-rw-r--r--core_impl/src/main/java/io/opencensus/stats/StatsManager.java10
-rw-r--r--core_impl/src/test/java/io/opencensus/stats/MeasureToViewMapTest.java (renamed from core_impl/src/test/java/io/opencensus/stats/MeasurementDescriptorToViewMapTest.java)20
-rw-r--r--core_impl/src/test/java/io/opencensus/stats/ViewManagerImplTest.java31
-rw-r--r--examples/src/main/java/io/opencensus/examples/stats/StatsRunner.java16
16 files changed, 439 insertions, 542 deletions
diff --git a/core/src/main/java/io/opencensus/stats/Measure.java b/core/src/main/java/io/opencensus/stats/Measure.java
new file mode 100644
index 00000000..3f637c95
--- /dev/null
+++ b/core/src/main/java/io/opencensus/stats/Measure.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright 2016, Google Inc.
+ * 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.stats;
+
+import com.google.auto.value.AutoValue;
+import io.opencensus.common.Function;
+import javax.annotation.concurrent.Immutable;
+
+/**
+ * Measure.
+ */
+@Immutable
+public abstract class Measure {
+
+ /**
+ * Applies the given match function to the underlying data type.
+ */
+ public abstract <T> T match(Function<DoubleMeasure, T> p0, Function<LongMeasure, T> p1);
+
+ /**
+ * Name of measure, as a {@code String}.
+ */
+ public abstract String getName();
+
+ /**
+ * Detailed description of the measure, used in documentation.
+ */
+ public abstract String getDescription();
+
+ /**
+ * The units in which {@link Measure} values are measured.
+ *
+ * <p>The grammar for a unit is as follows:
+ * Expression = Component { "." Component } { "/" Component } ;
+ * Component = [ PREFIX ] UNIT [ Annotation ] | Annotation | "1" ;
+ * Annotation = "{" NAME "}" ;
+ * For example, string “MBy{transmitted}/ms” stands for megabytes per milliseconds, and the
+ * annotation transmitted inside {} is just a comment of the unit.
+ */
+ public abstract String getUnit();
+
+ // Prevents this class from being subclassed anywhere else.
+ private Measure() {
+ }
+
+ @Immutable
+ @AutoValue
+ public abstract static class DoubleMeasure extends Measure {
+
+ DoubleMeasure() {
+ }
+
+ /**
+ * Constructs a new {@link DoubleMeasure}.
+ */
+ public static DoubleMeasure create(String name, String description, String unit) {
+ // TODO(dpo): ensure that measure names are unique, and consider if there should be any
+ // restricitons on name (e.g. size, characters).
+ return new AutoValue_Measure_DoubleMeasure(name, description, unit);
+ }
+
+ @Override
+ public <T> T match(Function<DoubleMeasure, T> p0, Function<LongMeasure, T> p1) {
+ return p0.apply(this);
+ }
+
+ @Override
+ public abstract String getName();
+
+ @Override
+ public abstract String getDescription();
+
+ @Override
+ public abstract String getUnit();
+ }
+
+ @Immutable
+ @AutoValue
+ // TODO: determine whether we want to support LongMeasure in V0.1
+ public abstract static class LongMeasure extends Measure {
+
+ LongMeasure() {
+ }
+
+ /**
+ * Constructs a new {@link LongMeasure}.
+ */
+ public static LongMeasure create(String name, String description, String unit) {
+ // TODO(dpo): ensure that measure names are unique, and consider if there should be any
+ // restricitons on name (e.g. size, characters).
+ return new AutoValue_Measure_LongMeasure(name, description, unit);
+ }
+
+ @Override
+ public <T> T match(Function<DoubleMeasure, T> p0, Function<LongMeasure, T> p1) {
+ return p1.apply(this);
+ }
+
+ @Override
+ public abstract String getName();
+
+ @Override
+ public abstract String getDescription();
+
+ @Override
+ public abstract String getUnit();
+ }
+}
diff --git a/core/src/main/java/io/opencensus/stats/MeasurementDescriptor.java b/core/src/main/java/io/opencensus/stats/MeasurementDescriptor.java
deleted file mode 100644
index 99668697..00000000
--- a/core/src/main/java/io/opencensus/stats/MeasurementDescriptor.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Copyright 2016, Google Inc.
- * 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.stats;
-
-import com.google.auto.value.AutoValue;
-import io.opencensus.internal.StringUtil;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import javax.annotation.concurrent.Immutable;
-
-/**
- * MeasurementDescriptor.
- *
- * <p>Note: MeasurementDescriptor names are {@link String}s with enforced restrictions.
- */
-@Immutable
-@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 create(Name.create(name), description, unit);
- }
-
- /**
- * Constructs a new {@link MeasurementDescriptor}.
- */
- public static MeasurementDescriptor create(
- Name name, String description, MeasurementUnit unit) {
- return new AutoValue_MeasurementDescriptor(name, description, unit);
- }
-
- /**
- * Name of measurement, e.g. rpc_latency, cpu. Must be unique.
- */
- public abstract MeasurementDescriptor.Name getMeasurementDescriptorName();
-
- /**
- * Name of measurement, as a {@code String}.
- */
- public final String getName() {
- return getMeasurementDescriptorName().asString();
- }
-
- /**
- * Detailed description of the measurement, used in documentation.
- */
- public abstract String getDescription();
-
- /**
- * The units in which {@link MeasurementDescriptor} values are measured.
- */
- public abstract MeasurementUnit getUnit();
-
- /**
- * Fundamental units of measurement.
- */
- public enum BasicUnit {
- SCALAR,
- BITS,
- BYTES,
- SECONDS,
- CORES;
- }
-
- /**
- * The name of a {@code MeasurementDescriptor}.
- */
- // This type should be used as the key when associating data with MeasurementDescriptors.
- @Immutable
- @AutoValue
- public abstract static class Name {
-
- Name() {}
-
- /**
- * Returns the name as a {@code String}.
- *
- * @return the name as a {@code String}.
- */
- public abstract String asString();
-
- /**
- * Creates a {@code MeasurementDescriptor.Name} from a {@code String}.
- *
- * @param name the name {@code String}.
- * @return a {@code MeasurementDescriptor.Name} with the given name {@code String}.
- */
- public static Name create(String name) {
- return new AutoValue_MeasurementDescriptor_Name(StringUtil.sanitize(name));
- }
- }
-
- /**
- * MeasurementUnit lets you build compound units of the form
- * 10^n * (A * B * ...) / (X * Y * ...),
- * where the elements in the numerator and denominator are all BasicUnits. A
- * MeasurementUnit must have at least one BasicUnit in its numerator.
- *
- * <p>To specify multiplication in the numerator or denominator, simply specify
- * multiple numerator or denominator fields. For example:
- *
- * <p>- byte-seconds (i.e. bytes * seconds):
- * numerator: BYTES
- * numerator: SECS
- *
- * <p>- events/sec^2 (i.e. rate of change of events/sec):
- * numerator: SCALAR
- * denominator: SECS
- * denominator: SECS
- *
- * <p>To specify multiples (in power of 10) of units, specify a non-zero power10
- * value, for example:
- *
- * <p>- MB/s (i.e. megabytes / s):
- * power10: 6
- * numerator: BYTES
- * denominator: SECS
- *
- * <p>- nanoseconds
- * power10: -9
- * numerator: SECS
- */
- @Immutable
- @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 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 AutoValue_MeasurementDescriptor_MeasurementUnit(
- power10, numerators, Collections.<BasicUnit>emptyList());
- }
-
- /**
- * Unit multiplier (i.e. 10^power10).
- */
- public abstract int getPower10();
-
- /**
- * Unit Numerators.
- *
- * <p>Note: The returned list is unmodifiable and attempts to update it will throw an
- * UnsupportedOperationException.
- */
- public abstract List<BasicUnit> getNumerators();
-
- /**
- * Unit Denominators.
- *
- * <p>Note: The returned list is unmodifiable and attempts to update it will throw an
- * UnsupportedOperationException.
- */
- public abstract List<BasicUnit> getDenominators();
- }
-}
diff --git a/core/src/main/java/io/opencensus/stats/MeasurementMap.java b/core/src/main/java/io/opencensus/stats/MeasurementMap.java
index a961bf17..6694a933 100644
--- a/core/src/main/java/io/opencensus/stats/MeasurementMap.java
+++ b/core/src/main/java/io/opencensus/stats/MeasurementMap.java
@@ -18,34 +18,34 @@ import java.util.Iterator;
import java.util.NoSuchElementException;
/**
- * A map from {@link MeasurementDescriptor}'s to measured values.
+ * A map from {@link Measure}'s to measured values.
*/
public final class MeasurementMap implements Iterable<MeasurementValue> {
/**
- * Constructs a {@link MeasurementMap} from the given {@link MeasurementDescriptor}
+ * Constructs a {@link MeasurementMap} from the given {@link Measure}
* and associated value.
*/
- public static MeasurementMap of(MeasurementDescriptor measurement, double value) {
- return builder().put(measurement, value).build();
+ public static MeasurementMap of(Measure measure, double value) {
+ return builder().put(measure, value).build();
}
/**
- * Constructs a {@link MeasurementMap} from the given {@link MeasurementDescriptor}'s
+ * Constructs a {@link MeasurementMap} from the given {@link Measure}'s
* and associated values.
*/
- public static MeasurementMap of(MeasurementDescriptor measurement1, double value1,
- MeasurementDescriptor measurement2, double value2) {
- return builder().put(measurement1, value1).put(measurement2, value2).build();
+ public static MeasurementMap of(Measure measure1, double value1,
+ Measure measure2, double value2) {
+ return builder().put(measure1, value1).put(measure2, value2).build();
}
/**
- * Constructs a {@link MeasurementMap} from the given {@link MeasurementDescriptor}'s
+ * Constructs a {@link MeasurementMap} from the given {@link Measure}'s
* and associated values.
*/
- public static MeasurementMap of(MeasurementDescriptor measurement1, double value1,
- MeasurementDescriptor measurement2, double value2,
- MeasurementDescriptor measurement3, double value3) {
- return builder().put(measurement1, value1).put(measurement2, value2).put(measurement3, value3)
+ public static MeasurementMap of(Measure measure1, double value1,
+ Measure measure2, double value2,
+ Measure measure3, double value3) {
+ return builder().put(measure1, value1).put(measure2, value2).put(measure3, value3)
.build();
}
@@ -57,14 +57,14 @@ public final class MeasurementMap implements Iterable<MeasurementValue> {
}
/**
- * Returns the number of measurements in this {@link MeasurementMap}.
+ * Returns the number of measures in this {@link MeasurementMap}.
*/
public int size() {
- return measurements.size();
+ return measures.size();
}
/**
- * Returns an {@link Iterator} over the measurement/value mappings in this {@link MeasurementMap}.
+ * Returns an {@link Iterator} over the measure/value mappings in this {@link MeasurementMap}.
* The {@code Iterator} does not support {@link Iterator#remove()}.
*/
@Override
@@ -72,10 +72,10 @@ public final class MeasurementMap implements Iterable<MeasurementValue> {
return new MeasurementMapIterator();
}
- private final ArrayList<MeasurementValue> measurements;
+ private final ArrayList<MeasurementValue> measures;
- private MeasurementMap(ArrayList<MeasurementValue> measurements) {
- this.measurements = measurements;
+ private MeasurementMap(ArrayList<MeasurementValue> measures) {
+ this.measures = measures;
}
/**
@@ -83,45 +83,45 @@ public final class MeasurementMap implements Iterable<MeasurementValue> {
*/
public static class Builder {
/**
- * Associates the {@link MeasurementDescriptor} with the given value. Subsequent updates to the
- * same {@link MeasurementDescriptor} are ignored.
+ * Associates the {@link Measure} with the given value. Subsequent updates to the
+ * same {@link Measure} are ignored.
*
- * @param measurement the {@link MeasurementDescriptor}
- * @param value the value to be associated with {@code measurement}
+ * @param measure the {@link Measure}
+ * @param value the value to be associated with {@code measure}
* @return this
*/
- public Builder put(MeasurementDescriptor measurement, double value) {
- measurements.add(MeasurementValue.create(measurement, value));
+ public Builder put(Measure measure, double value) {
+ measures.add(MeasurementValue.create(measure, value));
return this;
}
/**
- * Constructs a {@link MeasurementMap} from the current measurements.
+ * Constructs a {@link MeasurementMap} from the current measures.
*/
public MeasurementMap build() {
- // Note: this makes adding measurements quadratic but is fastest for the sizes of
+ // Note: this makes adding measures quadratic but is fastest for the sizes of
// MeasurementMaps that we should see. We may want to go to a strategy of sort/eliminate
// for larger MeasurementMaps.
- for (int i = 0; i < measurements.size(); i++) {
- MeasurementDescriptor.Name current =
- measurements.get(i).getMeasurement().getMeasurementDescriptorName();
- for (int j = i + 1; j < measurements.size(); j++) {
- if (current.equals(measurements.get(j).getMeasurement().getMeasurementDescriptorName())) {
- measurements.remove(j);
+ for (int i = 0; i < measures.size(); i++) {
+ String current =
+ measures.get(i).getMeasurement().getName();
+ for (int j = i + 1; j < measures.size(); j++) {
+ if (current.equals(measures.get(j).getMeasurement().getName())) {
+ measures.remove(j);
j--;
}
}
}
- return new MeasurementMap(measurements);
+ return new MeasurementMap(measures);
}
- private final ArrayList<MeasurementValue> measurements = new ArrayList<MeasurementValue>();
+ private final ArrayList<MeasurementValue> measures = new ArrayList<MeasurementValue>();
private Builder() {
}
}
- // Provides an unmodifiable Iterator over this instance's measurements.
+ // Provides an unmodifiable Iterator over this instance's measures.
private final class MeasurementMapIterator implements Iterator<MeasurementValue> {
@Override
public boolean hasNext() {
@@ -130,10 +130,10 @@ public final class MeasurementMap implements Iterable<MeasurementValue> {
@Override
public MeasurementValue next() {
- if (position >= measurements.size()) {
+ if (position >= measures.size()) {
throw new NoSuchElementException();
}
- return measurements.get(position++);
+ return measures.get(position++);
}
@Override
@@ -141,7 +141,7 @@ public final class MeasurementMap implements Iterable<MeasurementValue> {
throw new UnsupportedOperationException();
}
- private final int length = measurements.size();
+ private final int length = measures.size();
private int position = 0;
}
}
diff --git a/core/src/main/java/io/opencensus/stats/MeasurementValue.java b/core/src/main/java/io/opencensus/stats/MeasurementValue.java
index 6c9cc3a6..efee6f39 100644
--- a/core/src/main/java/io/opencensus/stats/MeasurementValue.java
+++ b/core/src/main/java/io/opencensus/stats/MeasurementValue.java
@@ -21,14 +21,14 @@ public class MeasurementValue {
/**
* Constructs a measured value.
*/
- public static MeasurementValue create(MeasurementDescriptor name, double value) {
+ public static MeasurementValue create(Measure name, double value) {
return new MeasurementValue(name, value);
}
/**
- * Extracts the measured {@link MeasurementDescriptor}.
+ * Extracts the measured {@link Measure}.
*/
- public MeasurementDescriptor getMeasurement() {
+ public Measure getMeasurement() {
return name;
}
@@ -39,10 +39,10 @@ public class MeasurementValue {
return value;
}
- private final MeasurementDescriptor name;
+ private final Measure name;
private final double value;
- private MeasurementValue(MeasurementDescriptor name, double value) {
+ private MeasurementValue(Measure name, double value) {
this.name = name;
this.value = value;
}
diff --git a/core/src/main/java/io/opencensus/stats/RpcMeasurementConstants.java b/core/src/main/java/io/opencensus/stats/RpcMeasurementConstants.java
index c015e17c..415529a1 100644
--- a/core/src/main/java/io/opencensus/stats/RpcMeasurementConstants.java
+++ b/core/src/main/java/io/opencensus/stats/RpcMeasurementConstants.java
@@ -13,14 +13,10 @@
package io.opencensus.stats;
-import io.opencensus.stats.MeasurementDescriptor.BasicUnit;
-import io.opencensus.stats.MeasurementDescriptor.MeasurementUnit;
-import java.util.Arrays;
-import java.util.List;
-
/**
* Constants for collecting rpc stats.
*/
+// TODO(songya): change *_COUNT constants to LongMeasure if it's supported in v0.1.
public final class RpcMeasurementConstants {
// Rpc tag keys.
@@ -28,125 +24,125 @@ public final class RpcMeasurementConstants {
public static final TagKey RPC_CLIENT_METHOD = TagKey.create("method");
public static final TagKey RPC_SERVER_METHOD = TagKey.create("method");
- // Constants used to define the following MeasurementDescriptors.
- private static final List<BasicUnit> bytes = Arrays.asList(BasicUnit.BYTES);
- private static final List<BasicUnit> scalar = Arrays.asList(BasicUnit.SCALAR);
- private static final List<BasicUnit> seconds = Arrays.asList(BasicUnit.SECONDS);
+ // Constants used to define the following Measures.
+ private static final String BYTE = "By";
+ private static final String COUNT = "1";
+ private static final String MILLISECOND = "ms";
- // RPC client {@link MeasurementDescriptor}s.
- public static final MeasurementDescriptor RPC_CLIENT_ERROR_COUNT =
- MeasurementDescriptor.create(
+ // RPC client Measures.
+ public static final Measure RPC_CLIENT_ERROR_COUNT =
+ Measure.DoubleMeasure.create(
"grpc.io/client/error_count",
"RPC Errors",
- MeasurementUnit.create(0, scalar));
- public static final MeasurementDescriptor RPC_CLIENT_REQUEST_BYTES =
- MeasurementDescriptor.create(
+ COUNT);
+ public static final Measure RPC_CLIENT_REQUEST_BYTES =
+ Measure.DoubleMeasure.create(
"grpc.io/client/request_bytes",
"Request bytes",
- MeasurementUnit.create(0, bytes));
- public static final MeasurementDescriptor RPC_CLIENT_RESPONSE_BYTES =
- MeasurementDescriptor.create(
+ BYTE);
+ public static final Measure RPC_CLIENT_RESPONSE_BYTES =
+ Measure.DoubleMeasure.create(
"grpc.io/client/response_bytes",
"Response bytes",
- MeasurementUnit.create(0, bytes));
- public static final MeasurementDescriptor RPC_CLIENT_ROUNDTRIP_LATENCY =
- MeasurementDescriptor.create(
+ BYTE);
+ public static final Measure RPC_CLIENT_ROUNDTRIP_LATENCY =
+ Measure.DoubleMeasure.create(
"grpc.io/client/roundtrip_latency",
"RPC roundtrip latency msec",
- MeasurementUnit.create(-3, seconds));
- public static final MeasurementDescriptor RPC_CLIENT_SERVER_ELAPSED_TIME =
- MeasurementDescriptor.create(
+ MILLISECOND);
+ public static final Measure RPC_CLIENT_SERVER_ELAPSED_TIME =
+ Measure.DoubleMeasure.create(
"grpc.io/client/server_elapsed_time",
"Server elapsed time in msecs",
- MeasurementUnit.create(-3, seconds));
- public static final MeasurementDescriptor RPC_CLIENT_UNCOMPRESSED_REQUEST_BYTES =
- MeasurementDescriptor.create(
+ MILLISECOND);
+ public static final Measure RPC_CLIENT_UNCOMPRESSED_REQUEST_BYTES =
+ Measure.DoubleMeasure.create(
"grpc.io/client/uncompressed_request_bytes",
"Uncompressed Request bytes",
- MeasurementUnit.create(0, bytes));
- public static final MeasurementDescriptor RPC_CLIENT_UNCOMPRESSED_RESPONSE_BYTES =
- MeasurementDescriptor.create(
+ BYTE);
+ public static final Measure RPC_CLIENT_UNCOMPRESSED_RESPONSE_BYTES =
+ Measure.DoubleMeasure.create(
"grpc.io/client/uncompressed_response_bytes",
"Uncompressed Response bytes",
- MeasurementUnit.create(0, bytes));
- public static final MeasurementDescriptor RPC_CLIENT_STARTED_COUNT =
- MeasurementDescriptor.create(
+ BYTE);
+ public static final Measure RPC_CLIENT_STARTED_COUNT =
+ Measure.DoubleMeasure.create(
"grpc.io/client/started_count",
"Number of client RPCs (streams) started",
- MeasurementUnit.create(0, scalar));
- public static final MeasurementDescriptor RPC_CLIENT_FINISHED_COUNT =
- MeasurementDescriptor.create(
+ COUNT);
+ public static final Measure RPC_CLIENT_FINISHED_COUNT =
+ Measure.DoubleMeasure.create(
"grpc.io/client/finished_count",
"Number of client RPCs (streams) finished",
- MeasurementUnit.create(0, scalar));
- public static final MeasurementDescriptor RPC_CLIENT_REQUEST_COUNT =
- MeasurementDescriptor.create(
+ COUNT);
+ public static final Measure RPC_CLIENT_REQUEST_COUNT =
+ Measure.DoubleMeasure.create(
"grpc.io/client/request_count",
"Number of client RPC request messages",
- MeasurementUnit.create(0, scalar));
- public static final MeasurementDescriptor RPC_CLIENT_RESPONSE_COUNT =
- MeasurementDescriptor.create(
+ COUNT);
+ public static final Measure RPC_CLIENT_RESPONSE_COUNT =
+ Measure.DoubleMeasure.create(
"grpc.io/client/response_count",
"Number of client RPC response messages",
- MeasurementUnit.create(0, scalar));
+ COUNT);
- // RPC server {@link MeasurementDescriptor}s.
- public static final MeasurementDescriptor RPC_SERVER_ERROR_COUNT =
- MeasurementDescriptor.create(
+ // RPC server Measures.
+ public static final Measure RPC_SERVER_ERROR_COUNT =
+ Measure.DoubleMeasure.create(
"grpc.io/server/error_count",
"RPC Errors",
- MeasurementUnit.create(0, scalar));
- public static final MeasurementDescriptor RPC_SERVER_REQUEST_BYTES =
- MeasurementDescriptor.create(
+ COUNT);
+ public static final Measure RPC_SERVER_REQUEST_BYTES =
+ Measure.DoubleMeasure.create(
"grpc.io/server/request_bytes",
"Request bytes",
- MeasurementUnit.create(0, bytes));
- public static final MeasurementDescriptor RPC_SERVER_RESPONSE_BYTES =
- MeasurementDescriptor.create(
+ BYTE);
+ public static final Measure RPC_SERVER_RESPONSE_BYTES =
+ Measure.DoubleMeasure.create(
"grpc.io/server/response_bytes",
"Response bytes",
- MeasurementUnit.create(0, bytes));
- public static final MeasurementDescriptor RPC_SERVER_SERVER_ELAPSED_TIME =
- MeasurementDescriptor.create(
+ BYTE);
+ public static final Measure RPC_SERVER_SERVER_ELAPSED_TIME =
+ Measure.DoubleMeasure.create(
"grpc.io/server/server_elapsed_time",
"Server elapsed time in msecs",
- MeasurementUnit.create(-3, seconds));
- public static final MeasurementDescriptor RPC_SERVER_SERVER_LATENCY =
- MeasurementDescriptor.create(
+ MILLISECOND);
+ public static final Measure RPC_SERVER_SERVER_LATENCY =
+ Measure.DoubleMeasure.create(
"grpc.io/server/server_latency",
"Latency in msecs",
- MeasurementUnit.create(-3, seconds));
- public static final MeasurementDescriptor RPC_SERVER_UNCOMPRESSED_REQUEST_BYTES =
- MeasurementDescriptor.create(
+ MILLISECOND);
+ public static final Measure RPC_SERVER_UNCOMPRESSED_REQUEST_BYTES =
+ Measure.DoubleMeasure.create(
"grpc.io/server/uncompressed_request_bytes",
"Uncompressed Request bytes",
- MeasurementUnit.create(0, bytes));
- public static final MeasurementDescriptor RPC_SERVER_UNCOMPRESSED_RESPONSE_BYTES =
- MeasurementDescriptor.create(
+ BYTE);
+ public static final Measure RPC_SERVER_UNCOMPRESSED_RESPONSE_BYTES =
+ Measure.DoubleMeasure.create(
"grpc.io/server/uncompressed_response_bytes",
"Uncompressed Response bytes",
- MeasurementUnit.create(0, bytes));
- public static final MeasurementDescriptor RPC_SERVER_STARTED_COUNT =
- MeasurementDescriptor.create(
+ BYTE);
+ public static final Measure RPC_SERVER_STARTED_COUNT =
+ Measure.DoubleMeasure.create(
"grpc.io/server/started_count",
"Number of server RPCs (streams) started",
- MeasurementUnit.create(0, scalar));
- public static final MeasurementDescriptor RPC_SERVER_FINISHED_COUNT =
- MeasurementDescriptor.create(
+ COUNT);
+ public static final Measure RPC_SERVER_FINISHED_COUNT =
+ Measure.DoubleMeasure.create(
"grpc.io/server/finished_count",
"Number of server RPCs (streams) finished",
- MeasurementUnit.create(0, scalar));
- public static final MeasurementDescriptor RPC_SERVER_REQUEST_COUNT =
- MeasurementDescriptor.create(
+ COUNT);
+ public static final Measure RPC_SERVER_REQUEST_COUNT =
+ Measure.DoubleMeasure.create(
"grpc.io/server/request_count",
"Number of server RPC request messages",
- MeasurementUnit.create(0, scalar));
- public static final MeasurementDescriptor RPC_SERVER_RESPONSE_COUNT =
- MeasurementDescriptor.create(
+ COUNT);
+ public static final Measure RPC_SERVER_RESPONSE_COUNT =
+ Measure.DoubleMeasure.create(
"grpc.io/server/response_count",
"Number of server RPC response messages",
- MeasurementUnit.create(0, scalar));
+ COUNT);
// Visible for testing.
RpcMeasurementConstants() {
diff --git a/core/src/main/java/io/opencensus/stats/ViewDescriptor.java b/core/src/main/java/io/opencensus/stats/ViewDescriptor.java
index bef15cc5..22859ce6 100644
--- a/core/src/main/java/io/opencensus/stats/ViewDescriptor.java
+++ b/core/src/main/java/io/opencensus/stats/ViewDescriptor.java
@@ -46,10 +46,10 @@ public abstract class ViewDescriptor {
/**
* Measurement type of this view.
*/
- public abstract MeasurementDescriptor getMeasurementDescriptor();
+ public abstract Measure getMeasure();
/**
- * Tag keys to match with the associated {@link MeasurementDescriptor}. If no keys are specified,
+ * Tag keys to match with the associated {@link Measure}. If no keys are specified,
* then all stats are recorded. Keys must be unique.
*
* <p>Note: The returned list is unmodifiable, attempts to update it will throw an
@@ -104,13 +104,13 @@ public abstract class ViewDescriptor {
public static DistributionViewDescriptor create(
String name,
String description,
- MeasurementDescriptor measurementDescriptor,
+ Measure measure,
DistributionAggregationDescriptor distributionAggregationDescriptor,
List<TagKey> tagKeys) {
return create(
Name.create(name),
description,
- measurementDescriptor,
+ measure,
distributionAggregationDescriptor,
tagKeys);
}
@@ -121,13 +121,13 @@ public abstract class ViewDescriptor {
public static DistributionViewDescriptor create(
Name name,
String description,
- MeasurementDescriptor measurementDescriptor,
+ Measure measure,
DistributionAggregationDescriptor distributionAggregationDescriptor,
List<TagKey> tagKeys) {
return new AutoValue_ViewDescriptor_DistributionViewDescriptor(
name,
description,
- measurementDescriptor,
+ measure,
Collections.unmodifiableList(new ArrayList<TagKey>(tagKeys)),
distributionAggregationDescriptor);
}
@@ -158,13 +158,13 @@ public abstract class ViewDescriptor {
public static IntervalViewDescriptor create(
String name,
String description,
- MeasurementDescriptor measurementDescriptor,
+ Measure measure,
IntervalAggregationDescriptor intervalAggregationDescriptor,
List<TagKey> tagKeys) {
return create(
Name.create(name),
description,
- measurementDescriptor,
+ measure,
intervalAggregationDescriptor,
tagKeys);
}
@@ -175,13 +175,13 @@ public abstract class ViewDescriptor {
public static IntervalViewDescriptor create(
Name name,
String description,
- MeasurementDescriptor measurementDescriptor,
+ Measure measure,
IntervalAggregationDescriptor intervalAggregationDescriptor,
List<TagKey> tagKeys) {
return new AutoValue_ViewDescriptor_IntervalViewDescriptor(
name,
description,
- measurementDescriptor,
+ measure,
Collections.unmodifiableList(new ArrayList<TagKey>(tagKeys)),
intervalAggregationDescriptor);
}
diff --git a/core/src/test/java/io/opencensus/stats/MeasureTest.java b/core/src/test/java/io/opencensus/stats/MeasureTest.java
new file mode 100644
index 00000000..aff4c873
--- /dev/null
+++ b/core/src/test/java/io/opencensus/stats/MeasureTest.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2016, Google Inc.
+ * 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.stats;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import com.google.common.testing.EqualsTester;
+import io.opencensus.internal.StringUtil;
+import java.util.Arrays;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+/**
+ * Tests for {@link Measure}
+ */
+@RunWith(JUnit4.class)
+public final class MeasureTest {
+
+ @Ignore // TODO: determine whether there are any restrictions on measure names.
+ @Test
+ public void testNameMaxLength() {
+ char[] name = new char[StringUtil.MAX_LENGTH];
+ char[] truncName = new char[StringUtil.MAX_LENGTH + 10];
+ Arrays.fill(name, 'n');
+ Arrays.fill(truncName, 'n');
+ assertThat(makeSimpleMeasure(new String(name)).getName())
+ .isEqualTo(makeSimpleMeasure(new String(truncName)).getName());
+ }
+
+ @Ignore // TODO: determine whether there are any restrictions on measure names.
+ @Test
+ public void testNameBadChar() {
+ assertThat(makeSimpleMeasure("\2ab\3cd").getName())
+ .isEqualTo(StringUtil.UNPRINTABLE_CHAR_SUBSTITUTE + "ab"
+ + StringUtil.UNPRINTABLE_CHAR_SUBSTITUTE + "cd");
+ }
+
+ @Test
+ public void testDoubleMeasureComponents() {
+ Measure measurement = Measure.DoubleMeasure.create(
+ "Foo",
+ "The description of Foo",
+ "Mbit/s");
+ assertThat(measurement.getName()).isEqualTo("Foo");
+ assertThat(measurement.getDescription()).isEqualTo("The description of Foo");
+ assertThat(measurement.getUnit()).isEqualTo("Mbit/s");
+ }
+
+ @Test
+ public void testLongMeasureComponents() {
+ Measure measurement = Measure.LongMeasure.create(
+ "Bar",
+ "The description of Bar",
+ "1");
+ assertThat(measurement.getName()).isEqualTo("Bar");
+ assertThat(measurement.getDescription()).isEqualTo("The description of Bar");
+ assertThat(measurement.getUnit()).isEqualTo("1");
+ }
+
+ @Test
+ public void testDoubleMeasureEquals() {
+ new EqualsTester()
+ .addEqualityGroup(
+ Measure.DoubleMeasure.create(
+ "name",
+ "description",
+ "bit/s"),
+ Measure.DoubleMeasure.create(
+ "name",
+ "description",
+ "bit/s"))
+ .addEqualityGroup(
+ Measure.DoubleMeasure.create(
+ "name",
+ "description 2",
+ "bit/s"))
+ .testEquals();
+ }
+
+ @Test
+ public void testLongMeasureEquals() {
+ new EqualsTester()
+ .addEqualityGroup(
+ Measure.LongMeasure.create(
+ "name",
+ "description",
+ "bit/s"),
+ Measure.LongMeasure.create(
+ "name",
+ "description",
+ "bit/s"))
+ .addEqualityGroup(
+ Measure.LongMeasure.create(
+ "name",
+ "description 2",
+ "bit/s"))
+ .testEquals();
+ }
+
+ private static final Measure makeSimpleMeasure(String name) {
+ return Measure.DoubleMeasure.create(name, name + " description", "1");
+ }
+}
diff --git a/core/src/test/java/io/opencensus/stats/MeasurementDescriptorTest.java b/core/src/test/java/io/opencensus/stats/MeasurementDescriptorTest.java
deleted file mode 100644
index 47b6bc57..00000000
--- a/core/src/test/java/io/opencensus/stats/MeasurementDescriptorTest.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright 2016, Google Inc.
- * 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.stats;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import com.google.common.testing.EqualsTester;
-import io.opencensus.internal.StringUtil;
-import io.opencensus.stats.MeasurementDescriptor.BasicUnit;
-import io.opencensus.stats.MeasurementDescriptor.MeasurementUnit;
-import java.util.Arrays;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-/**
- * Tests for {@link MeasurementDescriptor}
- */
-@RunWith(JUnit4.class)
-public final class MeasurementDescriptorTest {
- @Test
- public void testNameMaxLength() {
- char[] name = new char[MeasurementDescriptor.MAX_LENGTH];
- char[] truncName = new char[MeasurementDescriptor.MAX_LENGTH + 10];
- Arrays.fill(name, 'n');
- Arrays.fill(truncName, 'n');
- assertThat(makeSimpleDescriptor(new String(name)).getName())
- .isEqualTo(makeSimpleDescriptor(new String(truncName)).getName());
- }
-
- @Test
- public void testNameBadChar() {
- assertThat(makeSimpleDescriptor("\2ab\3cd").getName())
- .isEqualTo(StringUtil.UNPRINTABLE_CHAR_SUBSTITUTE + "ab"
- + StringUtil.UNPRINTABLE_CHAR_SUBSTITUTE + "cd");
- }
-
- @Test
- public void testComponents() {
- MeasurementDescriptor measurement = MeasurementDescriptor.create(
- "Foo",
- "The description of Foo",
- MeasurementUnit.create(
- 6, Arrays.asList(BasicUnit.BITS), Arrays.asList(BasicUnit.SECONDS)));
- assertThat(measurement.getName()).isEqualTo("Foo");
- assertThat(measurement.getMeasurementDescriptorName())
- .isEqualTo(MeasurementDescriptor.Name.create("Foo"));
- assertThat(measurement.getDescription()).isEqualTo("The description of Foo");
- assertThat(measurement.getUnit().getPower10()).isEqualTo(6);
- assertThat(measurement.getUnit().getNumerators()).hasSize(1);
- assertThat(measurement.getUnit().getNumerators().get(0)).isEqualTo(BasicUnit.BITS);
- assertThat(measurement.getUnit().getDenominators()).hasSize(1);
- assertThat(measurement.getUnit().getDenominators().get(0)).isEqualTo(BasicUnit.SECONDS);
- }
-
- @Test
- public void testMeasurementDescriptorNameSanitization() {
- assertThat(MeasurementDescriptor.Name.create("md\1").asString())
- .isEqualTo("md" + StringUtil.UNPRINTABLE_CHAR_SUBSTITUTE);
- }
-
- @Test
- public void testMeasurementDescriptorNameEquals() {
- new EqualsTester()
- .addEqualityGroup(
- MeasurementDescriptor.Name.create("md1"), MeasurementDescriptor.Name.create("md1"))
- .addEqualityGroup(MeasurementDescriptor.Name.create("md2"))
- .testEquals();
- }
-
- @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(
- MeasurementDescriptor.Name.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,
- name + " description",
- MeasurementUnit.create(1, Arrays.asList(BasicUnit.SCALAR)));
- }
-}
diff --git a/core/src/test/java/io/opencensus/stats/MeasurementMapTest.java b/core/src/test/java/io/opencensus/stats/MeasurementMapTest.java
index 0f9f52f1..ad5af9ba 100644
--- a/core/src/test/java/io/opencensus/stats/MeasurementMapTest.java
+++ b/core/src/test/java/io/opencensus/stats/MeasurementMapTest.java
@@ -16,10 +16,7 @@ package io.opencensus.stats;
import static com.google.common.truth.Truth.assertThat;
import com.google.common.collect.ImmutableList;
-import io.opencensus.stats.MeasurementDescriptor.BasicUnit;
-import io.opencensus.stats.MeasurementDescriptor.MeasurementUnit;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Iterator;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -68,14 +65,14 @@ public class MeasurementMapTest {
ArrayList<MeasurementValue> expected = new ArrayList<MeasurementValue>(10);
MeasurementMap.Builder builder = MeasurementMap.builder();
for (int i = 1; i <= 10; i++) {
- expected.add(MeasurementValue.create(makeSimpleMeasurement("m" + i), i * 11.1));
- builder.put(makeSimpleMeasurement("m" + i), i * 11.1);
+ expected.add(MeasurementValue.create(makeSimpleMeasure("m" + i), i * 11.1));
+ builder.put(makeSimpleMeasure("m" + i), i * 11.1);
assertEquals(expected, builder.build());
}
}
@Test
- public void testDuplicateMeasurementDescriptors() {
+ public void testDuplicateMeasures() {
assertEquals(MeasurementMap.of(M1, 1.0, M1, 1.0), MeasurementMap.of(M1, 1.0));
assertEquals(MeasurementMap.of(M1, 1.0, M1, 2.0), MeasurementMap.of(M1, 1.0));
assertEquals(MeasurementMap.of(M1, 1.0, M1, 2.0, M1, 3.0), MeasurementMap.of(M1, 1.0));
@@ -87,20 +84,18 @@ public class MeasurementMapTest {
public void testSize() {
MeasurementMap.Builder builder = MeasurementMap.builder();
for (int i = 1; i <= 10; i++) {
- builder.put(makeSimpleMeasurement("m" + i), i * 11.1);
+ builder.put(makeSimpleMeasure("m" + i), i * 11.1);
assertThat(builder.build()).hasSize(i);
}
}
- private static final MeasurementUnit simpleMeasurementUnit =
- MeasurementUnit.create(1, Arrays.asList(BasicUnit.SCALAR));
- private static final MeasurementDescriptor M1 = makeSimpleMeasurement("m1");
- private static final MeasurementDescriptor M2 = makeSimpleMeasurement("m2");
- private static final MeasurementDescriptor M3 = makeSimpleMeasurement("m3");
+ private static final Measure M1 = makeSimpleMeasure("m1");
+ private static final Measure M2 = makeSimpleMeasure("m2");
+ private static final Measure M3 = makeSimpleMeasure("m3");
- private static final MeasurementDescriptor makeSimpleMeasurement(String measurement) {
- return MeasurementDescriptor.create(
- measurement, measurement + " description", simpleMeasurementUnit);
+ private static final Measure makeSimpleMeasure(String measure) {
+ return Measure.DoubleMeasure.create(
+ measure, measure + " description", "1");
}
private static void assertEquals(
@@ -110,8 +105,8 @@ public class MeasurementMapTest {
while (e.hasNext() && a.hasNext()) {
MeasurementValue expectedMeasurement = e.next();
MeasurementValue actualMeasurement = a.next();
- assertThat(expectedMeasurement.getMeasurement().getMeasurementDescriptorName())
- .isEqualTo(actualMeasurement.getMeasurement().getMeasurementDescriptorName());
+ assertThat(expectedMeasurement.getMeasurement().getName())
+ .isEqualTo(actualMeasurement.getMeasurement().getName());
assertThat(expectedMeasurement.getValue())
.isWithin(0.00000001).of(actualMeasurement.getValue());
}
diff --git a/core/src/test/java/io/opencensus/stats/ViewDescriptorTest.java b/core/src/test/java/io/opencensus/stats/ViewDescriptorTest.java
index c0ee7143..e8c5cd80 100644
--- a/core/src/test/java/io/opencensus/stats/ViewDescriptorTest.java
+++ b/core/src/test/java/io/opencensus/stats/ViewDescriptorTest.java
@@ -19,8 +19,6 @@ import static org.junit.Assert.assertTrue;
import com.google.common.testing.EqualsTester;
import io.opencensus.common.Duration;
import io.opencensus.common.Function;
-import io.opencensus.stats.MeasurementDescriptor.BasicUnit;
-import io.opencensus.stats.MeasurementDescriptor.MeasurementUnit;
import io.opencensus.stats.ViewDescriptor.DistributionViewDescriptor;
import io.opencensus.stats.ViewDescriptor.IntervalViewDescriptor;
import java.util.Arrays;
@@ -38,13 +36,13 @@ public final class ViewDescriptorTest {
public void testDistributionViewDescriptor() {
DistributionAggregationDescriptor dAggrDescriptor = DistributionAggregationDescriptor.create();
final ViewDescriptor viewDescriptor = DistributionViewDescriptor.create(
- name, description, measurementDescriptor, dAggrDescriptor, keys);
+ name, description, measure, dAggrDescriptor, keys);
assertThat(viewDescriptor.getViewDescriptorName()).isEqualTo(name);
assertThat(viewDescriptor.getName()).isEqualTo(name.asString());
assertThat(viewDescriptor.getDescription()).isEqualTo(description);
- assertThat(viewDescriptor.getMeasurementDescriptor().getMeasurementDescriptorName())
- .isEqualTo(measurementDescriptor.getMeasurementDescriptorName());
+ assertThat(viewDescriptor.getMeasure().getName())
+ .isEqualTo(measure.getName());
assertThat(viewDescriptor.getTagKeys()).hasSize(2);
assertThat(viewDescriptor.getTagKeys().get(0).toString()).isEqualTo("foo");
assertThat(viewDescriptor.getTagKeys().get(1).toString()).isEqualTo("bar");
@@ -66,13 +64,13 @@ public final class ViewDescriptorTest {
IntervalAggregationDescriptor iAggrDescriptor = IntervalAggregationDescriptor.create(
Arrays.asList(Duration.fromMillis(1), Duration.fromMillis(22), Duration.fromMillis(333)));
final ViewDescriptor viewDescriptor = IntervalViewDescriptor.create(
- name, description, measurementDescriptor, iAggrDescriptor, keys);
+ name, description, measure, iAggrDescriptor, keys);
assertThat(viewDescriptor.getViewDescriptorName()).isEqualTo(name);
assertThat(viewDescriptor.getName()).isEqualTo(name.asString());
assertThat(viewDescriptor.getDescription()).isEqualTo(description);
- assertThat(viewDescriptor.getMeasurementDescriptor().getMeasurementDescriptorName())
- .isEqualTo(measurementDescriptor.getMeasurementDescriptorName());
+ assertThat(viewDescriptor.getMeasure().getName())
+ .isEqualTo(measure.getName());
assertThat(viewDescriptor.getTagKeys()).hasSize(2);
assertThat(viewDescriptor.getTagKeys().get(0).toString()).isEqualTo("foo");
assertThat(viewDescriptor.getTagKeys().get(1).toString()).isEqualTo("bar");
@@ -97,20 +95,20 @@ public final class ViewDescriptorTest {
new EqualsTester()
.addEqualityGroup(
DistributionViewDescriptor.create(
- name, description, measurementDescriptor, dAggrDescriptor, keys),
+ name, description, measure, dAggrDescriptor, keys),
DistributionViewDescriptor.create(
- name, description, measurementDescriptor, dAggrDescriptor, keys))
+ name, description, measure, dAggrDescriptor, keys))
.addEqualityGroup(
DistributionViewDescriptor.create(
- name, description + 2, measurementDescriptor, dAggrDescriptor, keys))
+ name, description + 2, measure, dAggrDescriptor, keys))
.addEqualityGroup(
IntervalViewDescriptor.create(
- name, description, measurementDescriptor, iAggrDescriptor, keys),
+ name, description, measure, iAggrDescriptor, keys),
IntervalViewDescriptor.create(
- name, description, measurementDescriptor, iAggrDescriptor, keys))
+ name, description, measure, iAggrDescriptor, keys))
.addEqualityGroup(
IntervalViewDescriptor.create(
- name, description + 2, measurementDescriptor, iAggrDescriptor, keys))
+ name, description + 2, measure, iAggrDescriptor, keys))
.testEquals();
}
@@ -119,7 +117,7 @@ public final class ViewDescriptorTest {
DistributionViewDescriptor.create(
(ViewDescriptor.Name) null,
description,
- measurementDescriptor,
+ measure,
DistributionAggregationDescriptor.create(),
keys);
}
@@ -129,7 +127,7 @@ public final class ViewDescriptorTest {
DistributionViewDescriptor.create(
(String) null,
description,
- measurementDescriptor,
+ measure,
DistributionAggregationDescriptor.create(),
keys);
}
@@ -139,7 +137,7 @@ public final class ViewDescriptorTest {
IntervalViewDescriptor.create(
(ViewDescriptor.Name) null,
description,
- measurementDescriptor,
+ measure,
IntervalAggregationDescriptor.create(Arrays.asList(Duration.fromMillis(1))),
keys);
}
@@ -149,7 +147,7 @@ public final class ViewDescriptorTest {
IntervalViewDescriptor.create(
(String) null,
description,
- measurementDescriptor,
+ measure,
IntervalAggregationDescriptor.create(Arrays.asList(Duration.fromMillis(1))),
keys);
}
@@ -175,9 +173,9 @@ public final class ViewDescriptorTest {
private final ViewDescriptor.Name name = ViewDescriptor.Name.create("test-view-name");
private final String description = "test-view-name description";
- private final MeasurementDescriptor measurementDescriptor = MeasurementDescriptor.create(
+ private final Measure measure = Measure.DoubleMeasure.create(
"measurement",
"measurement description",
- MeasurementUnit.create(1, Arrays.asList(BasicUnit.SCALAR)));
+ "1");
private final List<TagKey> keys = Arrays.asList(TagKey.create("foo"), TagKey.create("bar"));
}
diff --git a/core/src/test/java/io/opencensus/stats/ViewTest.java b/core/src/test/java/io/opencensus/stats/ViewTest.java
index 1089af5d..6a42c01a 100644
--- a/core/src/test/java/io/opencensus/stats/ViewTest.java
+++ b/core/src/test/java/io/opencensus/stats/ViewTest.java
@@ -22,8 +22,6 @@ import io.opencensus.common.Function;
import io.opencensus.common.Timestamp;
import io.opencensus.stats.DistributionAggregation.Range;
import io.opencensus.stats.IntervalAggregation.Interval;
-import io.opencensus.stats.MeasurementDescriptor.BasicUnit;
-import io.opencensus.stats.MeasurementDescriptor.MeasurementUnit;
import io.opencensus.stats.View.DistributionView;
import io.opencensus.stats.View.IntervalView;
import io.opencensus.stats.ViewDescriptor.DistributionViewDescriptor;
@@ -46,7 +44,7 @@ public final class ViewTest {
DistributionAggregationDescriptor.create(Arrays.asList(10.0, 20.0, 30.0, 40.0));
final DistributionViewDescriptor viewDescriptor =
DistributionViewDescriptor.create(
- name, description, measurementDescriptor, aggregationDescriptor, tagKeys);
+ name, description, measure, aggregationDescriptor, tagKeys);
final List<DistributionAggregation> aggregations = Arrays.asList(
DistributionAggregation.create(5, 5.0, 15.0, Range.create(1.0, 5.0), tags1,
Arrays.asList(1L, 1L, 1L, 1L, 1L)),
@@ -80,7 +78,7 @@ public final class ViewTest {
IntervalAggregationDescriptor.create(Arrays.asList(Duration.fromMillis(111)));
final IntervalViewDescriptor viewDescriptor =
IntervalViewDescriptor.create(
- name, description, measurementDescriptor, aggregationDescriptor, tagKeys);
+ name, description, measure, aggregationDescriptor, tagKeys);
final List<IntervalAggregation> aggregations = Arrays.asList(
IntervalAggregation.create(tags1, Arrays.asList(
Interval.create(Duration.fromMillis(111), 10, 100))),
@@ -110,7 +108,7 @@ public final class ViewTest {
DistributionViewDescriptor.create(
name,
description,
- measurementDescriptor,
+ measure,
DistributionAggregationDescriptor.create(Arrays.asList(10.0)),
tagKeys);
List<DistributionAggregation> dAggregations =
@@ -121,7 +119,7 @@ public final class ViewTest {
IntervalViewDescriptor.create(
name,
description,
- measurementDescriptor,
+ measure,
IntervalAggregationDescriptor.create(Arrays.asList(Duration.fromMillis(111))),
tagKeys);
List<IntervalAggregation> iAggregations =
@@ -175,10 +173,10 @@ public final class ViewTest {
// description
private final String description = "test-view-descriptor description";
// measurement descriptor
- private final MeasurementDescriptor measurementDescriptor = MeasurementDescriptor.create(
+ private final Measure measure = Measure.DoubleMeasure.create(
"measurement-descriptor",
"measurement-descriptor description",
- MeasurementUnit.create(1, Arrays.asList(BasicUnit.SCALAR)));
+ "1");
private static final <T> boolean shallowListEquals(List<T> l1, List <T> l2) {
if (l1.size() != l2.size()) {
diff --git a/core_impl/src/main/java/io/opencensus/stats/MeasurementDescriptorToViewMap.java b/core_impl/src/main/java/io/opencensus/stats/MeasureToViewMap.java
index 5b39ef97..128c1f52 100644
--- a/core_impl/src/main/java/io/opencensus/stats/MeasurementDescriptorToViewMap.java
+++ b/core_impl/src/main/java/io/opencensus/stats/MeasureToViewMap.java
@@ -28,18 +28,18 @@ import javax.annotation.Nullable;
import javax.annotation.concurrent.GuardedBy;
/**
- * A class that stores a singleton map from {@link MeasurementDescriptor.Name}s to {@link
+ * A class that stores a singleton map from {@code MeasureName}s to {@link
* MutableView}s.
*/
-final class MeasurementDescriptorToViewMap {
+final class MeasureToViewMap {
/*
- * A synchronized singleton map that stores the one-to-many mapping from MeasurementDescriptors
+ * A synchronized singleton map that stores the one-to-many mapping from Measures
* to MutableViews.
*/
@GuardedBy("this")
- private final Multimap<MeasurementDescriptor.Name, MutableView> mutableMap =
- HashMultimap.<MeasurementDescriptor.Name, MutableView>create();
+ private final Multimap<String, MutableView> mutableMap =
+ HashMultimap.<String, MutableView>create();
@GuardedBy("this")
private final Map<ViewDescriptor.Name, ViewDescriptor> registeredViews =
@@ -58,7 +58,7 @@ final class MeasurementDescriptorToViewMap {
return null;
}
Collection<MutableView> views =
- mutableMap.get(viewDescriptor.getMeasurementDescriptor().getMeasurementDescriptorName());
+ mutableMap.get(viewDescriptor.getMeasure().getName());
for (MutableView view : views) {
if (view.getViewDescriptor().getViewDescriptorName().equals(viewName)) {
return view;
@@ -86,14 +86,14 @@ final class MeasurementDescriptorToViewMap {
new CreateMutableDistributionViewFunction(clock),
new CreateMutableIntervalViewFunction());
mutableMap.put(
- viewDescriptor.getMeasurementDescriptor().getMeasurementDescriptorName(), mutableView);
+ viewDescriptor.getMeasure().getName(), mutableView);
}
// Records stats with a set of tags.
synchronized void record(StatsContextImpl tags, MeasurementMap stats) {
for (MeasurementValue mv : stats) {
Collection<MutableView> views =
- mutableMap.get(mv.getMeasurement().getMeasurementDescriptorName());
+ mutableMap.get(mv.getMeasurement().getName());
for (MutableView view : views) {
view.record(tags, mv.getValue());
}
diff --git a/core_impl/src/main/java/io/opencensus/stats/StatsManager.java b/core_impl/src/main/java/io/opencensus/stats/StatsManager.java
index 97b1c30d..7197826d 100644
--- a/core_impl/src/main/java/io/opencensus/stats/StatsManager.java
+++ b/core_impl/src/main/java/io/opencensus/stats/StatsManager.java
@@ -25,8 +25,8 @@ final class StatsManager {
// clock used throughout the stats implementation
private final Clock clock;
- private final MeasurementDescriptorToViewMap measurementDescriptorToViewMap =
- new MeasurementDescriptorToViewMap();
+ private final MeasureToViewMap measureToViewMap =
+ new MeasureToViewMap();
StatsManager(EventQueue queue, Clock clock) {
this.queue = queue;
@@ -40,11 +40,11 @@ final class StatsManager {
throw new UnsupportedOperationException(
"The prototype will only support distribution views.");
}
- measurementDescriptorToViewMap.registerView(viewDescriptor, clock);
+ measureToViewMap.registerView(viewDescriptor, clock);
}
View getView(ViewDescriptor.Name viewName) {
- View view = measurementDescriptorToViewMap.getView(viewName, clock);
+ View view = measureToViewMap.getView(viewName, clock);
if (view == null) {
throw new IllegalArgumentException(
"View for view descriptor " + viewName + " not found.");
@@ -71,7 +71,7 @@ final class StatsManager {
@Override
public void process() {
- viewManager.measurementDescriptorToViewMap.record(tags, stats);
+ viewManager.measureToViewMap.record(tags, stats);
}
}
}
diff --git a/core_impl/src/test/java/io/opencensus/stats/MeasurementDescriptorToViewMapTest.java b/core_impl/src/test/java/io/opencensus/stats/MeasureToViewMapTest.java
index 0f61803e..2d691e7f 100644
--- a/core_impl/src/test/java/io/opencensus/stats/MeasurementDescriptorToViewMapTest.java
+++ b/core_impl/src/test/java/io/opencensus/stats/MeasureToViewMapTest.java
@@ -18,8 +18,6 @@ import static org.junit.Assert.fail;
import io.opencensus.common.Function;
import io.opencensus.common.Timestamp;
-import io.opencensus.stats.MeasurementDescriptor.BasicUnit;
-import io.opencensus.stats.MeasurementDescriptor.MeasurementUnit;
import io.opencensus.stats.View.DistributionView;
import io.opencensus.stats.View.IntervalView;
import io.opencensus.stats.ViewDescriptor.DistributionViewDescriptor;
@@ -29,15 +27,15 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
-/** Tests for {@link MeasurementDescriptorToViewMap}. */
+/** Tests for {@link MeasureToViewMap}. */
@RunWith(JUnit4.class)
-public class MeasurementDescriptorToViewMapTest {
+public class MeasureToViewMapTest {
- private static final MeasurementDescriptor MEASUREMENT_DESCRIPTOR =
- MeasurementDescriptor.create(
+ private static final Measure MEASUREMENT_DESCRIPTOR =
+ Measure.DoubleMeasure.create(
"my measurement",
"measurement description",
- MeasurementUnit.create(0, Arrays.asList(BasicUnit.BYTES)));
+ "By");
private static final ViewDescriptor.Name VIEW_NAME = ViewDescriptor.Name.create("my view");
@@ -51,12 +49,12 @@ public class MeasurementDescriptorToViewMapTest {
@Test
public void testRegisterAndGetDistributionView() {
- MeasurementDescriptorToViewMap measurementDescriptorToViewMap =
- new MeasurementDescriptorToViewMap();
+ MeasureToViewMap measureToViewMap =
+ new MeasureToViewMap();
TestClock clock = TestClock.create(Timestamp.create(10, 20));
- measurementDescriptorToViewMap.registerView(VIEW_DESCRIPTOR, clock);
+ measureToViewMap.registerView(VIEW_DESCRIPTOR, clock);
clock.setTime(Timestamp.create(30, 40));
- View actual = measurementDescriptorToViewMap.getView(VIEW_NAME, clock);
+ View actual = measureToViewMap.getView(VIEW_NAME, clock);
actual.match(
new Function<View.DistributionView, Void>() {
@Override
diff --git a/core_impl/src/test/java/io/opencensus/stats/ViewManagerImplTest.java b/core_impl/src/test/java/io/opencensus/stats/ViewManagerImplTest.java
index c4d3f98d..f784d98c 100644
--- a/core_impl/src/test/java/io/opencensus/stats/ViewManagerImplTest.java
+++ b/core_impl/src/test/java/io/opencensus/stats/ViewManagerImplTest.java
@@ -19,8 +19,6 @@ import static io.opencensus.stats.StatsTestUtil.createContext;
import io.opencensus.common.Duration;
import io.opencensus.common.Timestamp;
import io.opencensus.internal.SimpleEventQueue;
-import io.opencensus.stats.MeasurementDescriptor.BasicUnit;
-import io.opencensus.stats.MeasurementDescriptor.MeasurementUnit;
import io.opencensus.stats.View.DistributionView;
import io.opencensus.stats.ViewDescriptor.DistributionViewDescriptor;
import io.opencensus.stats.ViewDescriptor.IntervalViewDescriptor;
@@ -45,19 +43,16 @@ public class ViewManagerImplTest {
private static final TagValue VALUE = TagValue.create("VALUE");
private static final TagValue VALUE_2 = TagValue.create("VALUE_2");
- private static final MeasurementDescriptor.Name MEASUREMENT_NAME =
- MeasurementDescriptor.Name.create("my measurement");
+ private static final String MEASUREMENT_NAME = "my measurement";
- private static final MeasurementDescriptor.Name MEASUREMENT_NAME_2 =
- MeasurementDescriptor.Name.create("my measurement 2");
+ private static final String MEASUREMENT_NAME_2 = "my measurement 2";
- private static final MeasurementUnit MEASUREMENT_UNIT =
- MeasurementUnit.create(-6, Arrays.asList(BasicUnit.SECONDS));
+ private static final String MEASUREMENT_UNIT = "us";
private static final String MEASUREMENT_DESCRIPTION = "measurement description";
- private static final MeasurementDescriptor MEASUREMENT_DESCRIPTOR =
- MeasurementDescriptor.create(MEASUREMENT_NAME, MEASUREMENT_DESCRIPTION, MEASUREMENT_UNIT);
+ private static final Measure MEASUREMENT_DESCRIPTOR =
+ Measure.DoubleMeasure.create(MEASUREMENT_NAME, MEASUREMENT_DESCRIPTION, MEASUREMENT_UNIT);
private static final ViewDescriptor.Name VIEW_NAME = ViewDescriptor.Name.create("my view");
private static final ViewDescriptor.Name VIEW_NAME_2 = ViewDescriptor.Name.create("my view 2");
@@ -88,7 +83,7 @@ public class ViewManagerImplTest {
private static DistributionViewDescriptor createDistributionViewDescriptor(
ViewDescriptor.Name name,
- MeasurementDescriptor measureDescr,
+ Measure measureDescr,
DistributionAggregationDescriptor aggDescr,
List<TagKey> keys) {
return DistributionViewDescriptor.create(name, VIEW_DESCRIPTION, measureDescr, aggDescr, keys);
@@ -282,11 +277,11 @@ public class ViewManagerImplTest {
viewManager.registerView(
createDistributionViewDescriptor(
VIEW_NAME,
- MeasurementDescriptor.create(MEASUREMENT_NAME, "measurement", MEASUREMENT_UNIT),
+ Measure.DoubleMeasure.create(MEASUREMENT_NAME, "measurement", MEASUREMENT_UNIT),
DISTRIBUTION_AGGREGATION_DESCRIPTOR,
Arrays.asList(KEY)));
- MeasurementDescriptor measure2 =
- MeasurementDescriptor.create(MEASUREMENT_NAME_2, "measurement", MEASUREMENT_UNIT);
+ Measure measure2 =
+ Measure.DoubleMeasure.create(MEASUREMENT_NAME_2, "measurement", MEASUREMENT_UNIT);
statsRecorder.record(createContext(factory, KEY, VALUE), MeasurementMap.of(measure2, 10.0));
DistributionView view = (DistributionView) viewManager.getView(VIEW_NAME);
assertThat(view.getDistributionAggregations()).isEmpty();
@@ -403,10 +398,10 @@ public class ViewManagerImplTest {
@Test
public void testMultipleViewsDifferentMeasures() {
- MeasurementDescriptor measureDescr1 =
- MeasurementDescriptor.create(MEASUREMENT_NAME, MEASUREMENT_DESCRIPTION, MEASUREMENT_UNIT);
- MeasurementDescriptor measureDescr2 =
- MeasurementDescriptor.create(MEASUREMENT_NAME_2, MEASUREMENT_DESCRIPTION, MEASUREMENT_UNIT);
+ Measure measureDescr1 =
+ Measure.DoubleMeasure.create(MEASUREMENT_NAME, MEASUREMENT_DESCRIPTION, MEASUREMENT_UNIT);
+ Measure measureDescr2 =
+ Measure.DoubleMeasure.create(MEASUREMENT_NAME_2, MEASUREMENT_DESCRIPTION, MEASUREMENT_UNIT);
ViewDescriptor viewDescr1 =
createDistributionViewDescriptor(
VIEW_NAME, measureDescr1, DISTRIBUTION_AGGREGATION_DESCRIPTOR, Arrays.asList(KEY));
diff --git a/examples/src/main/java/io/opencensus/examples/stats/StatsRunner.java b/examples/src/main/java/io/opencensus/examples/stats/StatsRunner.java
index 86a4e3dc..2595b855 100644
--- a/examples/src/main/java/io/opencensus/examples/stats/StatsRunner.java
+++ b/examples/src/main/java/io/opencensus/examples/stats/StatsRunner.java
@@ -14,16 +14,13 @@
package io.opencensus.examples.stats;
import io.opencensus.common.NonThrowingCloseable;
-import io.opencensus.stats.MeasurementDescriptor;
-import io.opencensus.stats.MeasurementDescriptor.BasicUnit;
-import io.opencensus.stats.MeasurementDescriptor.MeasurementUnit;
+import io.opencensus.stats.Measure;
import io.opencensus.stats.MeasurementMap;
import io.opencensus.stats.Stats;
import io.opencensus.stats.StatsContext;
import io.opencensus.stats.StatsContextFactory;
import io.opencensus.stats.TagKey;
import io.opencensus.stats.TagValue;
-import java.util.Arrays;
/** Simple program that uses Stats contexts. */
public class StatsRunner {
@@ -37,12 +34,11 @@ public class StatsRunner {
private static final TagValue V3 = TagValue.create("v3");
private static final TagValue V4 = TagValue.create("v4");
- private static final MeasurementUnit simpleMeasurementUnit =
- MeasurementUnit.create(1, Arrays.asList(BasicUnit.SCALAR));
- private static final MeasurementDescriptor M1 =
- MeasurementDescriptor.create("m1", "1st test metric", simpleMeasurementUnit);
- private static final MeasurementDescriptor M2 =
- MeasurementDescriptor.create("m2", "2nd test metric", simpleMeasurementUnit);
+ private static final String UNIT = "1";
+ private static final Measure M1 =
+ Measure.DoubleMeasure.create("m1", "1st test metric", UNIT);
+ private static final Measure M2 =
+ Measure.DoubleMeasure.create("m2", "2nd test metric", UNIT);
private static final StatsContextFactory factory = Stats.getStatsContextFactory();
private static final StatsContext DEFAULT = factory.getDefault();