|
11 | 11 |
|
12 | 12 | #include "opentelemetry/proto/collector/metrics/v1/metrics_service.pb.h" |
13 | 13 |
|
| 14 | +#include "opentelemetry/exporters/otlp/otlp_metric_utils.h" |
14 | 15 | #include "opentelemetry/exporters/otlp/protobuf_include_suffix.h" |
15 | 16 |
|
16 | 17 | #include "opentelemetry/common/key_value_iterable_view.h" |
@@ -976,6 +977,78 @@ TEST_F(OtlpHttpMetricExporterTestPeer, CheckDefaultTemporality) |
976 | 977 | } |
977 | 978 | #endif |
978 | 979 |
|
| 980 | +// Test Preferred aggregtion temporality selection |
| 981 | +TEST_F(OtlpHttpMetricExporterTestPeer, PreferredAggergationTemporality) |
| 982 | +{ |
| 983 | + // Cummulative aggregation selector : use cummulative aggregation for all instruments. |
| 984 | + std::unique_ptr<OtlpHttpMetricExporter> exporter(new OtlpHttpMetricExporter()); |
| 985 | + EXPECT_EQ(GetOptions(exporter).aggregation_temporality, |
| 986 | + PreferredAggregationTemporality::kCumulative); |
| 987 | + auto cumm_selector = |
| 988 | + OtlpMetricUtils::ChooseTemporalitySelector(GetOptions(exporter).aggregation_temporality); |
| 989 | + EXPECT_EQ(cumm_selector(opentelemetry::sdk::metrics::InstrumentType::kCounter), |
| 990 | + opentelemetry::sdk::metrics::AggregationTemporality::kCumulative); |
| 991 | + EXPECT_EQ(cumm_selector(opentelemetry::sdk::metrics::InstrumentType::kHistogram), |
| 992 | + opentelemetry::sdk::metrics::AggregationTemporality::kCumulative); |
| 993 | + EXPECT_EQ(cumm_selector(opentelemetry::sdk::metrics::InstrumentType::kUpDownCounter), |
| 994 | + opentelemetry::sdk::metrics::AggregationTemporality::kCumulative); |
| 995 | + EXPECT_EQ(cumm_selector(opentelemetry::sdk::metrics::InstrumentType::kObservableCounter), |
| 996 | + opentelemetry::sdk::metrics::AggregationTemporality::kCumulative); |
| 997 | + EXPECT_EQ(cumm_selector(opentelemetry::sdk::metrics::InstrumentType::kObservableGauge), |
| 998 | + opentelemetry::sdk::metrics::AggregationTemporality::kCumulative); |
| 999 | + EXPECT_EQ(cumm_selector(opentelemetry::sdk::metrics::InstrumentType::kObservableUpDownCounter), |
| 1000 | + opentelemetry::sdk::metrics::AggregationTemporality::kCumulative); |
| 1001 | + |
| 1002 | + // LowMemory aggregation selector use: |
| 1003 | + // - cummulative aggregtion for Counter and Histogram |
| 1004 | + // - delta aggregation for up-down counter, observable counter, observable gauge, observable |
| 1005 | + // up-down counter |
| 1006 | + OtlpHttpMetricExporterOptions opts2; |
| 1007 | + opts2.aggregation_temporality = PreferredAggregationTemporality::kLowMemory; |
| 1008 | + std::unique_ptr<OtlpHttpMetricExporter> exporter2(new OtlpHttpMetricExporter(opts2)); |
| 1009 | + EXPECT_EQ(GetOptions(exporter2).aggregation_temporality, |
| 1010 | + PreferredAggregationTemporality::kLowMemory); |
| 1011 | + auto lowmemory_selector = |
| 1012 | + OtlpMetricUtils::ChooseTemporalitySelector(GetOptions(exporter2).aggregation_temporality); |
| 1013 | + EXPECT_EQ(lowmemory_selector(opentelemetry::sdk::metrics::InstrumentType::kCounter), |
| 1014 | + opentelemetry::sdk::metrics::AggregationTemporality::kDelta); |
| 1015 | + EXPECT_EQ(lowmemory_selector(opentelemetry::sdk::metrics::InstrumentType::kHistogram), |
| 1016 | + opentelemetry::sdk::metrics::AggregationTemporality::kDelta); |
| 1017 | + |
| 1018 | + EXPECT_EQ(lowmemory_selector(opentelemetry::sdk::metrics::InstrumentType::kUpDownCounter), |
| 1019 | + opentelemetry::sdk::metrics::AggregationTemporality::kCumulative); |
| 1020 | + EXPECT_EQ(lowmemory_selector(opentelemetry::sdk::metrics::InstrumentType::kObservableCounter), |
| 1021 | + opentelemetry::sdk::metrics::AggregationTemporality::kCumulative); |
| 1022 | + EXPECT_EQ(lowmemory_selector(opentelemetry::sdk::metrics::InstrumentType::kObservableGauge), |
| 1023 | + opentelemetry::sdk::metrics::AggregationTemporality::kCumulative); |
| 1024 | + EXPECT_EQ( |
| 1025 | + lowmemory_selector(opentelemetry::sdk::metrics::InstrumentType::kObservableUpDownCounter), |
| 1026 | + opentelemetry::sdk::metrics::AggregationTemporality::kCumulative); |
| 1027 | + |
| 1028 | + // Delta aggregation selector use: |
| 1029 | + // - delta aggregtion for Counter, Histogram, Observable Counter, Observable Gauge |
| 1030 | + // - cummulative aggregation for up-down counter, observable up-down counter |
| 1031 | + OtlpHttpMetricExporterOptions opts3; |
| 1032 | + opts3.aggregation_temporality = PreferredAggregationTemporality::kDelta; |
| 1033 | + std::unique_ptr<OtlpHttpMetricExporter> exporter3(new OtlpHttpMetricExporter(opts3)); |
| 1034 | + EXPECT_EQ(GetOptions(exporter3).aggregation_temporality, PreferredAggregationTemporality::kDelta); |
| 1035 | + auto delta_selector = |
| 1036 | + OtlpMetricUtils::ChooseTemporalitySelector(GetOptions(exporter3).aggregation_temporality); |
| 1037 | + EXPECT_EQ(delta_selector(opentelemetry::sdk::metrics::InstrumentType::kCounter), |
| 1038 | + opentelemetry::sdk::metrics::AggregationTemporality::kDelta); |
| 1039 | + EXPECT_EQ(delta_selector(opentelemetry::sdk::metrics::InstrumentType::kHistogram), |
| 1040 | + opentelemetry::sdk::metrics::AggregationTemporality::kDelta); |
| 1041 | + EXPECT_EQ(delta_selector(opentelemetry::sdk::metrics::InstrumentType::kObservableCounter), |
| 1042 | + opentelemetry::sdk::metrics::AggregationTemporality::kDelta); |
| 1043 | + EXPECT_EQ(delta_selector(opentelemetry::sdk::metrics::InstrumentType::kObservableGauge), |
| 1044 | + opentelemetry::sdk::metrics::AggregationTemporality::kDelta); |
| 1045 | + |
| 1046 | + EXPECT_EQ(delta_selector(opentelemetry::sdk::metrics::InstrumentType::kUpDownCounter), |
| 1047 | + opentelemetry::sdk::metrics::AggregationTemporality::kCumulative); |
| 1048 | + EXPECT_EQ(delta_selector(opentelemetry::sdk::metrics::InstrumentType::kObservableUpDownCounter), |
| 1049 | + opentelemetry::sdk::metrics::AggregationTemporality::kCumulative); |
| 1050 | +} |
| 1051 | + |
979 | 1052 | } // namespace otlp |
980 | 1053 | } // namespace exporter |
981 | 1054 | OPENTELEMETRY_END_NAMESPACE |
0 commit comments