Skip to content

Commit 4376128

Browse files
committed
Added ConvertExponentialHistogramMetric unit test
1 parent 250de89 commit 4376128

File tree

2 files changed

+114
-2
lines changed

2 files changed

+114
-2
lines changed

exporters/otlp/src/otlp_grpc_client.cc

+5-2
Original file line numberDiff line numberDiff line change
@@ -334,9 +334,12 @@ std::shared_ptr<grpc::Channel> OtlpGrpcClient::MakeChannel(const OtlpGrpcClientO
334334

335335
std::shared_ptr<grpc::Channel> channel;
336336
std::string grpc_target;
337-
if (url.scheme_ == "unix") {
337+
if (url.scheme_ == "unix")
338+
{
338339
grpc_target = "unix:" + url.path_;
339-
} else {
340+
}
341+
else
342+
{
340343
grpc_target = url.host_ + ":" + std::to_string(static_cast<int>(url.port_));
341344
}
342345
grpc::ChannelArguments grpc_arguments;

exporters/otlp/test/otlp_metrics_serialization_test.cc

+109
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,56 @@ static metrics_sdk::MetricData CreateHistogramAggregationData()
127127
return data;
128128
}
129129

130+
static metrics_sdk::MetricData CreateExponentialHistogramAggregationData(
131+
const std::chrono::system_clock::time_point &now_time)
132+
{
133+
metrics_sdk::MetricData data;
134+
data.start_ts = opentelemetry::common::SystemTimestamp(now_time);
135+
metrics_sdk::InstrumentDescriptor inst_desc = {"Histogram", "desc", "unit",
136+
metrics_sdk::InstrumentType::kHistogram,
137+
metrics_sdk::InstrumentValueType::kDouble};
138+
metrics_sdk::Base2ExponentialHistogramPointData s_data_1, s_data_2;
139+
s_data_1.count_ = 3;
140+
s_data_1.sum_ = 6.5;
141+
s_data_1.min_ = 0.0;
142+
s_data_1.max_ = 3.5;
143+
s_data_1.scale_ = 3;
144+
s_data_2.record_min_max_ = true;
145+
s_data_1.zero_count_ = 1;
146+
s_data_1.positive_buckets_ = opentelemetry::sdk::metrics::AdaptingCircularBufferCounter(10);
147+
s_data_1.negative_buckets_ = opentelemetry::sdk::metrics::AdaptingCircularBufferCounter(10);
148+
s_data_1.positive_buckets_.Increment(1, 1);
149+
s_data_1.negative_buckets_.Increment(-2, 1);
150+
151+
s_data_2.count_ = 4;
152+
s_data_2.sum_ = 6.2;
153+
s_data_2.min_ = -0.03;
154+
s_data_2.max_ = 3.5;
155+
s_data_2.scale_ = 3;
156+
s_data_2.record_min_max_ = false;
157+
s_data_2.zero_count_ = 2;
158+
s_data_2.positive_buckets_ = opentelemetry::sdk::metrics::AdaptingCircularBufferCounter(10);
159+
s_data_2.negative_buckets_ = opentelemetry::sdk::metrics::AdaptingCircularBufferCounter(10);
160+
s_data_2.positive_buckets_.Increment(3, 1);
161+
s_data_2.negative_buckets_.Increment(-2, 1);
162+
s_data_2.negative_buckets_.Increment(-4, 2);
163+
164+
data.aggregation_temporality = metrics_sdk::AggregationTemporality::kCumulative;
165+
data.end_ts = opentelemetry::common::SystemTimestamp(now_time);
166+
data.instrument_descriptor = inst_desc;
167+
metrics_sdk::PointDataAttributes point_data_attr_1, point_data_attr_2;
168+
point_data_attr_1.attributes = {{"k1", "v1"}};
169+
point_data_attr_1.point_data = s_data_1;
170+
171+
point_data_attr_2.attributes = {{"k2", "v2"}};
172+
point_data_attr_2.point_data = s_data_2;
173+
std::vector<metrics_sdk::PointDataAttributes> point_data_attr;
174+
point_data_attr.push_back(point_data_attr_1);
175+
point_data_attr.push_back(point_data_attr_2);
176+
data.point_data_attr_ = std::move(point_data_attr);
177+
return data;
178+
}
179+
130180
static metrics_sdk::MetricData CreateObservableGaugeAggregationData()
131181
{
132182
metrics_sdk::MetricData data;
@@ -261,6 +311,65 @@ TEST(OtlpMetricSerializationTest, Histogram)
261311
EXPECT_EQ(1, 1);
262312
}
263313

314+
TEST(OtlpMetricSerializationTest, ExponentialHistogramAggregationData)
315+
{
316+
const auto start_test_time = std::chrono::system_clock::now();
317+
const auto data = CreateExponentialHistogramAggregationData(start_test_time);
318+
opentelemetry::proto::metrics::v1::ExponentialHistogram exponentialHistogram;
319+
otlp_exporter::OtlpMetricUtils::ConvertExponentialHistogramMetric(data, &exponentialHistogram);
320+
EXPECT_EQ(exponentialHistogram.aggregation_temporality(),
321+
proto::metrics::v1::AggregationTemporality::AGGREGATION_TEMPORALITY_CUMULATIVE);
322+
323+
EXPECT_EQ(exponentialHistogram.data_points_size(), 2);
324+
// Point 1
325+
{
326+
const auto &data_point1 = exponentialHistogram.data_points(0);
327+
EXPECT_EQ(data_point1.count(), 3);
328+
EXPECT_EQ(data_point1.sum(), 6.5);
329+
EXPECT_EQ(data_point1.min(), 0.0);
330+
EXPECT_EQ(data_point1.max(), 3.5);
331+
EXPECT_EQ(data_point1.zero_count(), 1);
332+
EXPECT_EQ(data_point1.scale(), 3);
333+
EXPECT_EQ(data_point1.positive().offset(), 1);
334+
EXPECT_EQ(data_point1.positive().bucket_counts_size(), 1);
335+
EXPECT_EQ(data_point1.positive().bucket_counts(0), 1);
336+
EXPECT_EQ(data_point1.negative().offset(), -2);
337+
EXPECT_EQ(data_point1.negative().bucket_counts_size(), 1);
338+
EXPECT_EQ(data_point1.negative().bucket_counts(0), 1);
339+
340+
EXPECT_EQ(data_point1.attributes_size(), 1);
341+
EXPECT_EQ(data_point1.attributes(0).key(), "k1");
342+
EXPECT_EQ(data_point1.attributes(0).value().string_value(), "v1");
343+
EXPECT_EQ(data_point1.start_time_unix_nano(), data.start_ts.time_since_epoch().count());
344+
EXPECT_EQ(data_point1.time_unix_nano(), data.end_ts.time_since_epoch().count());
345+
}
346+
347+
// Point 2
348+
{
349+
const auto &data_point2 = exponentialHistogram.data_points(1);
350+
EXPECT_EQ(data_point2.count(), 4);
351+
EXPECT_EQ(data_point2.sum(), 6.2);
352+
EXPECT_EQ(data_point2.min(), 0.0);
353+
EXPECT_EQ(data_point2.max(), 0.0);
354+
EXPECT_EQ(data_point2.zero_count(), 2);
355+
EXPECT_EQ(data_point2.scale(), 3);
356+
EXPECT_EQ(data_point2.positive().offset(), 3);
357+
EXPECT_EQ(data_point2.positive().bucket_counts_size(), 1);
358+
EXPECT_EQ(data_point2.positive().bucket_counts(0), 1);
359+
EXPECT_EQ(data_point2.negative().offset(), -4);
360+
EXPECT_EQ(data_point2.negative().bucket_counts_size(), 3);
361+
EXPECT_EQ(data_point2.negative().bucket_counts(0), 2);
362+
EXPECT_EQ(data_point2.negative().bucket_counts(1), 0);
363+
EXPECT_EQ(data_point2.negative().bucket_counts(2), 1);
364+
EXPECT_EQ(data_point2.attributes(0).key(), "k2");
365+
EXPECT_EQ(data_point2.attributes(0).value().string_value(), "v2");
366+
EXPECT_EQ(data_point2.start_time_unix_nano(), data.start_ts.time_since_epoch().count());
367+
EXPECT_EQ(data_point2.time_unix_nano(), data.end_ts.time_since_epoch().count());
368+
}
369+
370+
EXPECT_EQ(1, 1);
371+
}
372+
264373
TEST(OtlpMetricSerializationTest, ObservableGauge)
265374
{
266375
metrics_sdk::MetricData data = CreateObservableGaugeAggregationData();

0 commit comments

Comments
 (0)