Convert ValueAtPercentile to ValueAtQuantile (#4254)

This commit is contained in:
Anuraag Agrawal 2022-03-10 11:30:20 +09:00 committed by GitHub
parent f5f99cf72d
commit ef427f69ce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 84 additions and 102 deletions

View File

@ -18,7 +18,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSumData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtPercentile;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile;
import io.opentelemetry.sdk.resources.Resource;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
@ -78,8 +78,8 @@ class LoggingMetricExporterTest {
1010,
50000,
Arrays.asList(
ImmutableValueAtPercentile.create(0.0, 25),
ImmutableValueAtPercentile.create(100.0, 433)))))),
ImmutableValueAtQuantile.create(0.0, 25),
ImmutableValueAtQuantile.create(1.0, 433)))))),
MetricData.createLongSum(
resource,
instrumentationLibraryInfo,

View File

@ -33,7 +33,7 @@ final class SummaryDataPointMarshaler extends MarshalerWithSize {
static SummaryDataPointMarshaler create(SummaryPointData point) {
ValueAtQuantileMarshaler[] quantileMarshalers =
ValueAtQuantileMarshaler.createRepeated(point.getPercentileValues());
ValueAtQuantileMarshaler.createRepeated(point.getValues());
KeyValueMarshaler[] attributeMarshalers =
KeyValueMarshaler.createRepeated(point.getAttributes());

View File

@ -9,7 +9,7 @@ import io.opentelemetry.exporter.internal.marshal.MarshalerUtil;
import io.opentelemetry.exporter.internal.marshal.MarshalerWithSize;
import io.opentelemetry.exporter.internal.marshal.Serializer;
import io.opentelemetry.proto.metrics.v1.internal.SummaryDataPoint;
import io.opentelemetry.sdk.metrics.data.ValueAtPercentile;
import io.opentelemetry.sdk.metrics.data.ValueAtQuantile;
import java.io.IOException;
import java.util.List;
@ -17,7 +17,7 @@ final class ValueAtQuantileMarshaler extends MarshalerWithSize {
private final double quantile;
private final double value;
static ValueAtQuantileMarshaler[] createRepeated(List<ValueAtPercentile> values) {
static ValueAtQuantileMarshaler[] createRepeated(List<ValueAtQuantile> values) {
int numValues = values.size();
ValueAtQuantileMarshaler[] marshalers = new ValueAtQuantileMarshaler[numValues];
for (int i = 0; i < numValues; i++) {
@ -26,8 +26,8 @@ final class ValueAtQuantileMarshaler extends MarshalerWithSize {
return marshalers;
}
private static ValueAtQuantileMarshaler create(ValueAtPercentile value) {
return new ValueAtQuantileMarshaler(value.getPercentile() / 100.0, value.getValue());
private static ValueAtQuantileMarshaler create(ValueAtQuantile value) {
return new ValueAtQuantileMarshaler(value.getQuantile(), value.getValue());
}
private ValueAtQuantileMarshaler(double quantile, double value) {

View File

@ -55,7 +55,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSumData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtPercentile;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile;
import io.opentelemetry.sdk.metrics.internal.data.exponentialhistogram.ExponentialHistogramBuckets;
import io.opentelemetry.sdk.metrics.internal.data.exponentialhistogram.ExponentialHistogramData;
import io.opentelemetry.sdk.metrics.internal.data.exponentialhistogram.ExponentialHistogramPointData;
@ -280,7 +280,7 @@ class MetricsRequestMarshalerTest {
KV_ATTR,
5,
14.2,
singletonList(ImmutableValueAtPercentile.create(0.0, 1.1))))))
singletonList(ImmutableValueAtQuantile.create(0.0, 1.1))))))
.containsExactly(
SummaryDataPoint.newBuilder()
.setStartTimeUnixNano(123)
@ -308,8 +308,8 @@ class MetricsRequestMarshalerTest {
9,
18.3,
ImmutableList.of(
ImmutableValueAtPercentile.create(0.0, 1.1),
ImmutableValueAtPercentile.create(100.0, 20.3))))))
ImmutableValueAtQuantile.create(0.0, 1.1),
ImmutableValueAtQuantile.create(1.0, 20.3))))))
.containsExactly(
SummaryDataPoint.newBuilder()
.setStartTimeUnixNano(123)
@ -691,8 +691,8 @@ class MetricsRequestMarshalerTest {
5,
33d,
ImmutableList.of(
ImmutableValueAtPercentile.create(0, 1.1),
ImmutableValueAtPercentile.create(100.0, 20.3))))))))
ImmutableValueAtQuantile.create(0, 1.1),
ImmutableValueAtQuantile.create(1.0, 20.3))))))))
.isEqualTo(
Metric.newBuilder()
.setName("name")

View File

@ -21,7 +21,7 @@ import io.opentelemetry.sdk.metrics.data.MetricDataType;
import io.opentelemetry.sdk.metrics.data.PointData;
import io.opentelemetry.sdk.metrics.data.SumData;
import io.opentelemetry.sdk.metrics.data.SummaryPointData;
import io.opentelemetry.sdk.metrics.data.ValueAtPercentile;
import io.opentelemetry.sdk.metrics.data.ValueAtQuantile;
import io.opentelemetry.sdk.metrics.internal.data.exponentialhistogram.ExponentialHistogramData;
import io.prometheus.client.Collector;
import io.prometheus.client.Collector.MetricFamilySamples;
@ -186,20 +186,20 @@ final class MetricAdapter {
null,
doubleSummaryPoint.getEpochNanos()));
List<ValueAtPercentile> valueAtPercentiles = doubleSummaryPoint.getPercentileValues();
List<ValueAtQuantile> valueAtQuantiles = doubleSummaryPoint.getValues();
List<String> labelNamesWithQuantile = new ArrayList<>(labelNames.size());
labelNamesWithQuantile.addAll(labelNames);
labelNamesWithQuantile.add(LABEL_NAME_QUANTILE);
for (ValueAtPercentile valueAtPercentile : valueAtPercentiles) {
for (ValueAtQuantile valueAtQuantile : valueAtQuantiles) {
List<String> labelValuesWithQuantile = new ArrayList<>(labelValues.size());
labelValuesWithQuantile.addAll(labelValues);
labelValuesWithQuantile.add(doubleToGoString(valueAtPercentile.getPercentile()));
labelValuesWithQuantile.add(doubleToGoString(valueAtQuantile.getQuantile()));
samples.add(
createSample(
name,
labelNamesWithQuantile,
labelValuesWithQuantile,
valueAtPercentile.getValue(),
valueAtQuantile.getValue(),
null,
doubleSummaryPoint.getEpochNanos()));
}

View File

@ -34,7 +34,7 @@ import io.opentelemetry.sdk.metrics.data.MetricData;
import io.opentelemetry.sdk.metrics.data.MetricDataType;
import io.opentelemetry.sdk.metrics.data.PointData;
import io.opentelemetry.sdk.metrics.data.SummaryPointData;
import io.opentelemetry.sdk.metrics.data.ValueAtPercentile;
import io.opentelemetry.sdk.metrics.data.ValueAtQuantile;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
@ -193,16 +193,16 @@ abstract class Serializer {
writer, name + "_count", point.getCount(), point.getAttributes(), point.getEpochNanos());
writePoint(writer, name + "_sum", point.getSum(), point.getAttributes(), point.getEpochNanos());
List<ValueAtPercentile> valueAtPercentiles = point.getPercentileValues();
for (ValueAtPercentile valueAtPercentile : valueAtPercentiles) {
List<ValueAtQuantile> valueAtQuantiles = point.getValues();
for (ValueAtQuantile valueAtQuantile : valueAtQuantiles) {
writePoint(
writer,
name,
valueAtPercentile.getValue(),
valueAtQuantile.getValue(),
point.getAttributes(),
point.getEpochNanos(),
"quantile",
valueAtPercentile.getPercentile(),
valueAtQuantile.getQuantile(),
Collections.emptyList(),
0,
0);

View File

@ -26,7 +26,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSumData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtPercentile;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile;
import io.opentelemetry.sdk.resources.Resource;
import io.prometheus.client.Collector;
import io.prometheus.client.Collector.MetricFamilySamples;
@ -191,8 +191,8 @@ class MetricAdapterTest {
5,
7,
Arrays.asList(
ImmutableValueAtPercentile.create(0.9, 0.1),
ImmutableValueAtPercentile.create(0.99, 0.3))))));
ImmutableValueAtQuantile.create(0.9, 0.1),
ImmutableValueAtQuantile.create(0.99, 0.3))))));
private static final MetricData HISTOGRAM =
MetricData.createDoubleHistogram(
Resource.create(Attributes.of(stringKey("kr"), "vr")),
@ -436,7 +436,7 @@ class MetricAdapterTest {
KP_VP_ATTR,
9,
18.3,
ImmutableList.of(ImmutableValueAtPercentile.create(0.9, 1.1))))))
ImmutableList.of(ImmutableValueAtQuantile.create(0.9, 1.1))))))
.containsExactly(
new Sample(
"full_name_count",
@ -479,8 +479,8 @@ class MetricAdapterTest {
9,
18.3,
ImmutableList.of(
ImmutableValueAtPercentile.create(0.9, 1.1),
ImmutableValueAtPercentile.create(0.99, 12.3))))))
ImmutableValueAtQuantile.create(0.9, 1.1),
ImmutableValueAtQuantile.create(0.99, 12.3))))))
.containsExactly(
new Sample(
"full_name_count",

View File

@ -24,7 +24,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSumData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtPercentile;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile;
import io.opentelemetry.sdk.resources.Resource;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@ -181,8 +181,8 @@ class SerializerTest {
5,
7,
Arrays.asList(
ImmutableValueAtPercentile.create(0.9, 0.1),
ImmutableValueAtPercentile.create(0.99, 0.3))))));
ImmutableValueAtQuantile.create(0.9, 0.1),
ImmutableValueAtQuantile.create(0.99, 0.3))))));
private static final MetricData HISTOGRAM =
MetricData.createDoubleHistogram(
Resource.create(Attributes.of(stringKey("kr"), "vr")),

View File

@ -33,7 +33,7 @@ import io.opentelemetry.sdk.metrics.data.MetricData;
import io.opentelemetry.sdk.metrics.data.SumData;
import io.opentelemetry.sdk.metrics.data.SummaryData;
import io.opentelemetry.sdk.metrics.data.SummaryPointData;
import io.opentelemetry.sdk.metrics.data.ValueAtPercentile;
import io.opentelemetry.sdk.metrics.data.ValueAtQuantile;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoublePointData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableGaugeData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramData;
@ -42,7 +42,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSumData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtPercentile;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile;
import io.opentelemetry.sdk.resources.Resource;
import java.util.ArrayList;
import java.util.Collection;
@ -370,12 +370,13 @@ public final class MetricAdapter {
return TimeUnit.SECONDS.toNanos(time.getSeconds()) + time.getNanos();
}
private static List<ValueAtPercentile> mapValueAtPercentiles(
private static List<ValueAtQuantile> mapValueAtPercentiles(
List<Summary.Snapshot.ValueAtPercentile> valueAtPercentiles) {
List<ValueAtPercentile> result = new ArrayList<>(valueAtPercentiles.size());
List<ValueAtQuantile> result = new ArrayList<>(valueAtPercentiles.size());
for (Summary.Snapshot.ValueAtPercentile censusValue : valueAtPercentiles) {
result.add(
ImmutableValueAtPercentile.create(censusValue.getPercentile(), censusValue.getValue()));
ImmutableValueAtQuantile.create(
censusValue.getPercentile() / 100.0, censusValue.getValue()));
}
return result;
}

View File

@ -25,7 +25,7 @@ import io.opentelemetry.api.trace.SpanContext;
import io.opentelemetry.api.trace.TraceFlags;
import io.opentelemetry.api.trace.TraceState;
import io.opentelemetry.sdk.metrics.data.DoubleExemplarData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtPercentile;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile;
import io.opentelemetry.sdk.resources.Resource;
import java.util.Arrays;
import java.util.Collections;
@ -281,7 +281,7 @@ class MetricAdapterTest {
10L,
5d,
Arrays.asList(
Summary.Snapshot.ValueAtPercentile.create(1.0, 200))))),
Summary.Snapshot.ValueAtPercentile.create(100.0, 200))))),
Timestamp.fromMillis(2000))),
Timestamp.fromMillis(1000)));
@ -301,7 +301,7 @@ class MetricAdapterTest {
.hasAttributes(Attributes.of(AttributeKey.stringKey("key1"), "value1"))
.hasCount(10)
.hasSum(5)
.hasPercentileValues(ImmutableValueAtPercentile.create(1.0, 200)));
.hasValues(ImmutableValueAtQuantile.create(1.0, 200)));
}
@Test

