From 8d1bf2c75405fb15b70f5b004f39720dec7c21be Mon Sep 17 00:00:00 2001 From: Oblivion Date: Sat, 2 Apr 2022 18:54:31 +0000 Subject: [PATCH 1/7] ostream metrics example --- examples/metrics_simple/BUILD | 15 ++++ examples/metrics_simple/metrics_ostream.cc | 68 +++++++++++++++++++ .../exporters/ostream/metric_exporter.h | 8 +-- exporters/ostream/src/metric_exporter.cc | 60 +++++++--------- 4 files changed, 111 insertions(+), 40 deletions(-) create mode 100644 examples/metrics_simple/metrics_ostream.cc diff --git a/examples/metrics_simple/BUILD b/examples/metrics_simple/BUILD index b845a2f890..0fd2effa0b 100644 --- a/examples/metrics_simple/BUILD +++ b/examples/metrics_simple/BUILD @@ -11,3 +11,18 @@ cc_binary( "//sdk/src/_metrics:metrics_deprecated", ], ) + +# TODO - Uncomment once MetricData interface is finalised +# cc_binary( +# name = "metrics_ostream_example", +# srcs = [ +# "metrics_ostream.cc", +# ], +# linkopts = ["-pthread"], +# tags = ["ostream"], +# deps = [ +# "//api", +# "//exporters/ostream:ostream_metric_exporter", +# "//sdk/src/metrics", +# ], +# ) diff --git a/examples/metrics_simple/metrics_ostream.cc b/examples/metrics_simple/metrics_ostream.cc new file mode 100644 index 0000000000..23bd94237c --- /dev/null +++ b/examples/metrics_simple/metrics_ostream.cc @@ -0,0 +1,68 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#include +#ifndef ENABLE_METRICS_PREVIEW +# include +# include +# include "opentelemetry/exporters/ostream/metric_exporter.h" +# include "opentelemetry/metrics/provider.h" +# include "opentelemetry/sdk/metrics/aggregation/default_aggregation.h" +# include "opentelemetry/sdk/metrics/aggregation/histogram_aggregation.h" +# include "opentelemetry/sdk/metrics/export/periodic_exporting_metric_reader.h" +# include "opentelemetry/sdk/metrics/meter.h" +# include "opentelemetry/sdk/metrics/meter_provider.h" + +# include + +namespace metric_sdk = opentelemetry::sdk::metrics; +namespace nostd = opentelemetry::nostd; +namespace common = opentelemetry::common; +namespace exportermetrics = opentelemetry::exporter::metrics; +namespace metrics_api = opentelemetry::metrics; + +void sync_sum() +{ + std::unique_ptr exporter{new exportermetrics::OStreamMetricExporter}; + std::vector> exporters; + + std::string name{"ostream_metric_example"}; + std::string version{"1.2.0"}; + std::string schema{"ostream_metric_example"}; + + // Initialize and set the global MeterProvider + metric_sdk::PeriodicExportingMetricReaderOptions options; + options.export_interval_millis = std::chrono::milliseconds(1000); + options.export_timeout_millis = std::chrono::milliseconds(500); + std::unique_ptr reader{ + new metric_sdk::PeriodicExportingMetricReader(std::move(exporter), options)}; + auto provider = std::shared_ptr( + new metric_sdk::MeterProvider(std::move(exporters))); + auto p = std::static_pointer_cast(provider); + p->AddMetricReader(std::move(reader)); + std::unique_ptr instrument_selector{ + new metric_sdk::InstrumentSelector(metric_sdk::InstrumentType::kCounter, name)}; + std::unique_ptr meter_selector{ + new metric_sdk::MeterSelector(name, version, schema)}; + std::unique_ptr view{ + new metric_sdk::View{name, "description", metric_sdk::AggregationType::kSum}}; + p->AddView(std::move(instrument_selector), std::move(meter_selector), std::move(view)); + metrics_api::Provider::SetMeterProvider(provider); + + // Get the Meter from the MeterProvider + nostd::shared_ptr meter = provider->GetMeter(name, "1.2.0"); + auto double_counter = meter->CreateDoubleCounter(name); + double_counter->Add(28.5); + std::this_thread::sleep_for(std::chrono::milliseconds(500)); + double_counter->Add(3.14); + std::this_thread::sleep_for(std::chrono::milliseconds(500)); + double_counter->Add(23.5); + std::this_thread::sleep_for(std::chrono::milliseconds(5000)); + p->ForceFlush(); +} + +int main() +{ + sync_sum(); +} +#endif diff --git a/exporters/ostream/include/opentelemetry/exporters/ostream/metric_exporter.h b/exporters/ostream/include/opentelemetry/exporters/ostream/metric_exporter.h index 5f27db13d2..023ec46e7e 100644 --- a/exporters/ostream/include/opentelemetry/exporters/ostream/metric_exporter.h +++ b/exporters/ostream/include/opentelemetry/exporters/ostream/metric_exporter.h @@ -35,11 +35,9 @@ class OStreamMetricExporter final : public opentelemetry::sdk::metrics::MetricEx /** * Export - * @param records a span of unique pointers to metrics data + * @param data metrics data */ - sdk::common::ExportResult Export( - const nostd::span> &records) noexcept - override; + sdk::common::ExportResult Export(const sdk::metrics::MetricData &data) noexcept override; /** * Force flush the exporter. @@ -60,7 +58,7 @@ class OStreamMetricExporter final : public opentelemetry::sdk::metrics::MetricEx bool is_shutdown_ = false; mutable opentelemetry::common::SpinLockMutex lock_; bool isShutdown() const noexcept; - void printPointData(opentelemetry::sdk::metrics::PointType &point_data); + void printPointData(const opentelemetry::sdk::metrics::PointType &point_data); }; } // namespace metrics } // namespace exporter diff --git a/exporters/ostream/src/metric_exporter.cc b/exporters/ostream/src/metric_exporter.cc index f8d26a7fa5..cb867126de 100644 --- a/exporters/ostream/src/metric_exporter.cc +++ b/exporters/ostream/src/metric_exporter.cc @@ -14,54 +14,46 @@ namespace exporter namespace metrics { +template +inline void printVec(std::ostream &os, Container &vec) +{ + using T = typename std::decay::type; + os << '['; + if (vec.size() > 1) + { + std::copy(vec.begin(), vec.end(), std::ostream_iterator(os, ", ")); + } + os << ']'; +} + OStreamMetricExporter::OStreamMetricExporter(std::ostream &sout) noexcept : sout_(sout) {} sdk::common::ExportResult OStreamMetricExporter::Export( - const nostd::span> &records) noexcept + const sdk::metrics::MetricData &data) noexcept { if (isShutdown()) { OTEL_INTERNAL_LOG_ERROR("[OStream Metric] Exporting " - << records.size() << " records(s) failed, exporter is shutdown"); + << data.point_data_attr_.size() + << " records(s) failed, exporter is shutdown"); return sdk::common::ExportResult::kFailure; } - for (auto &record : records) + for (auto &record : data.point_data_attr_) { - sout_ << "{" - << "\n name : " << record->instrumentation_library_->GetName() - << "\n version : " << record->instrumentation_library_->GetVersion(); - printPointData(record->point_data_); + sout_ << "{"; + printPointData(record.point_data); sout_ << "\n}\n"; } return sdk::common::ExportResult::kSuccess; } -template -inline void printVec(std::ostream &os, std::vector &vec) -{ - os << '['; - if (vec.size() > 1) - { - std::copy(vec.begin(), vec.end() - 1, std::ostream_iterator(os, ", ")); - } - if (!vec.empty()) - { - os << vec.back(); - } - os << ']'; -} - -void OStreamMetricExporter::printPointData(opentelemetry::sdk::metrics::PointType &point_data) +void OStreamMetricExporter::printPointData(const opentelemetry::sdk::metrics::PointType &point_data) { if (nostd::holds_alternative(point_data)) { auto sum_point_data = nostd::get(point_data); sout_ << "\n type : SumPointData"; - sout_ << "\n start timestamp : " - << std::to_string(sum_point_data.start_epoch_nanos_.time_since_epoch().count()); - sout_ << "\n end timestamp : " - << std::to_string(sum_point_data.end_epoch_nanos_.time_since_epoch().count()); sout_ << "\n value : "; if (nostd::holds_alternative(sum_point_data.value_)) { @@ -76,8 +68,6 @@ void OStreamMetricExporter::printPointData(opentelemetry::sdk::metrics::PointTyp { auto histogram_point_data = nostd::get(point_data); sout_ << "\n type : HistogramPointData"; - sout_ << "\n timestamp : " - << std::to_string(histogram_point_data.epoch_nanos_.time_since_epoch().count()); sout_ << "\n count : " << histogram_point_data.count_; sout_ << "\n sum : "; if (nostd::holds_alternative(histogram_point_data.sum_)) @@ -90,14 +80,14 @@ void OStreamMetricExporter::printPointData(opentelemetry::sdk::metrics::PointTyp } sout_ << "\n buckets : "; - if (nostd::holds_alternative>(histogram_point_data.boundaries_)) + if (nostd::holds_alternative>(histogram_point_data.boundaries_)) { - auto &double_boundaries = nostd::get>(histogram_point_data.boundaries_); + auto &double_boundaries = nostd::get>(histogram_point_data.boundaries_); printVec(sout_, double_boundaries); } - else if (nostd::holds_alternative>(histogram_point_data.boundaries_)) + else if (nostd::holds_alternative>(histogram_point_data.boundaries_)) { - auto &long_boundaries = nostd::get>(histogram_point_data.boundaries_); + auto &long_boundaries = nostd::get>(histogram_point_data.boundaries_); printVec(sout_, long_boundaries); } @@ -109,8 +99,8 @@ void OStreamMetricExporter::printPointData(opentelemetry::sdk::metrics::PointTyp auto last_point_data = nostd::get(point_data); sout_ << "\n type : LastValuePointData"; sout_ << "\n timestamp : " - << std::to_string(last_point_data.epoch_nanos_.time_since_epoch().count()) - << std::boolalpha << "\n valid : " << last_point_data.is_lastvalue_valid_; + << std::to_string(last_point_data.sample_ts_.time_since_epoch().count()) << std::boolalpha + << "\n valid : " << last_point_data.is_lastvalue_valid_; sout_ << "\n value : "; if (nostd::holds_alternative(last_point_data.value_)) { From 55aa2d94533bdb590c361f1afb8089c641da7bfa Mon Sep 17 00:00:00 2001 From: Oblivion Date: Fri, 8 Apr 2022 19:43:31 +0000 Subject: [PATCH 2/7] use ResourceMetrics --- examples/metrics_simple/BUILD | 27 +- examples/metrics_simple/metrics_ostream.cc | 2 +- exporters/ostream/BUILD | 59 ++-- .../exporters/ostream/metric_exporter.h | 4 +- exporters/ostream/src/metric_exporter.cc | 53 +++- exporters/ostream/test/ostream_metric_test.cc | 276 ++++++++++-------- .../sdk/metrics/metric_exporter.h | 1 + 7 files changed, 250 insertions(+), 172 deletions(-) diff --git a/examples/metrics_simple/BUILD b/examples/metrics_simple/BUILD index 0fd2effa0b..05dce00b39 100644 --- a/examples/metrics_simple/BUILD +++ b/examples/metrics_simple/BUILD @@ -12,17 +12,16 @@ cc_binary( ], ) -# TODO - Uncomment once MetricData interface is finalised -# cc_binary( -# name = "metrics_ostream_example", -# srcs = [ -# "metrics_ostream.cc", -# ], -# linkopts = ["-pthread"], -# tags = ["ostream"], -# deps = [ -# "//api", -# "//exporters/ostream:ostream_metric_exporter", -# "//sdk/src/metrics", -# ], -# ) +cc_binary( + name = "metrics_ostream_example", + srcs = [ + "metrics_ostream.cc", + ], + linkopts = ["-pthread"], + tags = ["ostream"], + deps = [ + "//api", + "//exporters/ostream:ostream_metric_exporter", + "//sdk/src/metrics", + ], +) diff --git a/examples/metrics_simple/metrics_ostream.cc b/examples/metrics_simple/metrics_ostream.cc index 23bd94237c..7eedc81266 100644 --- a/examples/metrics_simple/metrics_ostream.cc +++ b/examples/metrics_simple/metrics_ostream.cc @@ -28,7 +28,7 @@ void sync_sum() std::string name{"ostream_metric_example"}; std::string version{"1.2.0"}; - std::string schema{"ostream_metric_example"}; + std::string schema{"https://opentelemetry.io/schemas/1.2.0"}; // Initialize and set the global MeterProvider metric_sdk::PeriodicExportingMetricReaderOptions options; diff --git a/exporters/ostream/BUILD b/exporters/ostream/BUILD index f74d896344..cca74d6693 100644 --- a/exporters/ostream/BUILD +++ b/exporters/ostream/BUILD @@ -43,37 +43,36 @@ cc_library( ], ) -# TODO - Uncomment once MetricData interface is finalised -#cc_library( -# name = "ostream_metric_exporter", -# srcs = [ -# "src/metric_exporter.cc", -# ], -# hdrs = [ -# "include/opentelemetry/exporters/ostream/metric_exporter.h", -# ], -# strip_include_prefix = "include", -# tags = [ -# "metrics", -# "ostream", -# ], -# deps = [ -# "//sdk/src/metrics", -# ], -#) +cc_library( + name = "ostream_metric_exporter", + srcs = [ + "src/metric_exporter.cc", + ], + hdrs = [ + "include/opentelemetry/exporters/ostream/metric_exporter.h", + ], + strip_include_prefix = "include", + tags = [ + "metrics", + "ostream", + ], + deps = [ + "//sdk/src/metrics", + ], +) -#cc_test( -# name = "ostream_metric_test", -# srcs = ["test/ostream_metric_test.cc"], -# tags = [ -# "ostream", -# "test", -# ], -# deps = [ -# ":ostream_metric_exporter", -# "@com_google_googletest//:gtest_main", -# ], -#) +cc_test( + name = "ostream_metric_test", + srcs = ["test/ostream_metric_test.cc"], + tags = [ + "ostream", + "test", + ], + deps = [ + ":ostream_metric_exporter", + "@com_google_googletest//:gtest_main", + ], +) cc_test( name = "ostream_metrics_test_deprecated", diff --git a/exporters/ostream/include/opentelemetry/exporters/ostream/metric_exporter.h b/exporters/ostream/include/opentelemetry/exporters/ostream/metric_exporter.h index 023ec46e7e..465ae02bb6 100644 --- a/exporters/ostream/include/opentelemetry/exporters/ostream/metric_exporter.h +++ b/exporters/ostream/include/opentelemetry/exporters/ostream/metric_exporter.h @@ -37,7 +37,7 @@ class OStreamMetricExporter final : public opentelemetry::sdk::metrics::MetricEx * Export * @param data metrics data */ - sdk::common::ExportResult Export(const sdk::metrics::MetricData &data) noexcept override; + sdk::common::ExportResult Export(const sdk::metrics::ResourceMetrics &data) noexcept override; /** * Force flush the exporter. @@ -58,6 +58,8 @@ class OStreamMetricExporter final : public opentelemetry::sdk::metrics::MetricEx bool is_shutdown_ = false; mutable opentelemetry::common::SpinLockMutex lock_; bool isShutdown() const noexcept; + void printInstrumentationInfoMetricData( + const sdk::metrics::InstrumentationInfoMetrics &info_metrics); void printPointData(const opentelemetry::sdk::metrics::PointType &point_data); }; } // namespace metrics diff --git a/exporters/ostream/src/metric_exporter.cc b/exporters/ostream/src/metric_exporter.cc index cb867126de..2734904ce2 100644 --- a/exporters/ostream/src/metric_exporter.cc +++ b/exporters/ostream/src/metric_exporter.cc @@ -1,13 +1,28 @@ // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 +#include #ifndef ENABLE_METRICS_PREVIEW -# include "opentelemetry/exporters/ostream/metric_exporter.h" # include +# include "opentelemetry/exporters/ostream/metric_exporter.h" # include "opentelemetry/sdk/metrics/aggregation/default_aggregation.h" # include "opentelemetry/sdk/metrics/aggregation/histogram_aggregation.h" # include "opentelemetry/sdk_config.h" +namespace +{ +std::string timeToString(opentelemetry::common::SystemTimestamp time_stamp) +{ + auto duration = time_stamp.time_since_epoch().count(); + + std::chrono::nanoseconds dur(duration); + std::chrono::time_point dt(dur); + std::time_t epoch_time = std::chrono::system_clock::to_time_t(dt); + + return std::ctime(&epoch_time); +} +} // namespace + OPENTELEMETRY_BEGIN_NAMESPACE namespace exporter { @@ -29,32 +44,52 @@ inline void printVec(std::ostream &os, Container &vec) OStreamMetricExporter::OStreamMetricExporter(std::ostream &sout) noexcept : sout_(sout) {} sdk::common::ExportResult OStreamMetricExporter::Export( - const sdk::metrics::MetricData &data) noexcept + const sdk::metrics::ResourceMetrics &data) noexcept { if (isShutdown()) { OTEL_INTERNAL_LOG_ERROR("[OStream Metric] Exporting " - << data.point_data_attr_.size() + << data.instrumentation_info_metric_data_.size() << " records(s) failed, exporter is shutdown"); return sdk::common::ExportResult::kFailure; } - for (auto &record : data.point_data_attr_) + for (auto &record : data.instrumentation_info_metric_data_) { - sout_ << "{"; - printPointData(record.point_data); - sout_ << "\n}\n"; + printInstrumentationInfoMetricData(record); } return sdk::common::ExportResult::kSuccess; } +void OStreamMetricExporter::printInstrumentationInfoMetricData( + const sdk::metrics::InstrumentationInfoMetrics &info_metric) +{ + sout_ << "{"; + sout_ << "\n name\t\t: " << info_metric.instrumentation_library_->GetName() + << "\n schema url\t: " << info_metric.instrumentation_library_->GetSchemaURL() + << "\n version\t: " << info_metric.instrumentation_library_->GetVersion(); + for (const auto &record : info_metric.metric_data_) + { + sout_ << "\n start time\t: " << timeToString(record.start_ts) + << " end time\t: " << timeToString(record.end_ts) + << " description\t: " << record.instrument_descriptor.description_ + << "\n unit\t\t: " << record.instrument_descriptor.unit_; + + for (const auto &pd : record.point_data_attr_) + { + printPointData(pd.point_data); + } + } + sout_ << "\n}\n"; +} + void OStreamMetricExporter::printPointData(const opentelemetry::sdk::metrics::PointType &point_data) { if (nostd::holds_alternative(point_data)) { auto sum_point_data = nostd::get(point_data); - sout_ << "\n type : SumPointData"; - sout_ << "\n value : "; + sout_ << "\n type\t\t: SumPointData"; + sout_ << "\n value\t\t: "; if (nostd::holds_alternative(sum_point_data.value_)) { sout_ << nostd::get(sum_point_data.value_); diff --git a/exporters/ostream/test/ostream_metric_test.cc b/exporters/ostream/test/ostream_metric_test.cc index 9e98dd4da4..51358b4315 100644 --- a/exporters/ostream/test/ostream_metric_test.cc +++ b/exporters/ostream/test/ostream_metric_test.cc @@ -1,14 +1,19 @@ // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 - -#include #ifndef ENABLE_METRICS_PREVIEW +# include +# include +# include +# include "opentelemetry/sdk/metrics/instruments.h" +# include "opentelemetry/sdk/resource/resource_detector.h" + +# include # include "opentelemetry/exporters/ostream/metric_exporter.h" # include "opentelemetry/sdk/metrics/aggregation/default_aggregation.h" # include "opentelemetry/sdk/metrics/aggregation/histogram_aggregation.h" - -# include +# include "opentelemetry/sdk/metrics/data/metric_data.h" +# include "opentelemetry/sdk/resource/resource.h" namespace metric_sdk = opentelemetry::sdk::metrics; namespace nostd = opentelemetry::nostd; @@ -19,7 +24,7 @@ TEST(OStreamMetricsExporter, Shutdown) auto exporter = std::unique_ptr(new exportermetrics::OStreamMetricExporter); ASSERT_TRUE(exporter->Shutdown()); - auto result = exporter->Export(nostd::span>{}); + auto result = exporter->Export(metric_sdk::ResourceMetrics{}); EXPECT_EQ(result, opentelemetry::sdk::common::ExportResult::kFailure); } @@ -28,48 +33,51 @@ TEST(OStreamMetricsExporter, ExportSumPointData) auto exporter = std::unique_ptr(new exportermetrics::OStreamMetricExporter); - std::unique_ptr record(new metric_sdk::MetricData); + metric_sdk::SumPointData sum_point_data{}; + sum_point_data.value_ = 10.0; + metric_sdk::SumPointData sum_point_data2{}; + sum_point_data2.value_ = 20.0; + metric_sdk::ResourceMetrics data; + auto resource = opentelemetry::sdk::resource::Resource::Create( + opentelemetry::sdk::resource::ResourceAttributes{}); + data.resource_ = &resource; auto instrumentation_library = opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary::Create("library_name", "1.2.0"); - record->instrumentation_library_ = instrumentation_library.get(); - record->point_data_ = metric_sdk::SumPointData{ - opentelemetry::common::SystemTimestamp{}, opentelemetry::common::SystemTimestamp{}, 10.0, - metric_sdk::AggregationTemporality::kUnspecified, false}; - auto record2 = std::unique_ptr(new metric_sdk::MetricData(*record)); - record2->point_data_ = metric_sdk::SumPointData{ - opentelemetry::common::SystemTimestamp{}, opentelemetry::common::SystemTimestamp{}, 20l, - metric_sdk::AggregationTemporality::kUnspecified, false}; - std::vector> records; - records.push_back(std::move(record)); - records.push_back(std::move(record2)); + metric_sdk::MetricData metric_data{ + metric_sdk::InstrumentDescriptor{"library_name", "description", "unit", + metric_sdk::InstrumentType::kCounter, + metric_sdk::InstrumentValueType::kDouble}, + opentelemetry::common::SystemTimestamp{}, opentelemetry::common::SystemTimestamp{}, + std::vector{ + {metric_sdk::PointAttributes{}, sum_point_data}, + {metric_sdk::PointAttributes{}, sum_point_data2}}}; + data.instrumentation_info_metric_data_ = std::vector{ + {instrumentation_library.get(), std::vector{metric_data}}}; std::stringstream stdoutOutput; std::streambuf *sbuf = std::cout.rdbuf(); std::cout.rdbuf(stdoutOutput.rdbuf()); - auto result = exporter->Export(records); + auto result = exporter->Export(data); EXPECT_EQ(result, opentelemetry::sdk::common::ExportResult::kSuccess); std::cout.rdbuf(sbuf); - std::string expectedOutput = - "{\n" - " name : library_name\n" - " version : 1.2.0\n" - " type : SumPointData\n" - " start timestamp : 0\n" - " end timestamp : 0\n" - " value : 10\n" - "}\n" - "{\n" - " name : library_name\n" - " version : 1.2.0\n" - " type : SumPointData\n" - " start timestamp : 0\n" - " end timestamp : 0\n" - " value : 20\n" - "}\n"; - ASSERT_EQ(stdoutOutput.str(), expectedOutput); + std::string expected_output = + "{" + "\n name\t\t: library_name" + "\n schema url\t: " + "\n version\t: 1.2.0" + "\n start time\t: Thu Jan 1 00:00:00 1970" + "\n end time\t: Thu Jan 1 00:00:00 1970" + "\n description\t: description" + "\n unit\t\t: unit" + "\n type\t\t: SumPointData" + "\n value\t\t: 10" + "\n type\t\t: SumPointData" + "\n value\t\t: 20" + "\n}\n"; + ASSERT_EQ(stdoutOutput.str(), expected_output); } TEST(OStreamMetricsExporter, ExportHistogramPointData) @@ -77,56 +85,57 @@ TEST(OStreamMetricsExporter, ExportHistogramPointData) auto exporter = std::unique_ptr(new exportermetrics::OStreamMetricExporter); - std::unique_ptr record(new metric_sdk::MetricData); + metric_sdk::HistogramPointData histogram_point_data{ + std::list{10.1, 20.2, 30.2}, 900.5, {200, 300, 400, 500}, 3}; + metric_sdk::HistogramPointData histogram_point_data2{ + std::list{10, 20, 30}, 900l, {200, 300, 400, 500}, 3}; + metric_sdk::ResourceMetrics data; + auto resource = opentelemetry::sdk::resource::Resource::Create( + opentelemetry::sdk::resource::ResourceAttributes{}); + data.resource_ = &resource; auto instrumentation_library = opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary::Create("library_name", "1.2.0"); - record->instrumentation_library_ = instrumentation_library.get(); - record->point_data_ = metric_sdk::HistogramPointData{opentelemetry::common::SystemTimestamp{}, - std::vector{10.1, 20.2, 30.2}, - 900.5, - {200, 300, 400, 500}, - 3}; - auto record2 = std::unique_ptr(new metric_sdk::MetricData(*record)); - record2->point_data_ = metric_sdk::HistogramPointData{opentelemetry::common::SystemTimestamp{}, - std::vector{10, 20, 30}, - 900l, - {200, 300, 400, 500}, - 3}; - std::vector> records; - records.push_back(std::move(record)); - records.push_back(std::move(record2)); + metric_sdk::MetricData metric_data{ + metric_sdk::InstrumentDescriptor{"library_name", "description", "unit", + metric_sdk::InstrumentType::kCounter, + metric_sdk::InstrumentValueType::kDouble}, + opentelemetry::common::SystemTimestamp{}, opentelemetry::common::SystemTimestamp{}, + std::vector{ + {metric_sdk::PointAttributes{}, histogram_point_data}, + {metric_sdk::PointAttributes{}, histogram_point_data2}}}; + data.instrumentation_info_metric_data_ = std::vector{ + {instrumentation_library.get(), std::vector{metric_data}}}; std::stringstream stdoutOutput; std::streambuf *sbuf = std::cout.rdbuf(); std::cout.rdbuf(stdoutOutput.rdbuf()); - auto result = exporter->Export(records); + auto result = exporter->Export(data); EXPECT_EQ(result, opentelemetry::sdk::common::ExportResult::kSuccess); std::cout.rdbuf(sbuf); - std::string expectedOutput = - "{\n" - " name : library_name\n" - " version : 1.2.0\n" - " type : HistogramPointData\n" - " timestamp : 0\n" - " count : 3\n" - " sum : 900.5\n" - " buckets : [10.1, 20.2, 30.2]\n" - " counts : [200, 300, 400, 500]\n" - "}\n" - "{\n" - " name : library_name\n" - " version : 1.2.0\n" - " type : HistogramPointData\n" - " timestamp : 0\n" - " count : 3\n" - " sum : 900\n" - " buckets : [10, 20, 30]\n" - " counts : [200, 300, 400, 500]\n" - "}\n"; - ASSERT_EQ(stdoutOutput.str(), expectedOutput); + std::string expected_output = + "{" + "\n name\t\t: library_name" + "\n schema url\t: " + "\n version\t: 1.2.0" + "\n start time\t: Thu Jan 1 00:00:00 1970" + "\n end time\t: Thu Jan 1 00:00:00 1970" + "\n description\t: description" + "\n unit\t\t: unit" + "\n type : HistogramPointData" + "\n count : 3" + "\n sum : 900.5" + "\n buckets : [10.1, 20.2, 30.2, ]" + "\n counts : [200, 300, 400, 500, ]" + "\n type : HistogramPointData" + "\n count : 3" + "\n sum : 900" + "\n buckets : [10, 20, 30, ]" + "\n counts : [200, 300, 400, 500, ]" + "\n}\n"; + ASSERT_EQ(stdoutOutput.str(), expected_output); } TEST(OStreamMetricsExporter, ExportLastValuePointData) @@ -134,46 +143,59 @@ TEST(OStreamMetricsExporter, ExportLastValuePointData) auto exporter = std::unique_ptr(new exportermetrics::OStreamMetricExporter); - std::unique_ptr record(new metric_sdk::MetricData); + metric_sdk::HistogramPointData histogram_point_data{ + std::list{10.1, 20.2, 30.2}, 900.5, {200, 300, 400, 500}, 3}; + metric_sdk::HistogramPointData histogram_point_data2{ + std::list{10, 20, 30}, 900l, {200, 300, 400, 500}, 3}; + metric_sdk::ResourceMetrics data; + auto resource = opentelemetry::sdk::resource::Resource::Create( + opentelemetry::sdk::resource::ResourceAttributes{}); + data.resource_ = &resource; auto instrumentation_library = opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary::Create("library_name", "1.2.0"); - record->instrumentation_library_ = instrumentation_library.get(); - record->point_data_ = - metric_sdk::LastValuePointData{opentelemetry::common::SystemTimestamp{}, true, 10.0}; - auto record2 = std::unique_ptr(new metric_sdk::MetricData(*record)); - record2->point_data_ = - metric_sdk::LastValuePointData{opentelemetry::common::SystemTimestamp{}, true, 20l}; - std::vector> records; - records.push_back(std::move(record)); - records.push_back(std::move(record2)); + metric_sdk::LastValuePointData last_value_point_data{10.0, true, + opentelemetry::common::SystemTimestamp{}}; + metric_sdk::LastValuePointData last_value_point_data2{20l, true, + opentelemetry::common::SystemTimestamp{}}; + metric_sdk::MetricData metric_data{ + metric_sdk::InstrumentDescriptor{"library_name", "description", "unit", + metric_sdk::InstrumentType::kCounter, + metric_sdk::InstrumentValueType::kDouble}, + opentelemetry::common::SystemTimestamp{}, opentelemetry::common::SystemTimestamp{}, + std::vector{ + {metric_sdk::PointAttributes{}, last_value_point_data}, + {metric_sdk::PointAttributes{}, last_value_point_data2}}}; + data.instrumentation_info_metric_data_ = std::vector{ + {instrumentation_library.get(), std::vector{metric_data}}}; std::stringstream stdoutOutput; std::streambuf *sbuf = std::cout.rdbuf(); std::cout.rdbuf(stdoutOutput.rdbuf()); - auto result = exporter->Export(records); + auto result = exporter->Export(data); EXPECT_EQ(result, opentelemetry::sdk::common::ExportResult::kSuccess); std::cout.rdbuf(sbuf); - std::string expectedOutput = - "{\n" - " name : library_name\n" - " version : 1.2.0\n" - " type : LastValuePointData\n" - " timestamp : 0\n" - " valid : true\n" - " value : 10\n" - "}\n" - "{\n" - " name : library_name\n" - " version : 1.2.0\n" - " type : LastValuePointData\n" - " timestamp : 0\n" - " valid : true\n" - " value : 20\n" - "}\n"; - ASSERT_EQ(stdoutOutput.str(), expectedOutput); + std::string expected_output = + "{" + "\n name\t\t: library_name" + "\n schema url\t: " + "\n version\t: 1.2.0" + "\n start time\t: Thu Jan 1 00:00:00 1970" + "\n end time\t: Thu Jan 1 00:00:00 1970" + "\n description\t: description" + "\n unit\t\t: unit" + "\n type : LastValuePointData" + "\n timestamp : 0" + "\n valid : true" + "\n value : 10" + "\n type : LastValuePointData" + "\n timestamp : 0" + "\n valid : true" + "\n value : 20" + "\n}\n"; + ASSERT_EQ(stdoutOutput.str(), expected_output); } TEST(OStreamMetricsExporter, ExportDropPointData) @@ -181,30 +203,50 @@ TEST(OStreamMetricsExporter, ExportDropPointData) auto exporter = std::unique_ptr(new exportermetrics::OStreamMetricExporter); - std::unique_ptr record(new metric_sdk::MetricData); + metric_sdk::HistogramPointData histogram_point_data{ + std::list{10.1, 20.2, 30.2}, 900.5, {200, 300, 400, 500}, 3}; + metric_sdk::HistogramPointData histogram_point_data2{ + std::list{10, 20, 30}, 900l, {200, 300, 400, 500}, 3}; + metric_sdk::ResourceMetrics data; + auto resource = opentelemetry::sdk::resource::Resource::Create( + opentelemetry::sdk::resource::ResourceAttributes{}); + data.resource_ = &resource; auto instrumentation_library = opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary::Create("library_name", "1.2.0"); - record->instrumentation_library_ = instrumentation_library.get(); - record->point_data_ = metric_sdk::DropPointData{}; - std::vector> records; - records.push_back(std::move(record)); + metric_sdk::DropPointData drop_point_data{}; + metric_sdk::DropPointData drop_point_data2{}; + metric_sdk::MetricData metric_data{ + metric_sdk::InstrumentDescriptor{"library_name", "description", "unit", + metric_sdk::InstrumentType::kCounter, + metric_sdk::InstrumentValueType::kDouble}, + opentelemetry::common::SystemTimestamp{}, opentelemetry::common::SystemTimestamp{}, + std::vector{ + {metric_sdk::PointAttributes{}, drop_point_data}, + {metric_sdk::PointAttributes{}, drop_point_data2}}}; + data.instrumentation_info_metric_data_ = std::vector{ + {instrumentation_library.get(), std::vector{metric_data}}}; std::stringstream stdoutOutput; std::streambuf *sbuf = std::cout.rdbuf(); std::cout.rdbuf(stdoutOutput.rdbuf()); - auto result = exporter->Export(records); + auto result = exporter->Export(data); EXPECT_EQ(result, opentelemetry::sdk::common::ExportResult::kSuccess); std::cout.rdbuf(sbuf); - std::string expectedOutput = - "{\n" - " name : library_name\n" - " version : 1.2.0\n" - "}\n"; - - ASSERT_EQ(stdoutOutput.str(), expectedOutput); + std::string expected_output = + "{" + "\n name\t\t: library_name" + "\n schema url\t: " + "\n version\t: 1.2.0" + "\n start time\t: Thu Jan 1 00:00:00 1970" + "\n end time\t: Thu Jan 1 00:00:00 1970" + "\n description\t: description" + "\n unit\t\t: unit" + "\n}\n"; + + ASSERT_EQ(stdoutOutput.str(), expected_output); } #endif diff --git a/sdk/include/opentelemetry/sdk/metrics/metric_exporter.h b/sdk/include/opentelemetry/sdk/metrics/metric_exporter.h index b6b5acf3a9..127ef468ac 100644 --- a/sdk/include/opentelemetry/sdk/metrics/metric_exporter.h +++ b/sdk/include/opentelemetry/sdk/metrics/metric_exporter.h @@ -6,6 +6,7 @@ # include "opentelemetry/nostd/span.h" # include "opentelemetry/sdk/common/exporter_utils.h" +# include "opentelemetry/sdk/metrics/export/metric_producer.h" # include "opentelemetry/version.h" # include From 7aa6a1436606e6b489f5cf9bc9da2232aa7d8bb9 Mon Sep 17 00:00:00 2001 From: Oblivion Date: Fri, 8 Apr 2022 20:00:12 +0000 Subject: [PATCH 3/7] fix CI --- examples/metrics_simple/metrics_ostream.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/metrics_simple/metrics_ostream.cc b/examples/metrics_simple/metrics_ostream.cc index 7eedc81266..87ce5f1240 100644 --- a/examples/metrics_simple/metrics_ostream.cc +++ b/examples/metrics_simple/metrics_ostream.cc @@ -65,4 +65,6 @@ int main() { sync_sum(); } +#else +int main() {} #endif From 7b89ff9316935082ade6dac18a7f11b8acff5f86 Mon Sep 17 00:00:00 2001 From: Oblivion Date: Fri, 8 Apr 2022 20:26:31 +0000 Subject: [PATCH 4/7] RTTI CI --- exporters/ostream/test/ostream_metric_test.cc | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/exporters/ostream/test/ostream_metric_test.cc b/exporters/ostream/test/ostream_metric_test.cc index 51358b4315..3618d93e7a 100644 --- a/exporters/ostream/test/ostream_metric_test.cc +++ b/exporters/ostream/test/ostream_metric_test.cc @@ -85,10 +85,16 @@ TEST(OStreamMetricsExporter, ExportHistogramPointData) auto exporter = std::unique_ptr(new exportermetrics::OStreamMetricExporter); - metric_sdk::HistogramPointData histogram_point_data{ - std::list{10.1, 20.2, 30.2}, 900.5, {200, 300, 400, 500}, 3}; - metric_sdk::HistogramPointData histogram_point_data2{ - std::list{10, 20, 30}, 900l, {200, 300, 400, 500}, 3}; + metric_sdk::HistogramPointData histogram_point_data{}; + histogram_point_data.boundaries_ = std::list{10.1, 20.2, 30.2}; + histogram_point_data.count_ = 3; + histogram_point_data.counts_ = {200, 300, 400, 500}; + histogram_point_data.sum_ = 900.5; + metric_sdk::HistogramPointData histogram_point_data2{}; + histogram_point_data2.boundaries_ = std::list{10, 20, 30}; + histogram_point_data2.count_ = 3; + histogram_point_data2.counts_ = {200, 300, 400, 500}; + histogram_point_data2.sum_ = 900l; metric_sdk::ResourceMetrics data; auto resource = opentelemetry::sdk::resource::Resource::Create( opentelemetry::sdk::resource::ResourceAttributes{}); @@ -143,10 +149,6 @@ TEST(OStreamMetricsExporter, ExportLastValuePointData) auto exporter = std::unique_ptr(new exportermetrics::OStreamMetricExporter); - metric_sdk::HistogramPointData histogram_point_data{ - std::list{10.1, 20.2, 30.2}, 900.5, {200, 300, 400, 500}, 3}; - metric_sdk::HistogramPointData histogram_point_data2{ - std::list{10, 20, 30}, 900l, {200, 300, 400, 500}, 3}; metric_sdk::ResourceMetrics data; auto resource = opentelemetry::sdk::resource::Resource::Create( opentelemetry::sdk::resource::ResourceAttributes{}); @@ -154,10 +156,14 @@ TEST(OStreamMetricsExporter, ExportLastValuePointData) auto instrumentation_library = opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary::Create("library_name", "1.2.0"); - metric_sdk::LastValuePointData last_value_point_data{10.0, true, - opentelemetry::common::SystemTimestamp{}}; - metric_sdk::LastValuePointData last_value_point_data2{20l, true, - opentelemetry::common::SystemTimestamp{}}; + metric_sdk::LastValuePointData last_value_point_data{}; + last_value_point_data.value_ = 10.0; + last_value_point_data.is_lastvalue_valid_ = true; + last_value_point_data.sample_ts_ = opentelemetry::common::SystemTimestamp{}; + metric_sdk::LastValuePointData last_value_point_data2{}; + last_value_point_data2.value_ = 20l; + last_value_point_data2.is_lastvalue_valid_ = true; + last_value_point_data2.sample_ts_ = opentelemetry::common::SystemTimestamp{}; metric_sdk::MetricData metric_data{ metric_sdk::InstrumentDescriptor{"library_name", "description", "unit", metric_sdk::InstrumentType::kCounter, @@ -203,10 +209,6 @@ TEST(OStreamMetricsExporter, ExportDropPointData) auto exporter = std::unique_ptr(new exportermetrics::OStreamMetricExporter); - metric_sdk::HistogramPointData histogram_point_data{ - std::list{10.1, 20.2, 30.2}, 900.5, {200, 300, 400, 500}, 3}; - metric_sdk::HistogramPointData histogram_point_data2{ - std::list{10, 20, 30}, 900l, {200, 300, 400, 500}, 3}; metric_sdk::ResourceMetrics data; auto resource = opentelemetry::sdk::resource::Resource::Create( opentelemetry::sdk::resource::ResourceAttributes{}); From f9e42c6e6d8b6fa56856e94c2ff3cd64db3c9a5e Mon Sep 17 00:00:00 2001 From: Oblivion Date: Mon, 11 Apr 2022 20:02:33 +0000 Subject: [PATCH 5/7] comments --- examples/common/metrics_foo_library/BUILD | 17 ++++++++++ .../common/metrics_foo_library/foo_library.cc | 31 +++++++++++++++++ .../common/metrics_foo_library/foo_library.h | 7 ++++ examples/metrics_simple/BUILD | 1 + examples/metrics_simple/metrics_ostream.cc | 33 ++++++++----------- .../sdk/metrics/view/instrument_selector.h | 2 +- 6 files changed, 71 insertions(+), 20 deletions(-) create mode 100644 examples/common/metrics_foo_library/BUILD create mode 100644 examples/common/metrics_foo_library/foo_library.cc create mode 100644 examples/common/metrics_foo_library/foo_library.h diff --git a/examples/common/metrics_foo_library/BUILD b/examples/common/metrics_foo_library/BUILD new file mode 100644 index 0000000000..bc84949732 --- /dev/null +++ b/examples/common/metrics_foo_library/BUILD @@ -0,0 +1,17 @@ +package(default_visibility = ["//visibility:public"]) + +cc_library( + name = "common_metrics_foo_library", + srcs = [ + "foo_library.cc", + ], + hdrs = [ + "foo_library.h", + ], + defines = ["BAZEL_BUILD"], + deps = [ + "//api", + "//sdk:headers", + "//sdk/src/metrics", + ], +) diff --git a/examples/common/metrics_foo_library/foo_library.cc b/examples/common/metrics_foo_library/foo_library.cc new file mode 100644 index 0000000000..083e6a8c4f --- /dev/null +++ b/examples/common/metrics_foo_library/foo_library.cc @@ -0,0 +1,31 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#include +#include +#include "opentelemetry/metrics/provider.h" +#include "opentelemetry/sdk/metrics/aggregation/default_aggregation.h" +#include "opentelemetry/sdk/metrics/aggregation/histogram_aggregation.h" +#include "opentelemetry/sdk/metrics/export/periodic_exporting_metric_reader.h" +#include "opentelemetry/sdk/metrics/meter.h" +#include "opentelemetry/sdk/metrics/meter_provider.h" +#include "opentelemetry/sdk/version/version.h" + +namespace metric_sdk = opentelemetry::sdk::metrics; +namespace nostd = opentelemetry::nostd; +namespace common = opentelemetry::common; +namespace metrics_api = opentelemetry::metrics; + +void foo_library(const std::string &name) +{ + // Get the Meter from the MeterProvider + auto provider = metrics_api::Provider::GetMeterProvider(); + nostd::shared_ptr meter = provider->GetMeter(name, "1.2.0"); + auto double_counter = meter->CreateDoubleCounter(name); + double_counter->Add(28.5); + std::this_thread::sleep_for(std::chrono::milliseconds(500)); + double_counter->Add(3.14); + std::this_thread::sleep_for(std::chrono::milliseconds(500)); + double_counter->Add(23.5); + std::this_thread::sleep_for(std::chrono::milliseconds(5000)); +} diff --git a/examples/common/metrics_foo_library/foo_library.h b/examples/common/metrics_foo_library/foo_library.h new file mode 100644 index 0000000000..0f2ef35568 --- /dev/null +++ b/examples/common/metrics_foo_library/foo_library.h @@ -0,0 +1,7 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once +#include + +void foo_library(const std::string &name); diff --git a/examples/metrics_simple/BUILD b/examples/metrics_simple/BUILD index 05dce00b39..95d6490ba2 100644 --- a/examples/metrics_simple/BUILD +++ b/examples/metrics_simple/BUILD @@ -21,6 +21,7 @@ cc_binary( tags = ["ostream"], deps = [ "//api", + "//examples/common/metrics_foo_library:common_metrics_foo_library", "//exporters/ostream:ostream_metric_exporter", "//sdk/src/metrics", ], diff --git a/examples/metrics_simple/metrics_ostream.cc b/examples/metrics_simple/metrics_ostream.cc index 87ce5f1240..9fae5f07b7 100644 --- a/examples/metrics_simple/metrics_ostream.cc +++ b/examples/metrics_simple/metrics_ostream.cc @@ -1,10 +1,8 @@ // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 -#include #ifndef ENABLE_METRICS_PREVIEW -# include -# include +# include # include "opentelemetry/exporters/ostream/metric_exporter.h" # include "opentelemetry/metrics/provider.h" # include "opentelemetry/sdk/metrics/aggregation/default_aggregation.h" @@ -13,7 +11,11 @@ # include "opentelemetry/sdk/metrics/meter.h" # include "opentelemetry/sdk/metrics/meter_provider.h" -# include +# ifdef BAZEL_BUILD +# include "examples/common/metrics_foo_library/foo_library.h" +# else +# include "metrics_foo_library/foo_library.h" +# endif namespace metric_sdk = opentelemetry::sdk::metrics; namespace nostd = opentelemetry::nostd; @@ -21,12 +23,14 @@ namespace common = opentelemetry::common; namespace exportermetrics = opentelemetry::exporter::metrics; namespace metrics_api = opentelemetry::metrics; -void sync_sum() +namespace +{ + +void initMetrics(const std::string &name) { std::unique_ptr exporter{new exportermetrics::OStreamMetricExporter}; std::vector> exporters; - std::string name{"ostream_metric_example"}; std::string version{"1.2.0"}; std::string schema{"https://opentelemetry.io/schemas/1.2.0"}; @@ -48,22 +52,13 @@ void sync_sum() new metric_sdk::View{name, "description", metric_sdk::AggregationType::kSum}}; p->AddView(std::move(instrument_selector), std::move(meter_selector), std::move(view)); metrics_api::Provider::SetMeterProvider(provider); - - // Get the Meter from the MeterProvider - nostd::shared_ptr meter = provider->GetMeter(name, "1.2.0"); - auto double_counter = meter->CreateDoubleCounter(name); - double_counter->Add(28.5); - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - double_counter->Add(3.14); - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - double_counter->Add(23.5); - std::this_thread::sleep_for(std::chrono::milliseconds(5000)); - p->ForceFlush(); } - +} // namespace int main() { - sync_sum(); + std::string name{"ostream_metric_example"}; + initMetrics(name); + foo_library(name); } #else int main() {} diff --git a/sdk/include/opentelemetry/sdk/metrics/view/instrument_selector.h b/sdk/include/opentelemetry/sdk/metrics/view/instrument_selector.h index 4912277d09..e79a292c0b 100644 --- a/sdk/include/opentelemetry/sdk/metrics/view/instrument_selector.h +++ b/sdk/include/opentelemetry/sdk/metrics/view/instrument_selector.h @@ -27,8 +27,8 @@ class InstrumentSelector InstrumentType GetInstrumentType() { return instrument_type_; } private: - opentelemetry::sdk::metrics::InstrumentType instrument_type_; std::unique_ptr name_filter_; + opentelemetry::sdk::metrics::InstrumentType instrument_type_; }; } // namespace metrics } // namespace sdk From 35cb208d4248bd14fea6de1c06c61692904ed613 Mon Sep 17 00:00:00 2001 From: Ehsan Saei <71217171+esigo@users.noreply.github.com> Date: Mon, 11 Apr 2022 22:39:55 +0200 Subject: [PATCH 6/7] fix CI --- examples/common/metrics_foo_library/foo_library.cc | 2 ++ examples/common/metrics_foo_library/foo_library.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/examples/common/metrics_foo_library/foo_library.cc b/examples/common/metrics_foo_library/foo_library.cc index 083e6a8c4f..2e65816c2d 100644 --- a/examples/common/metrics_foo_library/foo_library.cc +++ b/examples/common/metrics_foo_library/foo_library.cc @@ -1,6 +1,7 @@ // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 +#ifndef ENABLE_METRICS_PREVIEW #include #include #include "opentelemetry/metrics/provider.h" @@ -29,3 +30,4 @@ void foo_library(const std::string &name) double_counter->Add(23.5); std::this_thread::sleep_for(std::chrono::milliseconds(5000)); } +#endif diff --git a/examples/common/metrics_foo_library/foo_library.h b/examples/common/metrics_foo_library/foo_library.h index 0f2ef35568..c3bd09b257 100644 --- a/examples/common/metrics_foo_library/foo_library.h +++ b/examples/common/metrics_foo_library/foo_library.h @@ -2,6 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 #pragma once +#ifndef ENABLE_METRICS_PREVIEW #include void foo_library(const std::string &name); +#endif From 454a2c9861d93330bbec1bbe3098fb16a4e38d79 Mon Sep 17 00:00:00 2001 From: Oblivion Date: Tue, 12 Apr 2022 15:58:00 +0000 Subject: [PATCH 7/7] comments --- examples/common/metrics_foo_library/foo_library.cc | 14 +++----------- examples/common/metrics_foo_library/foo_library.h | 2 +- exporters/ostream/src/metric_exporter.cc | 7 +------ 3 files changed, 5 insertions(+), 18 deletions(-) diff --git a/examples/common/metrics_foo_library/foo_library.cc b/examples/common/metrics_foo_library/foo_library.cc index 2e65816c2d..344f51c082 100644 --- a/examples/common/metrics_foo_library/foo_library.cc +++ b/examples/common/metrics_foo_library/foo_library.cc @@ -2,19 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 #ifndef ENABLE_METRICS_PREVIEW -#include -#include -#include "opentelemetry/metrics/provider.h" -#include "opentelemetry/sdk/metrics/aggregation/default_aggregation.h" -#include "opentelemetry/sdk/metrics/aggregation/histogram_aggregation.h" -#include "opentelemetry/sdk/metrics/export/periodic_exporting_metric_reader.h" -#include "opentelemetry/sdk/metrics/meter.h" -#include "opentelemetry/sdk/metrics/meter_provider.h" -#include "opentelemetry/sdk/version/version.h" +# include +# include +# include "opentelemetry/metrics/provider.h" -namespace metric_sdk = opentelemetry::sdk::metrics; namespace nostd = opentelemetry::nostd; -namespace common = opentelemetry::common; namespace metrics_api = opentelemetry::metrics; void foo_library(const std::string &name) diff --git a/examples/common/metrics_foo_library/foo_library.h b/examples/common/metrics_foo_library/foo_library.h index c3bd09b257..662646a6a4 100644 --- a/examples/common/metrics_foo_library/foo_library.h +++ b/examples/common/metrics_foo_library/foo_library.h @@ -3,7 +3,7 @@ #pragma once #ifndef ENABLE_METRICS_PREVIEW -#include +# include void foo_library(const std::string &name); #endif diff --git a/exporters/ostream/src/metric_exporter.cc b/exporters/ostream/src/metric_exporter.cc index 2734904ce2..fad9e03d49 100644 --- a/exporters/ostream/src/metric_exporter.cc +++ b/exporters/ostream/src/metric_exporter.cc @@ -13,12 +13,7 @@ namespace { std::string timeToString(opentelemetry::common::SystemTimestamp time_stamp) { - auto duration = time_stamp.time_since_epoch().count(); - - std::chrono::nanoseconds dur(duration); - std::chrono::time_point dt(dur); - std::time_t epoch_time = std::chrono::system_clock::to_time_t(dt); - + std::time_t epoch_time = std::chrono::system_clock::to_time_t(time_stamp); return std::ctime(&epoch_time); } } // namespace