Skip to content

Commit 4408d33

Browse files
committed
Update the osstream_metric_test with ExponentialHistogram
1 parent 4376128 commit 4408d33

File tree

3 files changed

+112
-3
lines changed

3 files changed

+112
-3
lines changed

exporters/ostream/src/metric_exporter.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ void OStreamMetricExporter::printPointData(const opentelemetry::sdk::metrics::Po
261261
sout_ << "\n max: " << histogram_point_data.max_;
262262
}
263263
sout_ << "\n scale: " << histogram_point_data.scale_;
264-
sout_ << "\n positive buckets: ";
264+
sout_ << "\n positive buckets:";
265265
if (!histogram_point_data.positive_buckets_.Empty())
266266
{
267267
for (auto i = histogram_point_data.positive_buckets_.StartIndex();
@@ -270,7 +270,7 @@ void OStreamMetricExporter::printPointData(const opentelemetry::sdk::metrics::Po
270270
sout_ << "\n\t" << i << ": " << histogram_point_data.positive_buckets_.Get(i);
271271
}
272272
}
273-
sout_ << "\n negative buckets: ";
273+
sout_ << "\n negative buckets:";
274274
if (!histogram_point_data.negative_buckets_.Empty())
275275
{
276276
for (auto i = histogram_point_data.negative_buckets_.StartIndex();

exporters/ostream/test/ostream_metric_test.cc

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,115 @@ TEST(OStreamMetricsExporter, ExportHistogramPointData)
179179
ASSERT_EQ(stdoutOutput.str(), expected_output);
180180
}
181181

182+
TEST(OStreamMetricsExporter, ExportBase2ExponentialHistogramPointData)
183+
{
184+
auto exporter =
185+
std::unique_ptr<metric_sdk::PushMetricExporter>(new exportermetrics::OStreamMetricExporter);
186+
187+
metric_sdk::Base2ExponentialHistogramPointData histogram_point_data1;
188+
histogram_point_data1.count_ = 3;
189+
histogram_point_data1.sum_ = 6.5;
190+
histogram_point_data1.min_ = 0.0;
191+
histogram_point_data1.max_ = 3.5;
192+
histogram_point_data1.scale_ = 3;
193+
histogram_point_data1.record_min_max_ = true;
194+
histogram_point_data1.zero_count_ = 1;
195+
histogram_point_data1.positive_buckets_ =
196+
opentelemetry::sdk::metrics::AdaptingCircularBufferCounter(10);
197+
histogram_point_data1.negative_buckets_ =
198+
opentelemetry::sdk::metrics::AdaptingCircularBufferCounter(10);
199+
histogram_point_data1.positive_buckets_.Increment(1, 1);
200+
histogram_point_data1.negative_buckets_.Increment(-2, 1);
201+
202+
metric_sdk::Base2ExponentialHistogramPointData histogram_point_data2;
203+
histogram_point_data2.count_ = 4;
204+
histogram_point_data2.sum_ = 6.2;
205+
histogram_point_data2.min_ = -0.03;
206+
histogram_point_data2.max_ = 3.5;
207+
histogram_point_data2.scale_ = 3;
208+
histogram_point_data2.record_min_max_ = false;
209+
histogram_point_data2.zero_count_ = 2;
210+
histogram_point_data2.positive_buckets_ =
211+
opentelemetry::sdk::metrics::AdaptingCircularBufferCounter(10);
212+
histogram_point_data2.negative_buckets_ =
213+
opentelemetry::sdk::metrics::AdaptingCircularBufferCounter(10);
214+
histogram_point_data2.positive_buckets_.Increment(3, 1);
215+
histogram_point_data2.negative_buckets_.Increment(-2, 1);
216+
histogram_point_data2.negative_buckets_.Increment(-4, 2);
217+
218+
metric_sdk::ResourceMetrics data;
219+
auto resource = opentelemetry::sdk::resource::Resource::Create(
220+
opentelemetry::sdk::resource::ResourceAttributes{});
221+
data.resource_ = &resource;
222+
auto scope = opentelemetry::sdk::instrumentationscope::InstrumentationScope::Create(
223+
"library_name", "1.2.0");
224+
metric_sdk::MetricData metric_data{
225+
metric_sdk::InstrumentDescriptor{"library_name", "description", "unit",
226+
metric_sdk::InstrumentType::kCounter,
227+
metric_sdk::InstrumentValueType::kDouble},
228+
metric_sdk::AggregationTemporality::kDelta, opentelemetry::common::SystemTimestamp{},
229+
opentelemetry::common::SystemTimestamp{},
230+
std::vector<metric_sdk::PointDataAttributes>{
231+
{metric_sdk::PointAttributes{{"a1", "b1"}, {"a2", "b2"}}, histogram_point_data1},
232+
{metric_sdk::PointAttributes{{"a1", "b1"}}, histogram_point_data2}}};
233+
data.scope_metric_data_ = std::vector<metric_sdk::ScopeMetrics>{
234+
{scope.get(), std::vector<metric_sdk::MetricData>{metric_data}}};
235+
236+
std::stringstream stdoutOutput;
237+
std::streambuf *sbuf = std::cout.rdbuf();
238+
std::cout.rdbuf(stdoutOutput.rdbuf());
239+
240+
auto result = exporter->Export(data);
241+
EXPECT_EQ(result, opentelemetry::sdk::common::ExportResult::kSuccess);
242+
std::cout.rdbuf(sbuf);
243+
244+
std::string expected_output =
245+
"{"
246+
"\n scope name\t: library_name"
247+
"\n schema url\t: "
248+
"\n version\t: 1.2.0"
249+
"\n start time\t: Thu Jan 1 00:00:00 1970"
250+
"\n end time\t: Thu Jan 1 00:00:00 1970"
251+
"\n instrument name\t: library_name"
252+
"\n description\t: description"
253+
"\n unit\t\t: unit"
254+
"\n type: Base2ExponentialHistogramPointData"
255+
"\n count: 3"
256+
"\n sum: 6.5"
257+
"\n zero_count: 1"
258+
"\n min: 0"
259+
"\n max: 3.5"
260+
"\n scale: 3"
261+
"\n positive buckets:"
262+
"\n\t1: 1"
263+
"\n negative buckets:"
264+
"\n\t-2: 1"
265+
"\n attributes\t\t: "
266+
"\n\ta1: b1"
267+
"\n\ta2: b2"
268+
"\n type: Base2ExponentialHistogramPointData"
269+
"\n count: 4"
270+
"\n sum: 6.2"
271+
"\n zero_count: 2"
272+
"\n scale: 3"
273+
"\n positive buckets:"
274+
"\n\t3: 1"
275+
"\n negative buckets:"
276+
"\n\t-4: 2"
277+
"\n\t-3: 0"
278+
"\n\t-2: 1"
279+
"\n attributes\t\t: "
280+
"\n\ta1: b1"
281+
"\n resources\t:"
282+
"\n\tservice.name: unknown_service"
283+
"\n\ttelemetry.sdk.language: cpp"
284+
"\n\ttelemetry.sdk.name: opentelemetry"
285+
"\n\ttelemetry.sdk.version: ";
286+
expected_output += OPENTELEMETRY_SDK_VERSION;
287+
expected_output += "\n}\n";
288+
ASSERT_EQ(stdoutOutput.str(), expected_output);
289+
}
290+
182291
TEST(OStreamMetricsExporter, ExportLastValuePointData)
183292
{
184293
auto exporter =

exporters/otlp/test/otlp_metrics_serialization_test.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ static metrics_sdk::MetricData CreateExponentialHistogramAggregationData(
141141
s_data_1.min_ = 0.0;
142142
s_data_1.max_ = 3.5;
143143
s_data_1.scale_ = 3;
144-
s_data_2.record_min_max_ = true;
144+
s_data_1.record_min_max_ = true;
145145
s_data_1.zero_count_ = 1;
146146
s_data_1.positive_buckets_ = opentelemetry::sdk::metrics::AdaptingCircularBufferCounter(10);
147147
s_data_1.negative_buckets_ = opentelemetry::sdk::metrics::AdaptingCircularBufferCounter(10);

0 commit comments

Comments
 (0)