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

View File

@ -33,7 +33,7 @@ final class SummaryDataPointMarshaler extends MarshalerWithSize {
static SummaryDataPointMarshaler create(SummaryPointData point) { static SummaryDataPointMarshaler create(SummaryPointData point) {
ValueAtQuantileMarshaler[] quantileMarshalers = ValueAtQuantileMarshaler[] quantileMarshalers =
ValueAtQuantileMarshaler.createRepeated(point.getPercentileValues()); ValueAtQuantileMarshaler.createRepeated(point.getValues());
KeyValueMarshaler[] attributeMarshalers = KeyValueMarshaler[] attributeMarshalers =
KeyValueMarshaler.createRepeated(point.getAttributes()); 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.MarshalerWithSize;
import io.opentelemetry.exporter.internal.marshal.Serializer; import io.opentelemetry.exporter.internal.marshal.Serializer;
import io.opentelemetry.proto.metrics.v1.internal.SummaryDataPoint; 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.io.IOException;
import java.util.List; import java.util.List;
@ -17,7 +17,7 @@ final class ValueAtQuantileMarshaler extends MarshalerWithSize {
private final double quantile; private final double quantile;
private final double value; private final double value;
static ValueAtQuantileMarshaler[] createRepeated(List<ValueAtPercentile> values) { static ValueAtQuantileMarshaler[] createRepeated(List<ValueAtQuantile> values) {
int numValues = values.size(); int numValues = values.size();
ValueAtQuantileMarshaler[] marshalers = new ValueAtQuantileMarshaler[numValues]; ValueAtQuantileMarshaler[] marshalers = new ValueAtQuantileMarshaler[numValues];
for (int i = 0; i < numValues; i++) { for (int i = 0; i < numValues; i++) {
@ -26,8 +26,8 @@ final class ValueAtQuantileMarshaler extends MarshalerWithSize {
return marshalers; return marshalers;
} }
private static ValueAtQuantileMarshaler create(ValueAtPercentile value) { private static ValueAtQuantileMarshaler create(ValueAtQuantile value) {
return new ValueAtQuantileMarshaler(value.getPercentile() / 100.0, value.getValue()); return new ValueAtQuantileMarshaler(value.getQuantile(), value.getValue());
} }
private ValueAtQuantileMarshaler(double quantile, double value) { 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.ImmutableSumData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData; 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.ExponentialHistogramBuckets;
import io.opentelemetry.sdk.metrics.internal.data.exponentialhistogram.ExponentialHistogramData; import io.opentelemetry.sdk.metrics.internal.data.exponentialhistogram.ExponentialHistogramData;
import io.opentelemetry.sdk.metrics.internal.data.exponentialhistogram.ExponentialHistogramPointData; import io.opentelemetry.sdk.metrics.internal.data.exponentialhistogram.ExponentialHistogramPointData;
@ -280,7 +280,7 @@ class MetricsRequestMarshalerTest {
KV_ATTR, KV_ATTR,
5, 5,
14.2, 14.2,
singletonList(ImmutableValueAtPercentile.create(0.0, 1.1)))))) singletonList(ImmutableValueAtQuantile.create(0.0, 1.1))))))
.containsExactly( .containsExactly(
SummaryDataPoint.newBuilder() SummaryDataPoint.newBuilder()
.setStartTimeUnixNano(123) .setStartTimeUnixNano(123)
@ -308,8 +308,8 @@ class MetricsRequestMarshalerTest {
9, 9,
18.3, 18.3,
ImmutableList.of( ImmutableList.of(
ImmutableValueAtPercentile.create(0.0, 1.1), ImmutableValueAtQuantile.create(0.0, 1.1),
ImmutableValueAtPercentile.create(100.0, 20.3)))))) ImmutableValueAtQuantile.create(1.0, 20.3))))))
.containsExactly( .containsExactly(
SummaryDataPoint.newBuilder() SummaryDataPoint.newBuilder()
.setStartTimeUnixNano(123) .setStartTimeUnixNano(123)
@ -691,8 +691,8 @@ class MetricsRequestMarshalerTest {
5, 5,
33d, 33d,
ImmutableList.of( ImmutableList.of(
ImmutableValueAtPercentile.create(0, 1.1), ImmutableValueAtQuantile.create(0, 1.1),
ImmutableValueAtPercentile.create(100.0, 20.3)))))))) ImmutableValueAtQuantile.create(1.0, 20.3))))))))
.isEqualTo( .isEqualTo(
Metric.newBuilder() Metric.newBuilder()
.setName("name") .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.PointData;
import io.opentelemetry.sdk.metrics.data.SumData; import io.opentelemetry.sdk.metrics.data.SumData;
import io.opentelemetry.sdk.metrics.data.SummaryPointData; 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.opentelemetry.sdk.metrics.internal.data.exponentialhistogram.ExponentialHistogramData;
import io.prometheus.client.Collector; import io.prometheus.client.Collector;
import io.prometheus.client.Collector.MetricFamilySamples; import io.prometheus.client.Collector.MetricFamilySamples;
@ -186,20 +186,20 @@ final class MetricAdapter {
null, null,
doubleSummaryPoint.getEpochNanos())); doubleSummaryPoint.getEpochNanos()));
List<ValueAtPercentile> valueAtPercentiles = doubleSummaryPoint.getPercentileValues(); List<ValueAtQuantile> valueAtQuantiles = doubleSummaryPoint.getValues();
List<String> labelNamesWithQuantile = new ArrayList<>(labelNames.size()); List<String> labelNamesWithQuantile = new ArrayList<>(labelNames.size());
labelNamesWithQuantile.addAll(labelNames); labelNamesWithQuantile.addAll(labelNames);
labelNamesWithQuantile.add(LABEL_NAME_QUANTILE); labelNamesWithQuantile.add(LABEL_NAME_QUANTILE);
for (ValueAtPercentile valueAtPercentile : valueAtPercentiles) { for (ValueAtQuantile valueAtQuantile : valueAtQuantiles) {
List<String> labelValuesWithQuantile = new ArrayList<>(labelValues.size()); List<String> labelValuesWithQuantile = new ArrayList<>(labelValues.size());
labelValuesWithQuantile.addAll(labelValues); labelValuesWithQuantile.addAll(labelValues);
labelValuesWithQuantile.add(doubleToGoString(valueAtPercentile.getPercentile())); labelValuesWithQuantile.add(doubleToGoString(valueAtQuantile.getQuantile()));
samples.add( samples.add(
createSample( createSample(
name, name,
labelNamesWithQuantile, labelNamesWithQuantile,
labelValuesWithQuantile, labelValuesWithQuantile,
valueAtPercentile.getValue(), valueAtQuantile.getValue(),
null, null,
doubleSummaryPoint.getEpochNanos())); 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.MetricDataType;
import io.opentelemetry.sdk.metrics.data.PointData; import io.opentelemetry.sdk.metrics.data.PointData;
import io.opentelemetry.sdk.metrics.data.SummaryPointData; 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.BufferedWriter;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
@ -193,16 +193,16 @@ abstract class Serializer {
writer, name + "_count", point.getCount(), point.getAttributes(), point.getEpochNanos()); writer, name + "_count", point.getCount(), point.getAttributes(), point.getEpochNanos());
writePoint(writer, name + "_sum", point.getSum(), point.getAttributes(), point.getEpochNanos()); writePoint(writer, name + "_sum", point.getSum(), point.getAttributes(), point.getEpochNanos());
List<ValueAtPercentile> valueAtPercentiles = point.getPercentileValues(); List<ValueAtQuantile> valueAtQuantiles = point.getValues();
for (ValueAtPercentile valueAtPercentile : valueAtPercentiles) { for (ValueAtQuantile valueAtQuantile : valueAtQuantiles) {
writePoint( writePoint(
writer, writer,
name, name,
valueAtPercentile.getValue(), valueAtQuantile.getValue(),
point.getAttributes(), point.getAttributes(),
point.getEpochNanos(), point.getEpochNanos(),
"quantile", "quantile",
valueAtPercentile.getPercentile(), valueAtQuantile.getQuantile(),
Collections.emptyList(), Collections.emptyList(),
0, 0,
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.ImmutableSumData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData; 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.opentelemetry.sdk.resources.Resource;
import io.prometheus.client.Collector; import io.prometheus.client.Collector;
import io.prometheus.client.Collector.MetricFamilySamples; import io.prometheus.client.Collector.MetricFamilySamples;
@ -191,8 +191,8 @@ class MetricAdapterTest {
5, 5,
7, 7,
Arrays.asList( Arrays.asList(
ImmutableValueAtPercentile.create(0.9, 0.1), ImmutableValueAtQuantile.create(0.9, 0.1),
ImmutableValueAtPercentile.create(0.99, 0.3)))))); ImmutableValueAtQuantile.create(0.99, 0.3))))));
private static final MetricData HISTOGRAM = private static final MetricData HISTOGRAM =
MetricData.createDoubleHistogram( MetricData.createDoubleHistogram(
Resource.create(Attributes.of(stringKey("kr"), "vr")), Resource.create(Attributes.of(stringKey("kr"), "vr")),
@ -436,7 +436,7 @@ class MetricAdapterTest {
KP_VP_ATTR, KP_VP_ATTR,
9, 9,
18.3, 18.3,
ImmutableList.of(ImmutableValueAtPercentile.create(0.9, 1.1)))))) ImmutableList.of(ImmutableValueAtQuantile.create(0.9, 1.1))))))
.containsExactly( .containsExactly(
new Sample( new Sample(
"full_name_count", "full_name_count",
@ -479,8 +479,8 @@ class MetricAdapterTest {
9, 9,
18.3, 18.3,
ImmutableList.of( ImmutableList.of(
ImmutableValueAtPercentile.create(0.9, 1.1), ImmutableValueAtQuantile.create(0.9, 1.1),
ImmutableValueAtPercentile.create(0.99, 12.3)))))) ImmutableValueAtQuantile.create(0.99, 12.3))))))
.containsExactly( .containsExactly(
new Sample( new Sample(
"full_name_count", "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.ImmutableSumData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData; 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.opentelemetry.sdk.resources.Resource;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
@ -181,8 +181,8 @@ class SerializerTest {
5, 5,
7, 7,
Arrays.asList( Arrays.asList(
ImmutableValueAtPercentile.create(0.9, 0.1), ImmutableValueAtQuantile.create(0.9, 0.1),
ImmutableValueAtPercentile.create(0.99, 0.3)))))); ImmutableValueAtQuantile.create(0.99, 0.3))))));
private static final MetricData HISTOGRAM = private static final MetricData HISTOGRAM =
MetricData.createDoubleHistogram( MetricData.createDoubleHistogram(
Resource.create(Attributes.of(stringKey("kr"), "vr")), 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.SumData;
import io.opentelemetry.sdk.metrics.data.SummaryData; import io.opentelemetry.sdk.metrics.data.SummaryData;
import io.opentelemetry.sdk.metrics.data.SummaryPointData; 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.ImmutableDoublePointData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableGaugeData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableGaugeData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramData; 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.ImmutableSumData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData; 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.opentelemetry.sdk.resources.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
@ -370,12 +370,13 @@ public final class MetricAdapter {
return TimeUnit.SECONDS.toNanos(time.getSeconds()) + time.getNanos(); return TimeUnit.SECONDS.toNanos(time.getSeconds()) + time.getNanos();
} }
private static List<ValueAtPercentile> mapValueAtPercentiles( private static List<ValueAtQuantile> mapValueAtPercentiles(
List<Summary.Snapshot.ValueAtPercentile> valueAtPercentiles) { 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) { for (Summary.Snapshot.ValueAtPercentile censusValue : valueAtPercentiles) {
result.add( result.add(
ImmutableValueAtPercentile.create(censusValue.getPercentile(), censusValue.getValue())); ImmutableValueAtQuantile.create(
censusValue.getPercentile() / 100.0, censusValue.getValue()));
} }
return result; 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.TraceFlags;
import io.opentelemetry.api.trace.TraceState; import io.opentelemetry.api.trace.TraceState;
import io.opentelemetry.sdk.metrics.data.DoubleExemplarData; 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 io.opentelemetry.sdk.resources.Resource;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
@ -281,7 +281,7 @@ class MetricAdapterTest {
10L, 10L,
5d, 5d,
Arrays.asList( Arrays.asList(
Summary.Snapshot.ValueAtPercentile.create(1.0, 200))))), Summary.Snapshot.ValueAtPercentile.create(100.0, 200))))),
Timestamp.fromMillis(2000))), Timestamp.fromMillis(2000))),
Timestamp.fromMillis(1000))); Timestamp.fromMillis(1000)));
@ -301,7 +301,7 @@ class MetricAdapterTest {
.hasAttributes(Attributes.of(AttributeKey.stringKey("key1"), "value1")) .hasAttributes(Attributes.of(AttributeKey.stringKey("key1"), "value1"))
.hasCount(10) .hasCount(10)
.hasSum(5) .hasSum(5)
.hasPercentileValues(ImmutableValueAtPercentile.create(1.0, 200))); .hasValues(ImmutableValueAtQuantile.create(1.0, 200)));
} }
@Test @Test

