diff options
author | Yang Song <songy23@users.noreply.github.com> | 2018-09-14 15:45:30 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-14 15:45:30 -0700 |
commit | 937d2296642d9bcdae23a2be469d1d0f367ae3de (patch) | |
tree | 452b70aefb0a257f4373574a936ffa189f1e23c8 /impl_core/src/main/java/io/opencensus | |
parent | 98fb8ad4e40b67b92d8688f45dbd8ac41399d8d7 (diff) | |
download | opencensus-java-937d2296642d9bcdae23a2be469d1d0f367ae3de.tar.gz |
Revert "Temporarily move "metrics" package into impl_core/ for release. (#1426)" (#1432)
This reverts commit d3fa0e5c60903f95c184d7c7bafae8fdd12156ad.
Diffstat (limited to 'impl_core/src/main/java/io/opencensus')
27 files changed, 37 insertions, 1542 deletions
diff --git a/impl_core/src/main/java/io/opencensus/implcore/metrics/Gauge.java b/impl_core/src/main/java/io/opencensus/implcore/metrics/Gauge.java index 371c762d..e6498066 100644 --- a/impl_core/src/main/java/io/opencensus/implcore/metrics/Gauge.java +++ b/impl_core/src/main/java/io/opencensus/implcore/metrics/Gauge.java @@ -21,14 +21,14 @@ import static com.google.common.base.Preconditions.checkNotNull; import io.opencensus.common.Clock; import io.opencensus.common.ToDoubleFunction; import io.opencensus.common.ToLongFunction; -import io.opencensus.implcore.temporary.metrics.LabelKey; -import io.opencensus.implcore.temporary.metrics.LabelValue; -import io.opencensus.implcore.temporary.metrics.Metric; -import io.opencensus.implcore.temporary.metrics.MetricDescriptor; -import io.opencensus.implcore.temporary.metrics.MetricDescriptor.Type; -import io.opencensus.implcore.temporary.metrics.Point; -import io.opencensus.implcore.temporary.metrics.TimeSeries; -import io.opencensus.implcore.temporary.metrics.Value; +import io.opencensus.metrics.LabelKey; +import io.opencensus.metrics.LabelValue; +import io.opencensus.metrics.Metric; +import io.opencensus.metrics.MetricDescriptor; +import io.opencensus.metrics.MetricDescriptor.Type; +import io.opencensus.metrics.Point; +import io.opencensus.metrics.TimeSeries; +import io.opencensus.metrics.Value; import java.util.Collections; import java.util.List; diff --git a/impl_core/src/main/java/io/opencensus/implcore/metrics/MetricRegistryImpl.java b/impl_core/src/main/java/io/opencensus/implcore/metrics/MetricRegistryImpl.java index 294c9207..f3daaef7 100644 --- a/impl_core/src/main/java/io/opencensus/implcore/metrics/MetricRegistryImpl.java +++ b/impl_core/src/main/java/io/opencensus/implcore/metrics/MetricRegistryImpl.java @@ -23,10 +23,10 @@ import io.opencensus.common.ToDoubleFunction; import io.opencensus.common.ToLongFunction; import io.opencensus.implcore.metrics.Gauge.DoubleGauge; import io.opencensus.implcore.metrics.Gauge.LongGauge; -import io.opencensus.implcore.temporary.metrics.LabelKey; -import io.opencensus.implcore.temporary.metrics.LabelValue; -import io.opencensus.implcore.temporary.metrics.Metric; -import io.opencensus.implcore.temporary.metrics.MetricRegistry; +import io.opencensus.metrics.LabelKey; +import io.opencensus.metrics.LabelValue; +import io.opencensus.metrics.Metric; +import io.opencensus.metrics.MetricRegistry; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; diff --git a/impl_core/src/main/java/io/opencensus/implcore/metrics/MetricsComponentImplBase.java b/impl_core/src/main/java/io/opencensus/implcore/metrics/MetricsComponentImplBase.java index 40f8fbe5..46ad028c 100644 --- a/impl_core/src/main/java/io/opencensus/implcore/metrics/MetricsComponentImplBase.java +++ b/impl_core/src/main/java/io/opencensus/implcore/metrics/MetricsComponentImplBase.java @@ -18,8 +18,8 @@ package io.opencensus.implcore.metrics; import io.opencensus.common.Clock; import io.opencensus.implcore.metrics.export.ExportComponentImpl; -import io.opencensus.implcore.temporary.metrics.MetricRegistry; -import io.opencensus.implcore.temporary.metrics.MetricsComponent; +import io.opencensus.metrics.MetricRegistry; +import io.opencensus.metrics.MetricsComponent; /** Implementation of {@link MetricsComponent}. */ public class MetricsComponentImplBase extends MetricsComponent { diff --git a/impl_core/src/main/java/io/opencensus/implcore/metrics/export/ExportComponentImpl.java b/impl_core/src/main/java/io/opencensus/implcore/metrics/export/ExportComponentImpl.java index 18362646..173c3aec 100644 --- a/impl_core/src/main/java/io/opencensus/implcore/metrics/export/ExportComponentImpl.java +++ b/impl_core/src/main/java/io/opencensus/implcore/metrics/export/ExportComponentImpl.java @@ -16,8 +16,8 @@ package io.opencensus.implcore.metrics.export; -import io.opencensus.implcore.temporary.metrics.export.ExportComponent; -import io.opencensus.implcore.temporary.metrics.export.MetricProducerManager; +import io.opencensus.metrics.export.ExportComponent; +import io.opencensus.metrics.export.MetricProducerManager; /** Implementation of {@link ExportComponent}. */ public final class ExportComponentImpl extends ExportComponent { diff --git a/impl_core/src/main/java/io/opencensus/implcore/metrics/export/MetricProducerManagerImpl.java b/impl_core/src/main/java/io/opencensus/implcore/metrics/export/MetricProducerManagerImpl.java index 50d15534..fc9db5c1 100644 --- a/impl_core/src/main/java/io/opencensus/implcore/metrics/export/MetricProducerManagerImpl.java +++ b/impl_core/src/main/java/io/opencensus/implcore/metrics/export/MetricProducerManagerImpl.java @@ -17,8 +17,8 @@ package io.opencensus.implcore.metrics.export; import com.google.common.base.Preconditions; -import io.opencensus.implcore.temporary.metrics.MetricProducer; -import io.opencensus.implcore.temporary.metrics.export.MetricProducerManager; +import io.opencensus.metrics.MetricProducer; +import io.opencensus.metrics.export.MetricProducerManager; import java.util.Collections; import java.util.LinkedHashSet; import java.util.Set; diff --git a/impl_core/src/main/java/io/opencensus/implcore/stats/MeasureToViewMap.java b/impl_core/src/main/java/io/opencensus/implcore/stats/MeasureToViewMap.java index 8ca7bca6..2e28991c 100644 --- a/impl_core/src/main/java/io/opencensus/implcore/stats/MeasureToViewMap.java +++ b/impl_core/src/main/java/io/opencensus/implcore/stats/MeasureToViewMap.java @@ -23,7 +23,7 @@ import com.google.common.collect.Sets; import io.opencensus.common.Clock; import io.opencensus.common.Timestamp; import io.opencensus.implcore.internal.CurrentState.State; -import io.opencensus.implcore.temporary.metrics.Metric; +import io.opencensus.metrics.Metric; import io.opencensus.stats.Measure; import io.opencensus.stats.Measurement; import io.opencensus.stats.View; diff --git a/impl_core/src/main/java/io/opencensus/implcore/stats/MetricProducerImpl.java b/impl_core/src/main/java/io/opencensus/implcore/stats/MetricProducerImpl.java index 6677ef6b..31ef6be1 100644 --- a/impl_core/src/main/java/io/opencensus/implcore/stats/MetricProducerImpl.java +++ b/impl_core/src/main/java/io/opencensus/implcore/stats/MetricProducerImpl.java @@ -16,8 +16,8 @@ package io.opencensus.implcore.stats; -import io.opencensus.implcore.temporary.metrics.Metric; -import io.opencensus.implcore.temporary.metrics.MetricProducer; +import io.opencensus.metrics.Metric; +import io.opencensus.metrics.MetricProducer; import java.util.Collection; import javax.annotation.concurrent.ThreadSafe; diff --git a/impl_core/src/main/java/io/opencensus/implcore/stats/MetricUtils.java b/impl_core/src/main/java/io/opencensus/implcore/stats/MetricUtils.java index 20568514..cd1e5364 100644 --- a/impl_core/src/main/java/io/opencensus/implcore/stats/MetricUtils.java +++ b/impl_core/src/main/java/io/opencensus/implcore/stats/MetricUtils.java @@ -19,10 +19,10 @@ package io.opencensus.implcore.stats; import com.google.common.annotations.VisibleForTesting; import io.opencensus.common.Function; import io.opencensus.common.Functions; -import io.opencensus.implcore.temporary.metrics.LabelKey; -import io.opencensus.implcore.temporary.metrics.LabelValue; -import io.opencensus.implcore.temporary.metrics.MetricDescriptor; -import io.opencensus.implcore.temporary.metrics.MetricDescriptor.Type; +import io.opencensus.metrics.LabelKey; +import io.opencensus.metrics.LabelValue; +import io.opencensus.metrics.MetricDescriptor; +import io.opencensus.metrics.MetricDescriptor.Type; import io.opencensus.stats.Aggregation; import io.opencensus.stats.Measure; import io.opencensus.stats.View; diff --git a/impl_core/src/main/java/io/opencensus/implcore/stats/MutableAggregation.java b/impl_core/src/main/java/io/opencensus/implcore/stats/MutableAggregation.java index e4b33e46..a41850d2 100644 --- a/impl_core/src/main/java/io/opencensus/implcore/stats/MutableAggregation.java +++ b/impl_core/src/main/java/io/opencensus/implcore/stats/MutableAggregation.java @@ -21,9 +21,9 @@ import static com.google.common.base.Preconditions.checkNotNull; import com.google.common.annotations.VisibleForTesting; import io.opencensus.common.Timestamp; -import io.opencensus.implcore.temporary.metrics.Distribution; -import io.opencensus.implcore.temporary.metrics.Point; -import io.opencensus.implcore.temporary.metrics.Value; +import io.opencensus.metrics.Distribution; +import io.opencensus.metrics.Point; +import io.opencensus.metrics.Value; import io.opencensus.stats.Aggregation; import io.opencensus.stats.AggregationData; import io.opencensus.stats.AggregationData.DistributionData; diff --git a/impl_core/src/main/java/io/opencensus/implcore/stats/MutableViewData.java b/impl_core/src/main/java/io/opencensus/implcore/stats/MutableViewData.java index a0e9fd3b..7368a161 100644 --- a/impl_core/src/main/java/io/opencensus/implcore/stats/MutableViewData.java +++ b/impl_core/src/main/java/io/opencensus/implcore/stats/MutableViewData.java @@ -32,12 +32,12 @@ import io.opencensus.common.Functions; import io.opencensus.common.Timestamp; import io.opencensus.implcore.internal.CheckerFrameworkUtils; import io.opencensus.implcore.internal.CurrentState.State; -import io.opencensus.implcore.temporary.metrics.LabelValue; -import io.opencensus.implcore.temporary.metrics.Metric; -import io.opencensus.implcore.temporary.metrics.MetricDescriptor; -import io.opencensus.implcore.temporary.metrics.MetricDescriptor.Type; -import io.opencensus.implcore.temporary.metrics.Point; -import io.opencensus.implcore.temporary.metrics.TimeSeries; +import io.opencensus.metrics.LabelValue; +import io.opencensus.metrics.Metric; +import io.opencensus.metrics.MetricDescriptor; +import io.opencensus.metrics.MetricDescriptor.Type; +import io.opencensus.metrics.Point; +import io.opencensus.metrics.TimeSeries; import io.opencensus.stats.Aggregation; import io.opencensus.stats.AggregationData; import io.opencensus.stats.Measure; diff --git a/impl_core/src/main/java/io/opencensus/implcore/stats/StatsComponentImplBase.java b/impl_core/src/main/java/io/opencensus/implcore/stats/StatsComponentImplBase.java index 1456746f..72791f04 100644 --- a/impl_core/src/main/java/io/opencensus/implcore/stats/StatsComponentImplBase.java +++ b/impl_core/src/main/java/io/opencensus/implcore/stats/StatsComponentImplBase.java @@ -21,8 +21,8 @@ import io.opencensus.common.Clock; import io.opencensus.implcore.internal.CurrentState; import io.opencensus.implcore.internal.CurrentState.State; import io.opencensus.implcore.internal.EventQueue; -import io.opencensus.implcore.temporary.metrics.MetricProducer; -import io.opencensus.implcore.temporary.metrics.Metrics; +import io.opencensus.metrics.MetricProducer; +import io.opencensus.metrics.Metrics; import io.opencensus.stats.StatsCollectionState; import io.opencensus.stats.StatsComponent; diff --git a/impl_core/src/main/java/io/opencensus/implcore/stats/StatsManager.java b/impl_core/src/main/java/io/opencensus/implcore/stats/StatsManager.java index 0fb78480..a58b9a5e 100644 --- a/impl_core/src/main/java/io/opencensus/implcore/stats/StatsManager.java +++ b/impl_core/src/main/java/io/opencensus/implcore/stats/StatsManager.java @@ -22,7 +22,7 @@ import io.opencensus.common.Clock; import io.opencensus.implcore.internal.CurrentState; import io.opencensus.implcore.internal.CurrentState.State; import io.opencensus.implcore.internal.EventQueue; -import io.opencensus.implcore.temporary.metrics.Metric; +import io.opencensus.metrics.Metric; import io.opencensus.stats.View; import io.opencensus.stats.ViewData; import io.opencensus.tags.TagContext; diff --git a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/Distribution.java b/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/Distribution.java deleted file mode 100644 index 4e1d1553..00000000 --- a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/Distribution.java +++ /dev/null @@ -1,280 +0,0 @@ -/* - * 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.implcore.temporary.metrics; - -import com.google.auto.value.AutoValue; -import io.opencensus.common.ExperimentalApi; -import io.opencensus.common.Timestamp; -import io.opencensus.internal.Utils; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import javax.annotation.Nullable; -import javax.annotation.concurrent.Immutable; - -/** - * {@link Distribution} contains summary statistics for a population of values. It optionally - * contains a histogram representing the distribution of those values across a set of buckets. - * - * @since 0.16 - */ -@ExperimentalApi -@AutoValue -@Immutable -public abstract class Distribution { - - Distribution() {} - - /** - * Creates a {@link Distribution}. - * - * @param mean mean of the population values. - * @param count count of the population values. - * @param sumOfSquaredDeviations sum of squared deviations of the population values. - * @param bucketBoundaries bucket boundaries of a histogram. - * @param buckets {@link Bucket}s of a histogram. - * @return a {@code Distribution}. - * @since 0.16 - */ - public static Distribution create( - double mean, - long count, - double sumOfSquaredDeviations, - List<Double> bucketBoundaries, - List<Bucket> buckets) { - Utils.checkArgument(count >= 0, "count should be non-negative."); - Utils.checkArgument( - sumOfSquaredDeviations >= 0, "sum of squared deviations should be non-negative."); - if (count == 0) { - Utils.checkArgument(mean == 0, "mean should be 0 if count is 0."); - Utils.checkArgument( - sumOfSquaredDeviations == 0, "sum of squared deviations should be 0 if count is 0."); - } - return new AutoValue_Distribution( - mean, - count, - sumOfSquaredDeviations, - copyBucketBounds(bucketBoundaries), - copyBucketCount(buckets)); - } - - private static List<Double> copyBucketBounds(List<Double> bucketBoundaries) { - Utils.checkNotNull(bucketBoundaries, "bucketBoundaries list should not be null."); - List<Double> bucketBoundariesCopy = new ArrayList<Double>(bucketBoundaries); // Deep copy. - // Check if sorted. - if (bucketBoundariesCopy.size() > 1) { - double lower = bucketBoundariesCopy.get(0); - for (int i = 1; i < bucketBoundariesCopy.size(); i++) { - double next = bucketBoundariesCopy.get(i); - Utils.checkArgument(lower < next, "bucket boundaries not sorted."); - lower = next; - } - } - return Collections.unmodifiableList(bucketBoundariesCopy); - } - - private static List<Bucket> copyBucketCount(List<Bucket> buckets) { - Utils.checkNotNull(buckets, "bucket list should not be null."); - List<Bucket> bucketsCopy = new ArrayList<Bucket>(buckets); - for (Bucket bucket : bucketsCopy) { - Utils.checkNotNull(bucket, "bucket should not be null."); - } - return Collections.unmodifiableList(bucketsCopy); - } - - /** - * Returns the aggregated mean. - * - * @return the aggregated mean. - * @since 0.16 - */ - public abstract double getMean(); - - /** - * Returns the aggregated count. - * - * @return the aggregated count. - * @since 0.16 - */ - public abstract long getCount(); - - /** - * Returns the aggregated sum of squared deviations. - * - * <p>The sum of squared deviations from the mean of the values in the population. For values x_i - * this is: - * - * <p>Sum[i=1..n]((x_i - mean)^2) - * - * <p>If count is zero then this field must be zero. - * - * @return the aggregated sum of squared deviations. - * @since 0.16 - */ - public abstract double getSumOfSquaredDeviations(); - - /** - * Returns the bucket boundaries of this distribution. - * - * <p>The bucket boundaries for that histogram are described by bucket_bounds. This defines - * size(bucket_bounds) + 1 (= N) buckets. The boundaries for bucket index i are: - * - * <ul> - * <li>{@code (-infinity, bucket_bounds[i]) for i == 0} - * <li>{@code [bucket_bounds[i-1], bucket_bounds[i]) for 0 < i < N-2} - * <li>{@code [bucket_bounds[i-1], +infinity) for i == N-1} - * </ul> - * - * <p>i.e. an underflow bucket (number 0), zero or more finite buckets (1 through N - 2, and an - * overflow bucket (N - 1), with inclusive lower bounds and exclusive upper bounds. - * - * <p>If bucket_bounds has no elements (zero size), then there is no histogram associated with the - * Distribution. If bucket_bounds has only one element, there are no finite buckets, and that - * single element is the common boundary of the overflow and underflow buckets. The values must be - * monotonically increasing. - * - * @return the bucket boundaries of this distribution. - * @since 0.16 - */ - public abstract List<Double> getBucketBoundaries(); - - /** - * Returns the aggregated histogram {@link Bucket}s. - * - * @return the aggregated histogram buckets. - * @since 0.16 - */ - public abstract List<Bucket> getBuckets(); - - /** - * The histogram bucket of the population values. - * - * @since 0.16 - */ - @AutoValue - @Immutable - public abstract static class Bucket { - - Bucket() {} - - /** - * Creates a {@link Bucket}. - * - * @param count the number of values in each bucket of the histogram. - * @return a {@code Bucket}. - * @since 0.16 - */ - public static Bucket create(long count) { - Utils.checkArgument(count >= 0, "bucket count should be non-negative."); - return new AutoValue_Distribution_Bucket(count, null); - } - - /** - * Creates a {@link Bucket} with an {@link Exemplar}. - * - * @param count the number of values in each bucket of the histogram. - * @param exemplar the {@code Exemplar} of this {@code Bucket}. - * @return a {@code Bucket}. - * @since 0.16 - */ - public static Bucket create(long count, Exemplar exemplar) { - Utils.checkArgument(count >= 0, "bucket count should be non-negative."); - Utils.checkNotNull(exemplar, "exemplar"); - return new AutoValue_Distribution_Bucket(count, exemplar); - } - - /** - * Returns the number of values in each bucket of the histogram. - * - * @return the number of values in each bucket of the histogram. - * @since 0.16 - */ - public abstract long getCount(); - - /** - * Returns the {@link Exemplar} associated with the {@link Bucket}, or {@code null} if there - * isn't one. - * - * @return the {@code Exemplar} associated with the {@code Bucket}, or {@code null} if there - * isn't one. - * @since 0.16 - */ - @Nullable - public abstract Exemplar getExemplar(); - } - - /** - * An example point that may be used to annotate aggregated distribution values, associated with a - * histogram bucket. - * - * @since 0.16 - */ - @Immutable - @AutoValue - public abstract static class Exemplar { - - Exemplar() {} - - /** - * Returns value of the {@link Exemplar} point. - * - * @return value of the {@code Exemplar} point. - * @since 0.16 - */ - public abstract double getValue(); - - /** - * Returns the time that this {@link Exemplar}'s value was recorded. - * - * @return the time that this {@code Exemplar}'s value was recorded. - * @since 0.16 - */ - public abstract Timestamp getTimestamp(); - - /** - * Returns the contextual information about the example value, represented as a string map. - * - * @return the contextual information about the example value. - * @since 0.16 - */ - public abstract Map<String, String> getAttachments(); - - /** - * Creates an {@link Exemplar}. - * - * @param value value of the {@link Exemplar} point. - * @param timestamp the time that this {@code Exemplar}'s value was recorded. - * @param attachments the contextual information about the example value. - * @return an {@code Exemplar}. - * @since 0.16 - */ - public static Exemplar create( - double value, Timestamp timestamp, Map<String, String> attachments) { - Utils.checkNotNull(attachments, "attachments"); - Map<String, String> attachmentsCopy = - Collections.unmodifiableMap(new HashMap<String, String>(attachments)); - for (Entry<String, String> entry : attachmentsCopy.entrySet()) { - Utils.checkNotNull(entry.getKey(), "key of attachments"); - Utils.checkNotNull(entry.getValue(), "value of attachments"); - } - return new AutoValue_Distribution_Exemplar(value, timestamp, attachmentsCopy); - } - } -} diff --git a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/LabelKey.java b/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/LabelKey.java deleted file mode 100644 index d0c83e5e..00000000 --- a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/LabelKey.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * 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.implcore.temporary.metrics; - -import com.google.auto.value.AutoValue; -import io.opencensus.common.ExperimentalApi; -import javax.annotation.concurrent.Immutable; - -/** - * The key of a {@code Label} associated with a {@code MetricDescriptor}. - * - * @since 0.15 - */ -@ExperimentalApi -@Immutable -@AutoValue -public abstract class LabelKey { - - LabelKey() {} - - /** - * Creates a {@link LabelKey}. - * - * @param key the key of a {@code Label}. - * @param description a human-readable description of what this label key represents. - * @return a {@code LabelKey}. - * @since 0.15 - */ - public static LabelKey create(String key, String description) { - return new AutoValue_LabelKey(key, description); - } - - /** - * Returns the key of this {@link LabelKey}. - * - * @return the key. - * @since 0.15 - */ - public abstract String getKey(); - - /** - * Returns the description of this {@link LabelKey}. - * - * @return the description. - * @since 0.15 - */ - public abstract String getDescription(); -} diff --git a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/LabelValue.java b/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/LabelValue.java deleted file mode 100644 index 919b16a3..00000000 --- a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/LabelValue.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * 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.implcore.temporary.metrics; - -import com.google.auto.value.AutoValue; -import io.opencensus.common.ExperimentalApi; -import javax.annotation.Nullable; -import javax.annotation.concurrent.Immutable; - -/** - * The value of a {@code Label} associated with a {@code TimeSeries}. - * - * @since 0.15 - */ -@ExperimentalApi -@Immutable -@AutoValue -public abstract class LabelValue { - - LabelValue() {} - - /** - * Creates a {@link LabelValue}. - * - * @param value the value of a {@code Label}. {@code null} value indicates an unset {@code - * LabelValue}. - * @return a {@code LabelValue}. - * @since 0.15 - */ - public static LabelValue create(@Nullable String value) { - return new AutoValue_LabelValue(value); - } - - /** - * Returns the value of this {@link LabelValue}. Returns {@code null} if the value is unset and - * supposed to be ignored. - * - * @return the value. - * @since 0.15 - */ - @Nullable - public abstract String getValue(); -} diff --git a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/Metric.java b/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/Metric.java deleted file mode 100644 index 56937e8d..00000000 --- a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/Metric.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * 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.implcore.temporary.metrics; - -import com.google.auto.value.AutoValue; -import io.opencensus.common.ExperimentalApi; -import io.opencensus.implcore.temporary.metrics.Value.ValueDistribution; -import io.opencensus.implcore.temporary.metrics.Value.ValueDouble; -import io.opencensus.implcore.temporary.metrics.Value.ValueLong; -import io.opencensus.internal.Utils; -import java.util.List; -import javax.annotation.concurrent.Immutable; - -/** - * A {@link Metric} with one or more {@link TimeSeries}. - * - * @since 0.16 - */ -@ExperimentalApi -@Immutable -@AutoValue -public abstract class Metric { - - Metric() {} - - /** - * Creates a {@link Metric}. - * - * @param metricDescriptor the {@link MetricDescriptor}. - * @param timeSeriesList the {@link TimeSeries} list for this metric. - * @return a {@code Metric}. - * @since 0.16 - */ - public static Metric create(MetricDescriptor metricDescriptor, List<TimeSeries> timeSeriesList) { - checkTypeMatch(metricDescriptor.getType(), timeSeriesList); - return new AutoValue_Metric(metricDescriptor, timeSeriesList); - } - - /** - * Returns the {@link MetricDescriptor} of this metric. - * - * @return the {@code MetricDescriptor} of this metric. - * @since 0.16 - */ - public abstract MetricDescriptor getMetricDescriptor(); - - /** - * Returns the {@link TimeSeries} list for this metric. - * - * <p>The type of the {@link TimeSeries#getPoints()} must match {@link MetricDescriptor.Type}. - * - * @return the {@code TimeSeriesList} for this metric. - * @since 0.16 - */ - public abstract List<TimeSeries> getTimeSeriesList(); - - private static void checkTypeMatch(MetricDescriptor.Type type, List<TimeSeries> timeSeriesList) { - for (TimeSeries timeSeries : timeSeriesList) { - for (Point point : timeSeries.getPoints()) { - Value value = point.getValue(); - String valueClassName = ""; - if (value.getClass().getSuperclass() != null) { // work around nullness check - // AutoValue classes should always have a super class. - valueClassName = value.getClass().getSuperclass().getSimpleName(); - } - switch (type) { - case GAUGE_INT64: - case CUMULATIVE_INT64: - Utils.checkArgument( - value instanceof ValueLong, "Type mismatch: %s, %s.", type, valueClassName); - break; - case CUMULATIVE_DOUBLE: - case GAUGE_DOUBLE: - Utils.checkArgument( - value instanceof ValueDouble, "Type mismatch: %s, %s.", type, valueClassName); - break; - case CUMULATIVE_DISTRIBUTION: - Utils.checkArgument( - value instanceof ValueDistribution, "Type mismatch: %s, %s.", type, valueClassName); - } - } - } - } -} diff --git a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/MetricDescriptor.java b/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/MetricDescriptor.java deleted file mode 100644 index fb7265f1..00000000 --- a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/MetricDescriptor.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * 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.implcore.temporary.metrics; - -import com.google.auto.value.AutoValue; -import io.opencensus.common.ExperimentalApi; -import io.opencensus.internal.Utils; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import javax.annotation.concurrent.Immutable; - -/** - * {@link MetricDescriptor} defines a {@code Metric} type and its schema. - * - * @since 0.16 - */ -@ExperimentalApi -@Immutable -@AutoValue -public abstract class MetricDescriptor { - - MetricDescriptor() {} - - /** - * Creates a {@link MetricDescriptor}. - * - * @param name name of {@code MetricDescriptor}. - * @param description description of {@code MetricDescriptor}. - * @param unit the metric unit. - * @param type type of {@code MetricDescriptor}. - * @param labelKeys the label keys associated with the {@code MetricDescriptor}. - * @return a {@code MetricDescriptor}. - * @since 0.16 - */ - public static MetricDescriptor create( - String name, String description, String unit, Type type, List<LabelKey> labelKeys) { - Utils.checkNotNull(labelKeys, "labelKeys"); - Utils.checkListElementNotNull(labelKeys, "labelKey"); - return new AutoValue_MetricDescriptor( - name, - description, - unit, - type, - Collections.unmodifiableList(new ArrayList<LabelKey>(labelKeys))); - } - - /** - * Returns the metric descriptor name. - * - * @return the metric descriptor name. - * @since 0.16 - */ - public abstract String getName(); - - /** - * Returns the description of this metric descriptor. - * - * @return the description of this metric descriptor. - * @since 0.16 - */ - public abstract String getDescription(); - - /** - * Returns the unit of this metric descriptor. - * - * @return the unit of this metric descriptor. - * @since 0.16 - */ - public abstract String getUnit(); - - /** - * Returns the type of this metric descriptor. - * - * @return the type of this metric descriptor. - * @since 0.16 - */ - public abstract Type getType(); - - /** - * Returns the label keys associated with this metric descriptor. - * - * @return the label keys associated with this metric descriptor. - * @since 0.16 - */ - public abstract List<LabelKey> getLabelKeys(); - - /** - * The kind of metric. It describes how the data is reported. - * - * <p>A gauge is an instantaneous measurement of a value. - * - * <p>A cumulative measurement is a value accumulated over a time interval. In a time series, - * cumulative measurements should have the same start time and increasing end times, until an - * event resets the cumulative value to zero and sets a new start time for the following points. - * - * @since 0.16 - */ - public enum Type { - - /** - * An instantaneous measurement of an int64 value. - * - * @since 0.16 - */ - GAUGE_INT64, - - /** - * An instantaneous measurement of a double value. - * - * @since 0.16 - */ - GAUGE_DOUBLE, - - /** - * An cumulative measurement of an int64 value. - * - * @since 0.16 - */ - CUMULATIVE_INT64, - - /** - * An cumulative measurement of a double value. - * - * @since 0.16 - */ - CUMULATIVE_DOUBLE, - - /** - * An cumulative measurement of a distribution value. - * - * @since 0.16 - */ - CUMULATIVE_DISTRIBUTION, - } -} diff --git a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/MetricProducer.java b/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/MetricProducer.java deleted file mode 100644 index cb56d3dc..00000000 --- a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/MetricProducer.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * 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.implcore.temporary.metrics; - -import io.opencensus.common.ExperimentalApi; -import io.opencensus.implcore.temporary.metrics.export.MetricProducerManager; -import java.util.Collection; - -/** - * A {@link io.opencensus.implcore.temporary.metrics.Metric} producer that can be registered for - * exporting using {@link MetricProducerManager}. - * - * <p>All implementation MUST be thread-safe. - */ -@ExperimentalApi -public abstract class MetricProducer { - - /** - * Returns a collection of produced {@link io.opencensus.implcore.temporary.metrics.Metric}s to be - * exported. - * - * @return a collection of produced {@link io.opencensus.implcore.temporary.metrics.Metric}s to be - * exported. - */ - public abstract Collection<Metric> getMetrics(); -} diff --git a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/MetricRegistry.java b/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/MetricRegistry.java deleted file mode 100644 index 851fdba5..00000000 --- a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/MetricRegistry.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * 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.implcore.temporary.metrics; - -import io.opencensus.common.ExperimentalApi; -import io.opencensus.common.ToDoubleFunction; -import io.opencensus.common.ToLongFunction; -import io.opencensus.internal.Utils; -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedHashMap; - -/** - * Creates and manages your application's set of metrics. Exporters use the metric registry to - * iterate over the set of metrics instrumenting your application, and then further export each - * metric to the backend of choice. - * - * @since 0.16 - */ -@ExperimentalApi -public abstract class MetricRegistry extends MetricProducer { - /** - * Build a new long gauge to be added to the registry. - * - * <p>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.16 @ExperimentalApi - */ - public abstract <T> void addLongGauge( - String name, - String description, - String unit, - LinkedHashMap<LabelKey, LabelValue> labels, - T obj, - ToLongFunction<T> function); - - /** - * Build a new double gauge to be added to the registry. - * - * <p>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.16 @ExperimentalApi - */ - public abstract <T> void addDoubleGauge( - String name, - String description, - String unit, - LinkedHashMap<LabelKey, LabelValue> labels, - T obj, - ToDoubleFunction<T> function); - - static MetricRegistry newNoopMetricRegistry() { - return new NoopMetricRegistry(); - } - - private static final class NoopMetricRegistry extends MetricRegistry { - - @Override - public <T> void addLongGauge( - String name, - String description, - String unit, - LinkedHashMap<LabelKey, LabelValue> labels, - T obj, - ToLongFunction<T> function) { - Utils.checkNotNull(name, "name"); - Utils.checkNotNull(description, "description"); - Utils.checkNotNull(unit, "unit"); - Utils.checkNotNull(labels, "labels"); - Utils.checkNotNull(function, "function"); - } - - @Override - public <T> void addDoubleGauge( - String name, - String description, - String unit, - LinkedHashMap<LabelKey, LabelValue> labels, - T obj, - ToDoubleFunction<T> function) { - Utils.checkNotNull(name, "name"); - Utils.checkNotNull(description, "description"); - Utils.checkNotNull(unit, "unit"); - Utils.checkNotNull(labels, "labels"); - Utils.checkNotNull(function, "function"); - } - - @Override - public Collection<Metric> getMetrics() { - return Collections.emptyList(); - } - } -} diff --git a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/Metrics.java b/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/Metrics.java deleted file mode 100644 index cf4b3e63..00000000 --- a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/Metrics.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * 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.implcore.temporary.metrics; - -import io.opencensus.common.ExperimentalApi; -import io.opencensus.implcore.temporary.metrics.export.ExportComponent; -import io.opencensus.internal.DefaultVisibilityForTesting; -import io.opencensus.internal.Provider; -import java.util.logging.Level; -import java.util.logging.Logger; -import javax.annotation.Nullable; - -/** - * Class for accessing the default {@link MetricsComponent}. - * - * @since 0.16 - */ -@ExperimentalApi -public final class Metrics { - private static final Logger logger = Logger.getLogger(Metrics.class.getName()); - private static final MetricsComponent metricsComponent = - loadMetricsComponent(MetricsComponent.class.getClassLoader()); - - /** - * Returns the global {@link ExportComponent}. - * - * @return the global {@code ExportComponent}. - * @since 0.16 - */ - public static ExportComponent getExportComponent() { - return metricsComponent.getExportComponent(); - } - - /** - * Returns the global {@link MetricRegistry}. - * - * <p>This {@code MetricRegistry} is already added to the global {@link - * io.opencensus.implcore.temporary.metrics.export.MetricProducerManager}. - * - * @return the global {@code MetricRegistry}. - * @since 0.16 - */ - public static MetricRegistry getMetricRegistry() { - return metricsComponent.getMetricRegistry(); - } - - // Any provider that may be used for MetricsComponent can be added here. - @DefaultVisibilityForTesting - static MetricsComponent loadMetricsComponent(@Nullable ClassLoader classLoader) { - try { - // Call Class.forName with literal string name of the class to help shading tools. - return Provider.createInstance( - Class.forName( - "io.opencensus.impl.metrics.MetricsComponentImpl", /*initialize=*/ true, classLoader), - MetricsComponent.class); - } catch (ClassNotFoundException e) { - logger.log( - Level.FINE, - "Couldn't load full implementation for MetricsComponent, now trying to load lite " - + "implementation.", - e); - } - try { - // Call Class.forName with literal string name of the class to help shading tools. - return Provider.createInstance( - Class.forName( - "io.opencensus.impllite.metrics.MetricsComponentImplLite", - /*initialize=*/ true, - classLoader), - MetricsComponent.class); - } catch (ClassNotFoundException e) { - logger.log( - Level.FINE, - "Couldn't load lite implementation for MetricsComponent, now using default " - + "implementation for MetricsComponent.", - e); - } - return MetricsComponent.newNoopMetricsComponent(); - } - - private Metrics() {} -} diff --git a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/MetricsComponent.java b/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/MetricsComponent.java deleted file mode 100644 index e578f8b6..00000000 --- a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/MetricsComponent.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * 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.implcore.temporary.metrics; - -import io.opencensus.common.ExperimentalApi; -import io.opencensus.implcore.temporary.metrics.export.ExportComponent; - -/** - * Class that holds the implementation instance for {@link ExportComponent}. - * - * @since 0.16 - */ -@ExperimentalApi -public abstract class MetricsComponent { - - /** - * Returns the {@link ExportComponent} with the provided implementation. If no implementation is - * provided then no-op implementations will be used. - * - * @return the {@link ExportComponent} implementation. - * @since 0.16 - */ - public abstract ExportComponent getExportComponent(); - - /** - * Returns the {@link MetricRegistry} with the provided implementation. - * - * @return the {@link MetricRegistry} implementation. - * @since 0.16 - */ - public abstract MetricRegistry getMetricRegistry(); - - /** - * Returns an instance that contains no-op implementations for all the instances. - * - * @return an instance that contains no-op implementations for all the instances. - */ - static MetricsComponent newNoopMetricsComponent() { - return new NoopMetricsComponent(); - } - - private static final class NoopMetricsComponent extends MetricsComponent { - private static final ExportComponent EXPORT_COMPONENT = - ExportComponent.newNoopExportComponent(); - private static final MetricRegistry METRIC_REGISTRY = MetricRegistry.newNoopMetricRegistry(); - - @Override - public ExportComponent getExportComponent() { - return EXPORT_COMPONENT; - } - - @Override - public MetricRegistry getMetricRegistry() { - return METRIC_REGISTRY; - } - } -} diff --git a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/Point.java b/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/Point.java deleted file mode 100644 index e7337f59..00000000 --- a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/Point.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * 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.implcore.temporary.metrics; - -import com.google.auto.value.AutoValue; -import io.opencensus.common.ExperimentalApi; -import io.opencensus.common.Timestamp; -import javax.annotation.concurrent.Immutable; - -/** - * A timestamped measurement of a {@code TimeSeries}. - * - * @since 0.16 - */ -@ExperimentalApi -@AutoValue -@Immutable -public abstract class Point { - - Point() {} - - /** - * Creates a {@link Point}. - * - * @param value the {@link Value} of this {@link Point}. - * @param timestamp the {@link Timestamp} when this {@link Point} was recorded. - * @return a {@code Point}. - * @since 0.16 - */ - public static Point create(Value value, Timestamp timestamp) { - return new AutoValue_Point(value, timestamp); - } - - /** - * Returns the {@link Value}. - * - * @return the {@code Value}. - * @since 0.16 - */ - public abstract Value getValue(); - - /** - * Returns the {@link Timestamp} when this {@link Point} was recorded. - * - * @return the {@code Timestamp}. - * @since 0.16 - */ - public abstract Timestamp getTimestamp(); -} diff --git a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/TimeSeries.java b/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/TimeSeries.java deleted file mode 100644 index f149d06d..00000000 --- a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/TimeSeries.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * 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.implcore.temporary.metrics; - -import com.google.auto.value.AutoValue; -import io.opencensus.common.ExperimentalApi; -import io.opencensus.common.Timestamp; -import io.opencensus.internal.Utils; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import javax.annotation.Nullable; -import javax.annotation.concurrent.Immutable; - -/** - * A collection of data points that describes the time-varying values of a {@code Metric}. - * - * @since 0.16 - */ -@ExperimentalApi -@Immutable -@AutoValue -public abstract class TimeSeries { - - TimeSeries() {} - - /** - * Creates a {@link TimeSeries}. - * - * @param labelValues the {@code LabelValue}s that uniquely identify this {@code TimeSeries}. - * @param points the data {@code Point}s of this {@code TimeSeries}. - * @param startTimestamp the start {@code Timestamp} of this {@code TimeSeries}. Must be non-null - * for cumulative {@code Point}s. - * @return a {@code TimeSeries}. - * @since 0.16 - */ - public static TimeSeries create( - List<LabelValue> labelValues, List<Point> points, @Nullable Timestamp startTimestamp) { - // Fail fast on null lists to prevent NullPointerException when copying the lists. - Utils.checkNotNull(labelValues, "labelValues"); - Utils.checkNotNull(points, "points"); - Utils.checkListElementNotNull(labelValues, "labelValue"); - Utils.checkListElementNotNull(points, "point"); - return new AutoValue_TimeSeries( - Collections.unmodifiableList(new ArrayList<LabelValue>(labelValues)), - Collections.unmodifiableList(new ArrayList<Point>(points)), - startTimestamp); - } - - /** - * Returns the set of {@link LabelValue}s that uniquely identify this {@link TimeSeries}. - * - * <p>Apply to all {@link Point}s. - * - * <p>The order of {@link LabelValue}s must match that of {@link LabelKey}s in the {@code - * MetricDescriptor}. - * - * @return the {@code LabelValue}s. - * @since 0.16 - */ - public abstract List<LabelValue> getLabelValues(); - - /** - * Returns the data {@link Point}s of this {@link TimeSeries}. - * - * @return the data {@code Point}s. - * @since 0.16 - */ - public abstract List<Point> getPoints(); - - /** - * Returns the start {@link Timestamp} of this {@link TimeSeries} if the {@link Point}s are - * cumulative, or {@code null} if the {@link Point}s are gauge. - * - * @return the start {@code Timestamp} or {@code null}. - * @since 0.16 - */ - @Nullable - public abstract Timestamp getStartTimestamp(); -} diff --git a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/Value.java b/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/Value.java deleted file mode 100644 index a17c5135..00000000 --- a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/Value.java +++ /dev/null @@ -1,196 +0,0 @@ -/* - * 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.implcore.temporary.metrics; - -import com.google.auto.value.AutoValue; -import io.opencensus.common.ExperimentalApi; -import io.opencensus.common.Function; -import javax.annotation.concurrent.Immutable; - -/** - * The actual point value for a {@link Point}. - * - * <p>Currently there are three types of {@link Value}: - * - * <ul> - * <li>{@code double} - * <li>{@code long} - * <li>{@link Distribution} - * </ul> - * - * <p>Each {@link Point} contains exactly one of the three {@link Value} types. - * - * @since 0.16 - */ -@ExperimentalApi -@Immutable -public abstract class Value { - - Value() {} - - /** - * Returns a double {@link Value}. - * - * @param value value in double. - * @return a double {@code Value}. - * @since 0.16 - */ - public static Value doubleValue(double value) { - return ValueDouble.create(value); - } - - /** - * Returns a long {@link Value}. - * - * @param value value in long. - * @return a long {@code Value}. - * @since 0.16 - */ - public static Value longValue(long value) { - return ValueLong.create(value); - } - - /** - * Returns a {@link Distribution} {@link Value}. - * - * @param value value in {@link Distribution}. - * @return a {@code Distribution} {@code Value}. - * @since 0.16 - */ - public static Value distributionValue(Distribution value) { - return ValueDistribution.create(value); - } - - /** - * Applies the given match function to the underlying data type. - * - * @since 0.16 - */ - public abstract <T> T match( - Function<? super Double, T> doubleFunction, - Function<? super Long, T> longFunction, - Function<? super Distribution, T> distributionFunction, - Function<? super Value, T> defaultFunction); - - /** A 64-bit double-precision floating-point {@link Value}. */ - @AutoValue - @Immutable - abstract static class ValueDouble extends Value { - - ValueDouble() {} - - @Override - public final <T> T match( - Function<? super Double, T> doubleFunction, - Function<? super Long, T> longFunction, - Function<? super Distribution, T> distributionFunction, - Function<? super Value, T> defaultFunction) { - return doubleFunction.apply(getValue()); - } - - /** - * Creates a {@link ValueDouble}. - * - * @param value the value in double. - * @return a {@code ValueDouble}. - */ - static ValueDouble create(double value) { - return new AutoValue_Value_ValueDouble(value); - } - - /** - * Returns the double value. - * - * @return the double value. - */ - abstract double getValue(); - } - - /** A 64-bit integer {@link Value}. */ - @AutoValue - @Immutable - abstract static class ValueLong extends Value { - - ValueLong() {} - - @Override - public final <T> T match( - Function<? super Double, T> doubleFunction, - Function<? super Long, T> longFunction, - Function<? super Distribution, T> distributionFunction, - Function<? super Value, T> defaultFunction) { - return longFunction.apply(getValue()); - } - - /** - * Creates a {@link ValueLong}. - * - * @param value the value in long. - * @return a {@code ValueLong}. - */ - static ValueLong create(long value) { - return new AutoValue_Value_ValueLong(value); - } - - /** - * Returns the long value. - * - * @return the long value. - */ - abstract long getValue(); - } - - /** - * {@link ValueDistribution} contains summary statistics for a population of values. It optionally - * contains a histogram representing the distribution of those values across a set of buckets. - */ - @AutoValue - @Immutable - abstract static class ValueDistribution extends Value { - - ValueDistribution() {} - - @Override - public final <T> T match( - Function<? super Double, T> doubleFunction, - Function<? super Long, T> longFunction, - Function<? super Distribution, T> distributionFunction, - Function<? super Value, T> defaultFunction) { - return distributionFunction.apply(getValue()); - } - - /** - * Creates a {@link ValueDistribution}. - * - * @param value the {@link Distribution} value. - * @return a {@code ValueDistribution}. - */ - static ValueDistribution create(Distribution value) { - return new AutoValue_Value_ValueDistribution(value); - } - - /** - * Returns the {@link Distribution} value. - * - * @return the {@code Distribution} value. - */ - abstract Distribution getValue(); - } - - // TODO(songya): Add support for Summary type. - // This is an aggregation that produces percentiles directly. -} diff --git a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/export/ExportComponent.java b/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/export/ExportComponent.java deleted file mode 100644 index fd299976..00000000 --- a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/export/ExportComponent.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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.implcore.temporary.metrics.export; - -import io.opencensus.common.ExperimentalApi; - -/** - * Class that holds the implementation instance for {@link MetricProducerManager}. - * - * <p>Unless otherwise noted all methods (on component) results are cacheable. - * - * @since 0.16 - */ -@ExperimentalApi -public abstract class ExportComponent { - /** - * Returns the no-op implementation of the {@code ExportComponent}. - * - * @return the no-op implementation of the {@code ExportComponent}. - * @since 0.16 - */ - public static ExportComponent newNoopExportComponent() { - return new NoopExportComponent(); - } - - /** - * Returns the global {@link MetricProducerManager} which can be used to register handlers to - * export all the recorded metrics. - * - * @return the implementation of the {@code MetricExporter} or no-op if no implementation linked - * in the binary. - * @since 0.16 - */ - public abstract MetricProducerManager getMetricProducerManager(); - - private static final class NoopExportComponent extends ExportComponent { - - private static final MetricProducerManager METRIC_PRODUCER_MANAGER = - MetricProducerManager.newNoopMetricProducerManager(); - - @Override - public MetricProducerManager getMetricProducerManager() { - return METRIC_PRODUCER_MANAGER; - } - } -} diff --git a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/export/MetricProducerManager.java b/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/export/MetricProducerManager.java deleted file mode 100644 index b28b094d..00000000 --- a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/export/MetricProducerManager.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * 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.implcore.temporary.metrics.export; - -import io.opencensus.common.ExperimentalApi; -import io.opencensus.implcore.temporary.metrics.MetricProducer; -import io.opencensus.internal.Utils; -import java.util.Collections; -import java.util.Set; -import javax.annotation.concurrent.ThreadSafe; - -/** - * Keeps a set of {@link MetricProducer} that is used by exporters to determine the metrics that - * need to be exported. - * - * @since 0.16 - */ -@ExperimentalApi -@ThreadSafe -public abstract class MetricProducerManager { - - /** - * Adds the {@link MetricProducer} to the manager if it is not already present. - * - * @param metricProducer the {@code MetricProducer} to be added to the manager. - * @since 0.16 - */ - public abstract void add(MetricProducer metricProducer); - - /** - * Removes the {@link MetricProducer} to the manager if it is present. - * - * @param metricProducer the {@code MetricProducer} to be removed from the manager. - * @since 0.16 - */ - public abstract void remove(MetricProducer metricProducer); - - /** - * Returns all registered {@link MetricProducer}s that should be exported. - * - * <p>This method should be used by any metrics exporter that automatically exports data for - * {@code MetricProducer} registered with the {@code MetricProducerManager}. - * - * @return all registered {@code MetricProducer}s that should be exported. - * @since 0.16 - */ - public abstract Set<MetricProducer> getAllMetricProducer(); - - /** - * Returns a no-op implementation for {@link MetricProducerManager}. - * - * @return a no-op implementation for {@code MetricProducerManager}. - */ - static MetricProducerManager newNoopMetricProducerManager() { - return new NoopMetricProducerManager(); - } - - private static final class NoopMetricProducerManager extends MetricProducerManager { - - @Override - public void add(MetricProducer metricProducer) { - Utils.checkNotNull(metricProducer, "metricProducer"); - } - - @Override - public void remove(MetricProducer metricProducer) { - Utils.checkNotNull(metricProducer, "metricProducer"); - } - - @Override - public Set<MetricProducer> getAllMetricProducer() { - return Collections.emptySet(); - } - } -} diff --git a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/package-info.java b/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/package-info.java deleted file mode 100644 index f768380f..00000000 --- a/impl_core/src/main/java/io/opencensus/implcore/temporary/metrics/package-info.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * 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. - */ - -/** - * This package describes the Metrics data model. Metrics are a data model for what stats exporters - * take as input. This data model may eventually become the wire format for metrics. - * - * <p>WARNING: Currently all the public classes under this package are marked as {@link - * io.opencensus.common.ExperimentalApi}. The classes and APIs under {@link - * io.opencensus.implcore.temporary.metrics} are likely to get backwards-incompatible updates in the - * future. DO NOT USE except for experimental purposes. - * - * <p>Please see - * https://github.com/census-instrumentation/opencensus-specs/blob/master/stats/Metrics.md and - * https://github.com/census-instrumentation/opencensus-proto/blob/master/opencensus/proto/stats/metrics/metrics.proto - * for more details. - */ -@io.opencensus.common.ExperimentalApi -package io.opencensus.implcore.temporary.metrics; |