From 2b11b167c8d7633acaacc0c6aca6b829e8f4df6d Mon Sep 17 00:00:00 2001 From: Mayur Kale Date: Wed, 17 Oct 2018 14:15:48 -0700 Subject: Plugs-in the LongGauge into the registry (#1498) * plug-in longGauge into MetricRegistry * Minor fix * Add TODO and Fix build * Fix review comments --- .../java/io/opencensus/metrics/DoubleGauge.java | 4 +- .../main/java/io/opencensus/metrics/LongGauge.java | 8 +-- .../java/io/opencensus/metrics/MetricRegistry.java | 81 +++++----------------- 3 files changed, 22 insertions(+), 71 deletions(-) (limited to 'api/src/main/java') diff --git a/api/src/main/java/io/opencensus/metrics/DoubleGauge.java b/api/src/main/java/io/opencensus/metrics/DoubleGauge.java index 91e131ec..62730a06 100644 --- a/api/src/main/java/io/opencensus/metrics/DoubleGauge.java +++ b/api/src/main/java/io/opencensus/metrics/DoubleGauge.java @@ -86,12 +86,12 @@ public abstract class DoubleGauge { * method for manual operations. * * @param labelValues the list of label values. The number of label values must be the same to - * that of the label keys passed to {@link MetricRegistry#addDoubleGauge}. + * that of the label keys. * @return a {@code DoublePoint} the value of single gauge. * @throws NullPointerException if {@code labelValues} is null OR any element of {@code * labelValues} is null. * @throws IllegalArgumentException if number of {@code labelValues}s are not equal to the label - * keys passed to {@link MetricRegistry#addDoubleGauge}. + * keys. * @since 0.17 */ public abstract DoublePoint getOrCreateTimeSeries(List labelValues); diff --git a/api/src/main/java/io/opencensus/metrics/LongGauge.java b/api/src/main/java/io/opencensus/metrics/LongGauge.java index 42951d50..f473a8ac 100644 --- a/api/src/main/java/io/opencensus/metrics/LongGauge.java +++ b/api/src/main/java/io/opencensus/metrics/LongGauge.java @@ -32,7 +32,7 @@ import javax.annotation.concurrent.ThreadSafe; * private static final MetricRegistry metricRegistry = Metrics.getMetricRegistry(); * * List labelKeys = Arrays.asList(LabelKey.create("Name", "desc")); - * // TODO(mayurkale): Plugs-in the LongGauge into the registry. + * * LongGauge gauge = metricRegistry.addLongGauge("queue_size", "Pending jobs", "1", labelKeys); * * // It is recommended to keep a reference of a point for manual operations. @@ -56,7 +56,6 @@ import javax.annotation.concurrent.ThreadSafe; * List labelKeys = Arrays.asList(LabelKey.create("Name", "desc")); * List labelValues = Arrays.asList(LabelValue.create("Inbound")); * - * // TODO(mayurkale): Plugs-in the LongGauge into the registry. * LongGauge gauge = metricRegistry.addLongGauge("queue_size", "Pending jobs", "1", labelKeys); * * // It is recommended to keep a reference of a point for manual operations. @@ -167,11 +166,6 @@ public abstract class LongGauge { /** Creates a new {@code NoopLongPoint}. */ NoopLongGauge(String name, String description, String unit, List labelKeys) { - Utils.checkNotNull(name, "name"); - Utils.checkNotNull(description, "description"); - Utils.checkNotNull(unit, "unit"); - Utils.checkNotNull(labelKeys, "labelKeys should not be null."); - Utils.checkListElementNotNull(labelKeys, "labelKeys element should not be null."); labelKeysSize = labelKeys.size(); } diff --git a/api/src/main/java/io/opencensus/metrics/MetricRegistry.java b/api/src/main/java/io/opencensus/metrics/MetricRegistry.java index a9987b75..840ad787 100644 --- a/api/src/main/java/io/opencensus/metrics/MetricRegistry.java +++ b/api/src/main/java/io/opencensus/metrics/MetricRegistry.java @@ -17,10 +17,8 @@ package io.opencensus.metrics; import io.opencensus.common.ExperimentalApi; -import io.opencensus.common.ToDoubleFunction; -import io.opencensus.common.ToLongFunction; import io.opencensus.internal.Utils; -import java.util.LinkedHashMap; +import java.util.List; /** * Creates and manages your application's set of metrics. The default implementation of this creates @@ -32,44 +30,21 @@ import java.util.LinkedHashMap; @ExperimentalApi public abstract class MetricRegistry { /** - * Build a new long gauge to be added to the registry. - * - *

Must be called only once. + * Builds a new long gauge to be added to the registry. This is more convenient form when you want + * to manually increase and decrease values as per your service requirements. * * @param name the name of the metric. * @param description the description of the metric. * @param unit the unit of the metric. - * @param obj the function argument. - * @param function the function to be called. + * @param labelKeys the list of the label keys. + * @throws NullPointerException if {@code labelKeys} is null OR any element of {@code labelKeys} + * is null OR {@code name}, {@code description}, {@code unit} is null. + * @throws IllegalArgumentException if different metric with the same name already registered. * @since 0.17 */ - public abstract void addLongGauge( - String name, - String description, - String unit, - LinkedHashMap labels, - T obj, - ToLongFunction function); - - /** - * Build a new double gauge to be added to the registry. - * - *

Must be called only once. - * - * @param name the name of the metric. - * @param description the description of the metric. - * @param unit the unit of the metric. - * @param obj the function argument. - * @param function the function to be called. - * @since 0.17 - */ - public abstract void addDoubleGauge( - String name, - String description, - String unit, - LinkedHashMap labels, - T obj, - ToDoubleFunction function); + @ExperimentalApi + public abstract LongGauge addLongGauge( + String name, String description, String unit, List labelKeys); static MetricRegistry newNoopMetricRegistry() { return new NoopMetricRegistry(); @@ -78,33 +53,15 @@ public abstract class MetricRegistry { private static final class NoopMetricRegistry extends MetricRegistry { @Override - public void addLongGauge( - String name, - String description, - String unit, - LinkedHashMap labels, - T obj, - ToLongFunction function) { - Utils.checkNotNull(name, "name"); - Utils.checkNotNull(description, "description"); - Utils.checkNotNull(unit, "unit"); - Utils.checkNotNull(labels, "labels"); - Utils.checkNotNull(function, "function"); - } - - @Override - public void addDoubleGauge( - String name, - String description, - String unit, - LinkedHashMap labels, - T obj, - ToDoubleFunction function) { - Utils.checkNotNull(name, "name"); - Utils.checkNotNull(description, "description"); - Utils.checkNotNull(unit, "unit"); - Utils.checkNotNull(labels, "labels"); - Utils.checkNotNull(function, "function"); + public LongGauge addLongGauge( + String name, String description, String unit, List labelKeys) { + Utils.checkListElementNotNull( + Utils.checkNotNull(labelKeys, "labelKeys"), "labelKey element should not be null."); + return LongGauge.newNoopLongGauge( + Utils.checkNotNull(name, "name"), + Utils.checkNotNull(description, "description"), + Utils.checkNotNull(unit, "unit"), + labelKeys); } } } -- cgit v1.2.3