View File

@ -6,7 +6,7 @@
package io.opentelemetry.sdk.testing.assertj;
import io.opentelemetry.sdk.metrics.data.SummaryPointData;
import io.opentelemetry.sdk.metrics.data.ValueAtPercentile;
import io.opentelemetry.sdk.metrics.data.ValueAtQuantile;
import org.assertj.core.api.Assertions;
/** Asserts for (deprecated) Summary points. */
@ -31,9 +31,9 @@ public class SummaryPointDataAssert
}
/** Ensure the summary has exactly, in any order, the given percentile values. */
public SummaryPointDataAssert hasPercentileValues(ValueAtPercentile... percentiles) {
public SummaryPointDataAssert hasValues(ValueAtQuantile... values) {
isNotNull();
Assertions.assertThat(actual.getPercentileValues()).containsExactlyInAnyOrder(percentiles);
Assertions.assertThat(actual.getValues()).containsExactlyInAnyOrder(values);
return this;
}
}

View File

@ -22,7 +22,7 @@ import io.opentelemetry.sdk.metrics.data.LongExemplarData;
import io.opentelemetry.sdk.metrics.data.LongPointData;
import io.opentelemetry.sdk.metrics.data.MetricData;
import io.opentelemetry.sdk.metrics.data.SummaryPointData;
import io.opentelemetry.sdk.metrics.data.ValueAtPercentile;
import io.opentelemetry.sdk.metrics.data.ValueAtQuantile;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoublePointData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableGaugeData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramData;
@ -31,7 +31,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSumData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtPercentile;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile;
import io.opentelemetry.sdk.metrics.internal.data.exponentialhistogram.ExponentialHistogramData;
import io.opentelemetry.sdk.resources.Resource;
import java.util.Arrays;
@ -212,7 +212,7 @@ public class MetricAssertionsTest {
ImmutableLongPointData.create(
1, 2, Attributes.empty(), 3, Collections.singletonList(LONG_EXEMPLAR));
private static final ValueAtPercentile PERCENTILE_VALUE = ImmutableValueAtPercentile.create(0, 1);
private static final ValueAtQuantile PERCENTILE_VALUE = ImmutableValueAtQuantile.create(0, 1);
private static final SummaryPointData DOUBLE_SUMMARY_POINT_DATA =
ImmutableSummaryPointData.create(
@ -467,7 +467,7 @@ public class MetricAssertionsTest {
.hasEpochNanos(2)
.hasStartEpochNanos(1)
.hasAttributes(Attributes.empty())
.hasPercentileValues(PERCENTILE_VALUE);
.hasValues(PERCENTILE_VALUE);
}
@Test
@ -481,7 +481,7 @@ public class MetricAssertionsTest {
assertThatThrownBy(
() ->
assertThat(DOUBLE_SUMMARY_POINT_DATA)
.hasPercentileValues(ImmutableValueAtPercentile.create(1, 1)))
.hasValues(ImmutableValueAtQuantile.create(1, 1)))
.isInstanceOf(AssertionError.class);
}

View File

@ -9,25 +9,15 @@ import java.util.List;
/** A single data point that summarizes the values in a time series of numeric values. */
public interface SummaryPointData extends PointData {
/**
* The number of values that are being summarized.
*
* @return the number of values that are being summarized.
*/
/** Returns the number of values that are being summarized. */
long getCount();
/**
* The sum of all the values that are being summarized.
*
* @return the sum of the values that are being summarized.
*/
/** Returns the sum of all the values that are being summarized. */
double getSum();
/**
* Percentile values in the summarization. Note: a percentile 0.0 represents the minimum value in
* Returns the values in the summarization. Note: a quantile 0.0 represents the minimum value in
* the distribution.
*
* @return the percentiles values.
*/
List<ValueAtPercentile> getPercentileValues();
List<ValueAtQuantile> getValues();
}

View File

@ -1,23 +0,0 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.sdk.metrics.data;
/** A value within a summary. */
public interface ValueAtPercentile {
/**
* The percentile of a distribution. Must be in the interval [0.0, 100.0].
*
* @return the percentile.
*/
double getPercentile();
/**
* The value at the given percentile of a distribution.
*
* @return the value at the percentile.
*/
double getValue();
}

View File

@ -0,0 +1,15 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.sdk.metrics.data;
/** A value within a summary. */
public interface ValueAtQuantile {
/** Returns the quantile of a distribution. Must be in the interval [0.0, 1.0]. */
double getQuantile();
/** Returns the value at the given percentile of a distribution. */
double getValue();
}

View File

@ -8,7 +8,7 @@ package io.opentelemetry.sdk.metrics.internal.data;
import com.google.auto.value.AutoValue;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.sdk.metrics.data.SummaryPointData;
import io.opentelemetry.sdk.metrics.data.ValueAtPercentile;
import io.opentelemetry.sdk.metrics.data.ValueAtQuantile;
import java.util.Collections;
import java.util.List;
import javax.annotation.concurrent.Immutable;
@ -39,7 +39,7 @@ public abstract class ImmutableSummaryPointData implements SummaryPointData {
Attributes attributes,
long count,
double sum,
List<ValueAtPercentile> percentileValues) {
List<ValueAtQuantile> percentileValues) {
return new AutoValue_ImmutableSummaryPointData(
startEpochNanos,
epochNanos,

View File

@ -6,7 +6,7 @@
package io.opentelemetry.sdk.metrics.internal.data;
import com.google.auto.value.AutoValue;
import io.opentelemetry.sdk.metrics.data.ValueAtPercentile;
import io.opentelemetry.sdk.metrics.data.ValueAtQuantile;
import javax.annotation.concurrent.Immutable;
/**
@ -17,10 +17,10 @@ import javax.annotation.concurrent.Immutable;
*/
@Immutable
@AutoValue
public abstract class ImmutableValueAtPercentile implements ValueAtPercentile {
public static ValueAtPercentile create(double percentile, double value) {
return new AutoValue_ImmutableValueAtPercentile(percentile, value);
public abstract class ImmutableValueAtQuantile implements ValueAtQuantile {
public static ValueAtQuantile create(double quantile, double value) {
return new AutoValue_ImmutableValueAtQuantile(quantile, value);
}
ImmutableValueAtPercentile() {}
ImmutableValueAtQuantile() {}
}

View File

@ -20,7 +20,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableLongPointData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSumData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtPercentile;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableValueAtQuantile;
import io.opentelemetry.sdk.resources.Resource;
import java.util.Arrays;
import java.util.Collections;
@ -34,10 +34,10 @@ class MetricDataImplTest {
private static final long LONG_VALUE = 10;
private static final double DOUBLE_VALUE = 1.234;
private static final AttributeKey<String> KEY = AttributeKey.stringKey("key");
private static final ValueAtPercentile MINIMUM_VALUE =
ImmutableValueAtPercentile.create(0.0, DOUBLE_VALUE);
private static final ValueAtPercentile MAXIMUM_VALUE =
ImmutableValueAtPercentile.create(100.0, DOUBLE_VALUE);
private static final ValueAtQuantile MINIMUM_VALUE =
ImmutableValueAtQuantile.create(0.0, DOUBLE_VALUE);
private static final ValueAtQuantile MAXIMUM_VALUE =
ImmutableValueAtQuantile.create(1.0, DOUBLE_VALUE);
private static final LongPointData LONG_POINT =
ImmutableLongPointData.create(
START_EPOCH_NANOS, EPOCH_NANOS, Attributes.of(KEY, "value"), LONG_VALUE);
@ -52,8 +52,8 @@ class MetricDataImplTest {
LONG_VALUE,
DOUBLE_VALUE,
Arrays.asList(
ImmutableValueAtPercentile.create(0.0, DOUBLE_VALUE),
ImmutableValueAtPercentile.create(100, DOUBLE_VALUE)));
ImmutableValueAtQuantile.create(0.0, DOUBLE_VALUE),
ImmutableValueAtQuantile.create(1.0, DOUBLE_VALUE)));
private static final ImmutableHistogramPointData HISTOGRAM_POINT =
ImmutableHistogramPointData.create(
START_EPOCH_NANOS,
@ -155,8 +155,7 @@ class MetricDataImplTest {
assertThat(SUMMARY_POINT.getAttributes().get(KEY)).isEqualTo("value");
assertThat(SUMMARY_POINT.getCount()).isEqualTo(LONG_VALUE);
assertThat(SUMMARY_POINT.getSum()).isEqualTo(DOUBLE_VALUE);
assertThat(SUMMARY_POINT.getPercentileValues())
.isEqualTo(Arrays.asList(MINIMUM_VALUE, MAXIMUM_VALUE));
assertThat(SUMMARY_POINT.getValues()).isEqualTo(Arrays.asList(MINIMUM_VALUE, MAXIMUM_VALUE));
MetricData metricData =
MetricData.createDoubleSummary(
Resource.empty(),