View File

@ -6,7 +6,7 @@
package io.opentelemetry.sdk.testing.assertj; package io.opentelemetry.sdk.testing.assertj;
import io.opentelemetry.sdk.metrics.data.SummaryPointData; 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; import org.assertj.core.api.Assertions;
/** Asserts for (deprecated) Summary points. */ /** Asserts for (deprecated) Summary points. */
@ -31,9 +31,9 @@ public class SummaryPointDataAssert
} }
/** Ensure the summary has exactly, in any order, the given percentile values. */ /** Ensure the summary has exactly, in any order, the given percentile values. */
public SummaryPointDataAssert hasPercentileValues(ValueAtPercentile... percentiles) { public SummaryPointDataAssert hasValues(ValueAtQuantile... values) {
isNotNull(); isNotNull();
Assertions.assertThat(actual.getPercentileValues()).containsExactlyInAnyOrder(percentiles); Assertions.assertThat(actual.getValues()).containsExactlyInAnyOrder(values);
return this; 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.LongPointData;
import io.opentelemetry.sdk.metrics.data.MetricData; import io.opentelemetry.sdk.metrics.data.MetricData;
import io.opentelemetry.sdk.metrics.data.SummaryPointData; 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.ImmutableDoublePointData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableGaugeData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableGaugeData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramData; 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.ImmutableSumData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData; 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.metrics.internal.data.exponentialhistogram.ExponentialHistogramData;
import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.resources.Resource;
import java.util.Arrays; import java.util.Arrays;
@ -212,7 +212,7 @@ public class MetricAssertionsTest {
ImmutableLongPointData.create( ImmutableLongPointData.create(
1, 2, Attributes.empty(), 3, Collections.singletonList(LONG_EXEMPLAR)); 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 = private static final SummaryPointData DOUBLE_SUMMARY_POINT_DATA =
ImmutableSummaryPointData.create( ImmutableSummaryPointData.create(
@ -467,7 +467,7 @@ public class MetricAssertionsTest {
.hasEpochNanos(2) .hasEpochNanos(2)
.hasStartEpochNanos(1) .hasStartEpochNanos(1)
.hasAttributes(Attributes.empty()) .hasAttributes(Attributes.empty())
.hasPercentileValues(PERCENTILE_VALUE); .hasValues(PERCENTILE_VALUE);
} }
@Test @Test
@ -481,7 +481,7 @@ public class MetricAssertionsTest {
assertThatThrownBy( assertThatThrownBy(
() -> () ->
assertThat(DOUBLE_SUMMARY_POINT_DATA) assertThat(DOUBLE_SUMMARY_POINT_DATA)
.hasPercentileValues(ImmutableValueAtPercentile.create(1, 1))) .hasValues(ImmutableValueAtQuantile.create(1, 1)))
.isInstanceOf(AssertionError.class); .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. */ /** A single data point that summarizes the values in a time series of numeric values. */
public interface SummaryPointData extends PointData { public interface SummaryPointData extends PointData {
/** /** Returns the number of values that are being summarized. */
* The number of values that are being summarized.
*
* @return the number of values that are being summarized.
*/
long getCount(); long getCount();
/** /** Returns the sum of all the values that are being summarized. */
* The sum of all the values that are being summarized.
*
* @return the sum of the values that are being summarized.
*/
double getSum(); 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. * 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 com.google.auto.value.AutoValue;
import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.sdk.metrics.data.SummaryPointData; 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.Collections;
import java.util.List; import java.util.List;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@ -39,7 +39,7 @@ public abstract class ImmutableSummaryPointData implements SummaryPointData {
Attributes attributes, Attributes attributes,
long count, long count,
double sum, double sum,
List<ValueAtPercentile> percentileValues) { List<ValueAtQuantile> percentileValues) {
return new AutoValue_ImmutableSummaryPointData( return new AutoValue_ImmutableSummaryPointData(
startEpochNanos, startEpochNanos,
epochNanos, epochNanos,

View File

@ -6,7 +6,7 @@
package io.opentelemetry.sdk.metrics.internal.data; package io.opentelemetry.sdk.metrics.internal.data;
import com.google.auto.value.AutoValue; 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; import javax.annotation.concurrent.Immutable;
/** /**
@ -17,10 +17,10 @@ import javax.annotation.concurrent.Immutable;
*/ */
@Immutable @Immutable
@AutoValue @AutoValue
public abstract class ImmutableValueAtPercentile implements ValueAtPercentile { public abstract class ImmutableValueAtQuantile implements ValueAtQuantile {
public static ValueAtPercentile create(double percentile, double value) { public static ValueAtQuantile create(double quantile, double value) {
return new AutoValue_ImmutableValueAtPercentile(percentile, 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.ImmutableSumData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData; import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSummaryPointData; 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.opentelemetry.sdk.resources.Resource;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
@ -34,10 +34,10 @@ class MetricDataImplTest {
private static final long LONG_VALUE = 10; private static final long LONG_VALUE = 10;
private static final double DOUBLE_VALUE = 1.234; private static final double DOUBLE_VALUE = 1.234;
private static final AttributeKey<String> KEY = AttributeKey.stringKey("key"); private static final AttributeKey<String> KEY = AttributeKey.stringKey("key");
private static final ValueAtPercentile MINIMUM_VALUE = private static final ValueAtQuantile MINIMUM_VALUE =
ImmutableValueAtPercentile.create(0.0, DOUBLE_VALUE); ImmutableValueAtQuantile.create(0.0, DOUBLE_VALUE);
private static final ValueAtPercentile MAXIMUM_VALUE = private static final ValueAtQuantile MAXIMUM_VALUE =
ImmutableValueAtPercentile.create(100.0, DOUBLE_VALUE); ImmutableValueAtQuantile.create(1.0, DOUBLE_VALUE);
private static final LongPointData LONG_POINT = private static final LongPointData LONG_POINT =
ImmutableLongPointData.create( ImmutableLongPointData.create(
START_EPOCH_NANOS, EPOCH_NANOS, Attributes.of(KEY, "value"), LONG_VALUE); START_EPOCH_NANOS, EPOCH_NANOS, Attributes.of(KEY, "value"), LONG_VALUE);
@ -52,8 +52,8 @@ class MetricDataImplTest {
LONG_VALUE, LONG_VALUE,
DOUBLE_VALUE, DOUBLE_VALUE,
Arrays.asList( Arrays.asList(
ImmutableValueAtPercentile.create(0.0, DOUBLE_VALUE), ImmutableValueAtQuantile.create(0.0, DOUBLE_VALUE),
ImmutableValueAtPercentile.create(100, DOUBLE_VALUE))); ImmutableValueAtQuantile.create(1.0, DOUBLE_VALUE)));
private static final ImmutableHistogramPointData HISTOGRAM_POINT = private static final ImmutableHistogramPointData HISTOGRAM_POINT =
ImmutableHistogramPointData.create( ImmutableHistogramPointData.create(
START_EPOCH_NANOS, START_EPOCH_NANOS,
@ -155,8 +155,7 @@ class MetricDataImplTest {
assertThat(SUMMARY_POINT.getAttributes().get(KEY)).isEqualTo("value"); assertThat(SUMMARY_POINT.getAttributes().get(KEY)).isEqualTo("value");
assertThat(SUMMARY_POINT.getCount()).isEqualTo(LONG_VALUE); assertThat(SUMMARY_POINT.getCount()).isEqualTo(LONG_VALUE);
assertThat(SUMMARY_POINT.getSum()).isEqualTo(DOUBLE_VALUE); assertThat(SUMMARY_POINT.getSum()).isEqualTo(DOUBLE_VALUE);
assertThat(SUMMARY_POINT.getPercentileValues()) assertThat(SUMMARY_POINT.getValues()).isEqualTo(Arrays.asList(MINIMUM_VALUE, MAXIMUM_VALUE));
.isEqualTo(Arrays.asList(MINIMUM_VALUE, MAXIMUM_VALUE));
MetricData metricData = MetricData metricData =
MetricData.createDoubleSummary( MetricData.createDoubleSummary(
Resource.empty(), Resource.empty(),