All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.opencensus.stats.AggregationData Maven / Gradle / Ivy

/*
 * Copyright 2017, 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.stats;

import com.google.auto.value.AutoValue;
import io.opencensus.common.Function;
import io.opencensus.internal.Utils;
import io.opencensus.metrics.data.Exemplar;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.annotation.concurrent.Immutable;

/**
 * {@link AggregationData} is the result of applying a given {@link Aggregation} to a set of {@code
 * MeasureValue}s.
 *
 * 

{@link AggregationData} currently supports 6 types of basic aggregation values: * *

    *
  • SumDataDouble *
  • SumDataLong *
  • CountData *
  • DistributionData *
  • LastValueDataDouble *
  • LastValueDataLong *
* *

{@link ViewData} will contain one {@link AggregationData}, corresponding to its {@link * Aggregation} definition in {@link View}. * * @since 0.8 */ @Immutable public abstract class AggregationData { private AggregationData() {} /** * Applies the given match function to the underlying data type. * * @since 0.13 */ public abstract T match( Function p0, Function p1, Function p2, Function p3, Function p4, Function p5, Function defaultFunction); /** * The sum value of aggregated {@code MeasureValueDouble}s. * * @since 0.8 */ @Immutable @AutoValue public abstract static class SumDataDouble extends AggregationData { SumDataDouble() {} /** * Creates a {@code SumDataDouble}. * * @param sum the aggregated sum. * @return a {@code SumDataDouble}. * @since 0.8 */ public static SumDataDouble create(double sum) { return new AutoValue_AggregationData_SumDataDouble(sum); } /** * Returns the aggregated sum. * * @return the aggregated sum. * @since 0.8 */ public abstract double getSum(); @Override public final T match( Function p0, Function p1, Function p2, Function p3, Function p4, Function p5, Function defaultFunction) { return p0.apply(this); } } /** * The sum value of aggregated {@code MeasureValueLong}s. * * @since 0.8 */ @Immutable @AutoValue public abstract static class SumDataLong extends AggregationData { SumDataLong() {} /** * Creates a {@code SumDataLong}. * * @param sum the aggregated sum. * @return a {@code SumDataLong}. * @since 0.8 */ public static SumDataLong create(long sum) { return new AutoValue_AggregationData_SumDataLong(sum); } /** * Returns the aggregated sum. * * @return the aggregated sum. * @since 0.8 */ public abstract long getSum(); @Override public final T match( Function p0, Function p1, Function p2, Function p3, Function p4, Function p5, Function defaultFunction) { return p1.apply(this); } } /** * The count value of aggregated {@code MeasureValue}s. * * @since 0.8 */ @Immutable @AutoValue public abstract static class CountData extends AggregationData { CountData() {} /** * Creates a {@code CountData}. * * @param count the aggregated count. * @return a {@code CountData}. * @since 0.8 */ public static CountData create(long count) { return new AutoValue_AggregationData_CountData(count); } /** * Returns the aggregated count. * * @return the aggregated count. * @since 0.8 */ public abstract long getCount(); @Override public final T match( Function p0, Function p1, Function p2, Function p3, Function p4, Function p5, Function defaultFunction) { return p2.apply(this); } } /** * The mean value of aggregated {@code MeasureValue}s. * * @since 0.8 * @deprecated since 0.13, use {@link DistributionData} instead. */ @Immutable @AutoValue @Deprecated @AutoValue.CopyAnnotations public abstract static class MeanData extends AggregationData { MeanData() {} /** * Creates a {@code MeanData}. * * @param mean the aggregated mean. * @param count the aggregated count. * @return a {@code MeanData}. * @since 0.8 */ public static MeanData create(double mean, long count) { return new AutoValue_AggregationData_MeanData(mean, count); } /** * Returns the aggregated mean. * * @return the aggregated mean. * @since 0.8 */ public abstract double getMean(); /** * Returns the aggregated count. * * @return the aggregated count. * @since 0.8 */ public abstract long getCount(); @Override public final T match( Function p0, Function p1, Function p2, Function p3, Function p4, Function p5, Function defaultFunction) { return defaultFunction.apply(this); } } /** * The distribution stats of aggregated {@code MeasureValue}s. Distribution stats include mean, * count, histogram, min, max and sum of squared deviations. * * @since 0.8 */ @Immutable @AutoValue public abstract static class DistributionData extends AggregationData { DistributionData() {} /** * Creates a {@code DistributionData}. * * @param mean mean value. * @param count count value. * @param min min value. * @param max max value. * @param sumOfSquaredDeviations sum of squared deviations. * @param bucketCounts histogram bucket counts. * @param exemplars the exemplars associated with histogram buckets. * @return a {@code DistributionData}. * @since 0.16 * @deprecated since 0.17. Use {@link #create(double, long, double, List, List)} */ @Deprecated @SuppressWarnings("InconsistentOverloads") public static DistributionData create( double mean, long count, double min, double max, double sumOfSquaredDeviations, List bucketCounts, List exemplars) { return create(mean, count, sumOfSquaredDeviations, bucketCounts, exemplars); } /** * Creates a {@code DistributionData}. * * @param mean mean value. * @param count count value. * @param sumOfSquaredDeviations sum of squared deviations. * @param bucketCounts histogram bucket counts. * @param exemplars the exemplars associated with histogram buckets. * @return a {@code DistributionData}. * @since 0.17 */ public static DistributionData create( double mean, long count, double sumOfSquaredDeviations, List bucketCounts, List exemplars) { List bucketCountsCopy = Collections.unmodifiableList( new ArrayList(Utils.checkNotNull(bucketCounts, "bucketCounts"))); for (Long bucketCount : bucketCountsCopy) { Utils.checkNotNull(bucketCount, "bucketCount"); } Utils.checkNotNull(exemplars, "exemplars"); for (Exemplar exemplar : exemplars) { Utils.checkNotNull(exemplar, "exemplar"); } return new AutoValue_AggregationData_DistributionData( mean, count, sumOfSquaredDeviations, bucketCountsCopy, Collections.unmodifiableList(new ArrayList(exemplars))); } /** * Creates a {@code DistributionData}. * * @param mean mean value. * @param count count value. * @param min min value. * @param max max value. * @param sumOfSquaredDeviations sum of squared deviations. * @param bucketCounts histogram bucket counts. * @return a {@code DistributionData}. * @since 0.8 * @deprecated since 0.17. Use {@link #create(double, long, double, List)}. */ @Deprecated @SuppressWarnings("InconsistentOverloads") public static DistributionData create( double mean, long count, double min, double max, double sumOfSquaredDeviations, List bucketCounts) { return create( mean, count, sumOfSquaredDeviations, bucketCounts, Collections.emptyList()); } /** * Creates a {@code DistributionData}. * * @param mean mean value. * @param count count value. * @param sumOfSquaredDeviations sum of squared deviations. * @param bucketCounts histogram bucket counts. * @return a {@code DistributionData}. * @since 0.17 */ public static DistributionData create( double mean, long count, double sumOfSquaredDeviations, List bucketCounts) { return create( mean, count, sumOfSquaredDeviations, bucketCounts, Collections.emptyList()); } /** * Returns the aggregated mean. * * @return the aggregated mean. * @since 0.8 */ public abstract double getMean(); /** * Returns the aggregated count. * * @return the aggregated count. * @since 0.8 */ public abstract long getCount(); /** * Returns the minimum of the population values. * * @return the minimum of the population values. * @since 0.8 * @deprecated since 0.17. Returns {@code 0}. */ @Deprecated public double getMin() { return 0; } /** * Returns the maximum of the population values. * * @return the maximum of the population values. * @since 0.8 * @deprecated since 0.17. Returns {@code 0}. */ @Deprecated public double getMax() { return 0; } /** * Returns the aggregated sum of squared deviations. * * @return the aggregated sum of squared deviations. * @since 0.8 */ public abstract double getSumOfSquaredDeviations(); /** * Returns the aggregated bucket counts. The returned list is immutable, trying to update it * will throw an {@code UnsupportedOperationException}. * * @return the aggregated bucket counts. * @since 0.8 */ public abstract List getBucketCounts(); /** * Returns the {@link Exemplar}s associated with histogram buckets. * * @return the {@code Exemplar}s associated with histogram buckets. * @since 0.16 */ public abstract List getExemplars(); @Override public final T match( Function p0, Function p1, Function p2, Function p3, Function p4, Function p5, Function defaultFunction) { return p3.apply(this); } } /** * The last value of aggregated {@code MeasureValueDouble}s. * * @since 0.13 */ @Immutable @AutoValue public abstract static class LastValueDataDouble extends AggregationData { LastValueDataDouble() {} /** * Creates a {@code LastValueDataDouble}. * * @param lastValue the last value. * @return a {@code LastValueDataDouble}. * @since 0.13 */ public static LastValueDataDouble create(double lastValue) { return new AutoValue_AggregationData_LastValueDataDouble(lastValue); } /** * Returns the last value. * * @return the last value. * @since 0.13 */ public abstract double getLastValue(); @Override public final T match( Function p0, Function p1, Function p2, Function p3, Function p4, Function p5, Function defaultFunction) { return p4.apply(this); } } /** * The last value of aggregated {@code MeasureValueLong}s. * * @since 0.13 */ @Immutable @AutoValue public abstract static class LastValueDataLong extends AggregationData { LastValueDataLong() {} /** * Creates a {@code LastValueDataLong}. * * @param lastValue the last value. * @return a {@code LastValueDataLong}. * @since 0.13 */ public static LastValueDataLong create(long lastValue) { return new AutoValue_AggregationData_LastValueDataLong(lastValue); } /** * Returns the last value. * * @return the last value. * @since 0.13 */ public abstract long getLastValue(); @Override public final T match( Function p0, Function p1, Function p2, Function p3, Function p4, Function p5, Function defaultFunction) { return p5.apply(this); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy