From e3cc10bfd915ff51b8e1e2ed054baaeeefb07fc8 Mon Sep 17 00:00:00 2001 From: Lalit Date: Fri, 25 Feb 2022 22:00:49 -0800 Subject: [PATCH 1/7] initial commit --- .../sdk/metrics/state/sync_metric_storage.h | 64 +++---------------- sdk/test/metrics/BUILD | 16 +++++ 2 files changed, 25 insertions(+), 55 deletions(-) diff --git a/sdk/include/opentelemetry/sdk/metrics/state/sync_metric_storage.h b/sdk/include/opentelemetry/sdk/metrics/state/sync_metric_storage.h index ee64c5fba4..57530ebbed 100644 --- a/sdk/include/opentelemetry/sdk/metrics/state/sync_metric_storage.h +++ b/sdk/include/opentelemetry/sdk/metrics/state/sync_metric_storage.h @@ -28,14 +28,14 @@ class SyncMetricStorage : public MetricStorage, public WritableMetricStorage SyncMetricStorage( InstrumentDescriptor instrument_descriptor, const AggregationType aggregation_type, - const AttributesProcessor *attributes_processor = new DefaultAttributesProcessor()) + const AttributesProcessor *attributes_processor) : instrument_descriptor_(instrument_descriptor), aggregation_type_{aggregation_type}, attributes_hashmap_(new AttributesHashMap()), attributes_processor_{attributes_processor} { create_default_aggregation_ = [&]() -> std::unique_ptr { - return std::move(this->create_aggregation()); + return std::move(DefaultAggregation::CreateAggregation(aggregation_type_, instrument_descriptor_)); }; } @@ -45,8 +45,7 @@ class SyncMetricStorage : public MetricStorage, public WritableMetricStorage { return; } - auto aggregation = attributes_hashmap_->GetOrSetDefault({}, create_default_aggregation_); - aggregation->Aggregate(value); + attributes_hashmap_->GetOrSetDefault({}, create_default_aggregation_)->Aggregate(value); } void RecordLong(long value, @@ -58,8 +57,7 @@ class SyncMetricStorage : public MetricStorage, public WritableMetricStorage } auto attr = attributes_processor_->process(attributes); - auto aggregation = attributes_hashmap_->GetOrSetDefault(attr, create_default_aggregation_); - aggregation->Aggregate(value); + attributes_hashmap_->GetOrSetDefault(attr, create_default_aggregation_)->Aggregate(value); } void RecordDouble(double value) noexcept override @@ -69,8 +67,7 @@ class SyncMetricStorage : public MetricStorage, public WritableMetricStorage return; } - auto aggregation = attributes_hashmap_->GetOrSetDefault({}, create_default_aggregation_); - aggregation->Aggregate(value); + attributes_hashmap_->GetOrSetDefault({}, create_default_aggregation_)->Aggregate(value); } void RecordDouble(double value, @@ -82,8 +79,7 @@ class SyncMetricStorage : public MetricStorage, public WritableMetricStorage } auto attr = attributes_processor_->process(attributes); - auto aggregation = attributes_hashmap_->GetOrSetDefault(attr, create_default_aggregation_); - aggregation->Aggregate(value); + attributes_hashmap_->GetOrSetDefault(attr, create_default_aggregation_)->Aggregate(value); } bool Collect( @@ -91,10 +87,10 @@ class SyncMetricStorage : public MetricStorage, public WritableMetricStorage nostd::span collectors, opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary *instrumentation_library, opentelemetry::sdk::resource::Resource *resource, - nostd::function_ref callback) noexcept override + nostd::function_ref callback) noexcept override { - - if (callback(MetricData())) + MetricData metric_data; + if (callback(metric_data)) { return true; } @@ -107,48 +103,6 @@ class SyncMetricStorage : public MetricStorage, public WritableMetricStorage std::unique_ptr attributes_hashmap_; const AttributesProcessor *attributes_processor_; std::function()> create_default_aggregation_; - - std::unique_ptr create_aggregation() - { - switch (aggregation_type_) - { - case AggregationType::kDrop: - return std::move(std::unique_ptr(new DropAggregation())); - break; - case AggregationType::kHistogram: - if (instrument_descriptor_.value_type_ == InstrumentValueType::kLong) - { - return std::move(std::unique_ptr(new LongHistogramAggregation())); - } - else - { - return std::move(std::unique_ptr(new DoubleHistogramAggregation())); - } - break; - case AggregationType::kLastValue: - if (instrument_descriptor_.value_type_ == InstrumentValueType::kLong) - { - return std::move(std::unique_ptr(new LongLastValueAggregation())); - } - else - { - return std::move(std::unique_ptr(new DoubleLastValueAggregation())); - } - break; - case AggregationType::kSum: - if (instrument_descriptor_.value_type_ == InstrumentValueType::kLong) - { - return std::move(std::unique_ptr(new LongSumAggregation(true))); - } - else - { - return std::move(std::unique_ptr(new DoubleSumAggregation(true))); - } - break; - default: - return std::move(DefaultAggregation::CreateAggregation(instrument_descriptor_)); - } - } }; } // namespace metrics diff --git a/sdk/test/metrics/BUILD b/sdk/test/metrics/BUILD index d49d855d8f..8a18cc597d 100644 --- a/sdk/test/metrics/BUILD +++ b/sdk/test/metrics/BUILD @@ -64,6 +64,22 @@ cc_test( ], ) +cc_test( + name = "async_metric_storage_test", + srcs = [ + "async_metric_storage_test.cc", + ], + tags = [ + "metrics", + "test", + ], + deps = [ + "//sdk/src/metrics", + "//sdk/src/resource", + "@com_google_googletest//:gtest_main", + ], +) + cc_test( name = "multi_metric_storage_test", srcs = [ From 2dfd1ded44d020e15b10e9ea08255f7adea3d424 Mon Sep 17 00:00:00 2001 From: Lalit Date: Fri, 25 Feb 2022 22:02:39 -0800 Subject: [PATCH 2/7] remaining files --- .../opentelemetry/metrics/observer_result.h | 3 +- .../metrics/aggregation/default_aggregation.h | 42 ++++++++++ .../sdk/metrics/measurement_processor.h | 4 +- .../sdk/metrics/observer_result.h | 48 +++++++++++ .../sdk/metrics/state/async_metric_storage.h | 80 +++++++++++++++++++ .../sdk/metrics/state/attributes_hashmap.h | 2 +- .../sdk/metrics/state/metric_storage.h | 4 +- sdk/test/metrics/CMakeLists.txt | 2 + sdk/test/metrics/async_metric_storage_test.cc | 40 ++++++++++ sdk/test/metrics/observer_result_test.cc | 33 ++++++++ sdk/test/metrics/sync_metric_storage_test.cc | 5 +- 11 files changed, 256 insertions(+), 7 deletions(-) create mode 100644 sdk/include/opentelemetry/sdk/metrics/observer_result.h create mode 100644 sdk/include/opentelemetry/sdk/metrics/state/async_metric_storage.h create mode 100644 sdk/test/metrics/async_metric_storage_test.cc create mode 100644 sdk/test/metrics/observer_result_test.cc diff --git a/api/include/opentelemetry/metrics/observer_result.h b/api/include/opentelemetry/metrics/observer_result.h index 355b5a4a31..7a10d9fefd 100644 --- a/api/include/opentelemetry/metrics/observer_result.h +++ b/api/include/opentelemetry/metrics/observer_result.h @@ -32,7 +32,7 @@ class ObserverResult nostd::enable_if_t::value> * = nullptr> void Observe(T value, const U &attributes) noexcept { - this->Observe(value, common::KeyValueIterableView{attributes}); + this->Observe(value, common::KeyValueIterableView{attributes}); } void Observe(T value, @@ -42,6 +42,7 @@ class ObserverResult this->Observe(value, nostd::span>{ attributes.begin(), attributes.end()}); } + }; } // namespace metrics diff --git a/sdk/include/opentelemetry/sdk/metrics/aggregation/default_aggregation.h b/sdk/include/opentelemetry/sdk/metrics/aggregation/default_aggregation.h index cad43d7aa5..66865d0f55 100644 --- a/sdk/include/opentelemetry/sdk/metrics/aggregation/default_aggregation.h +++ b/sdk/include/opentelemetry/sdk/metrics/aggregation/default_aggregation.h @@ -47,6 +47,48 @@ class DefaultAggregation return std::move(std::unique_ptr(new DropAggregation())); }; } + + static std::unique_ptr CreateAggregation(AggregationType aggregation_type, InstrumentDescriptor instrument_descriptor ) + { + switch (aggregation_type) + { + case AggregationType::kDrop: + return std::unique_ptr(new DropAggregation()); + break; + case AggregationType::kHistogram: + if (instrument_descriptor.value_type_ == InstrumentValueType::kLong) + { + return std::unique_ptr(new LongHistogramAggregation()); + } + else + { + return std::unique_ptr(new DoubleHistogramAggregation()); + } + break; + case AggregationType::kLastValue: + if (instrument_descriptor.value_type_ == InstrumentValueType::kLong) + { + return std::unique_ptr(new LongLastValueAggregation()); + } + else + { + return std::unique_ptr(new DoubleLastValueAggregation()); + } + break; + case AggregationType::kSum: + if (instrument_descriptor.value_type_ == InstrumentValueType::kLong) + { + return std::unique_ptr(new LongSumAggregation(true)); + } + else + { + return std::unique_ptr(new DoubleSumAggregation(true)); + } + break; + default: + return DefaultAggregation::CreateAggregation(instrument_descriptor); + } + } }; } // namespace metrics diff --git a/sdk/include/opentelemetry/sdk/metrics/measurement_processor.h b/sdk/include/opentelemetry/sdk/metrics/measurement_processor.h index 7713848cf8..1e634478d8 100644 --- a/sdk/include/opentelemetry/sdk/metrics/measurement_processor.h +++ b/sdk/include/opentelemetry/sdk/metrics/measurement_processor.h @@ -8,7 +8,7 @@ # include "opentelemetry/sdk/metrics/instruments.h" # include "opentelemetry/sdk/metrics/metric_reader.h" # include "opentelemetry/sdk/metrics/state/sync_metric_storage.h" - +# include "opentelemetry/sdk/metrics/view/attributes_processor.h" # include OPENTELEMETRY_BEGIN_NAMESPACE @@ -50,7 +50,7 @@ class DefaultMeasurementProcessor : public MeasurementProcessor InstrumentDescriptor instr_desc = {"name", "desc", "1unit", InstrumentType::kCounter, InstrumentValueType::kLong}; metric_storages_[MakeKey(reader)] = std::unique_ptr( - new SyncMetricStorage(instr_desc, AggregationType::kSum)); + new SyncMetricStorage(instr_desc, AggregationType::kSum, new DefaultAttributesProcessor())); return true; } diff --git a/sdk/include/opentelemetry/sdk/metrics/observer_result.h b/sdk/include/opentelemetry/sdk/metrics/observer_result.h new file mode 100644 index 0000000000..7f3997eef8 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/metrics/observer_result.h @@ -0,0 +1,48 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once +#ifndef ENABLE_METRICS_PREVIEW +#include "opentelemetry/metrics/observer_result.h" +# include "opentelemetry/sdk/metrics/state/attributes_hashmap.h" +# include "opentelemetry/sdk/metrics/view/attributes_processor.h" +# include "opentelemetry/common/key_value_iterable.h" + + +#include + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace metrics +{ +template +class ObserverResult final : public opentelemetry::metrics::ObserverResult +{ + public: + ObserverResult(const AttributesProcessor* attributes_processor): attributes_processor_(attributes_processor) + { + } + + virtual void Observe(T value) noexcept override + { + data_.insert({{}, value}); + } + + virtual void Observer(T value, const opentelemetry::common::KeyValueIterable &attributes) noexcept override + { + auto attr = attributes_processor_->process(attributes); + data_.insert({attr, value}); + } + + std::unordered_map data_; + +private: + const AttributesProcessor *attributes_processor_; + +}; +} // namespace metrics +} // sdk + +OPENTELEMETRY_END_NAMESPACE +#endif diff --git a/sdk/include/opentelemetry/sdk/metrics/state/async_metric_storage.h b/sdk/include/opentelemetry/sdk/metrics/state/async_metric_storage.h new file mode 100644 index 0000000000..0557564d87 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/metrics/state/async_metric_storage.h @@ -0,0 +1,80 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once +#ifndef ENABLE_METRICS_PREVIEW +# include "opentelemetry/sdk/common/attributemap_hash.h" +# include "opentelemetry/sdk/metrics/instruments.h" + +# include "opentelemetry/sdk/instrumentationlibrary/instrumentation_library.h" +# include "opentelemetry/sdk/metrics/aggregation/default_aggregation.h" +# include "opentelemetry/sdk/metrics/state/attributes_hashmap.h" +# include "opentelemetry/sdk/metrics/state/metric_storage.h" +# include "opentelemetry/sdk/metrics/view/attributes_processor.h" +# include "opentelemetry/sdk/resource/resource.h" + +#include "opentelemetry/sdk/metrics/observer_result.h" +# include + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace metrics +{ + +template +class AsyncMetricStorage : public MetricStorage +{ +public: + AsyncMetricStorage(InstrumentDescriptor instrument_descriptor, + const AggregationType aggregation_type, + void (*measurement_callback)(opentelemetry::metrics::ObserverResult& ), + const AttributesProcessor *attributes_processor ) + : instrument_descriptor_(instrument_descriptor), + aggregation_type_{aggregation_type}, + measurement_collection_callback_{measurement_callback}, + active_attributes_hashmap_(new AttributesHashMap()), + attributes_processor_{attributes_processor} + { + } + + bool Collect( + MetricCollector *collector, + nostd::span collectors, + opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary *instrumentation_library, + opentelemetry::sdk::resource::Resource *resource, + nostd::function_ref metric_collection_callback) noexcept override + { + opentelemetry::sdk::metrics::ObserverResult ob_res(attributes_processor_); + + // read the measurement using configured callback + measurement_collection_callback_(ob_res); + + //process the read measurements - aggregate and store in hashmap + for (auto &measurement: ob_res.data_) { + auto agg = DefaultAggregation::CreateAggregation(aggregation_type_, instrument_descriptor_); + agg->Aggregate(measurement.second); + active_attributes_hashmap_->Set(measurement.first, std::move(agg)); + } + + // TBD -> read aggregation from hashmap, and perform metric collection + MetricData metric_data; + if (metric_collection_callback(metric_data)) + { + return true; + } + return false; + } + +private: + void (*measurement_collection_callback_)(opentelemetry::metrics::ObserverResult& ); + std::unique_ptr active_attributes_hashmap_; + InstrumentDescriptor instrument_descriptor_; + AggregationType aggregation_type_; + const AttributesProcessor *attributes_processor_; +}; + +} // namespace metrics +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE +#endif \ No newline at end of file diff --git a/sdk/include/opentelemetry/sdk/metrics/state/attributes_hashmap.h b/sdk/include/opentelemetry/sdk/metrics/state/attributes_hashmap.h index 32301f8038..217a50fbc0 100644 --- a/sdk/include/opentelemetry/sdk/metrics/state/attributes_hashmap.h +++ b/sdk/include/opentelemetry/sdk/metrics/state/attributes_hashmap.h @@ -124,4 +124,4 @@ class AttributesHashMap } // namespace sdk OPENTELEMETRY_END_NAMESPACE -#endif +#endif \ No newline at end of file diff --git a/sdk/include/opentelemetry/sdk/metrics/state/metric_storage.h b/sdk/include/opentelemetry/sdk/metrics/state/metric_storage.h index c2213a701b..9ef91c317e 100644 --- a/sdk/include/opentelemetry/sdk/metrics/state/metric_storage.h +++ b/sdk/include/opentelemetry/sdk/metrics/state/metric_storage.h @@ -23,7 +23,7 @@ class MetricStorage nostd::span collectors, opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary *instrumentation_library, opentelemetry::sdk::resource::Resource *resource, - nostd::function_ref callback) noexcept = 0; + nostd::function_ref callback) noexcept = 0; }; class WritableMetricStorage @@ -48,7 +48,7 @@ class NoopMetricStorage : public MetricStorage nostd::span collectors, opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary *instrumentation_library, opentelemetry::sdk::resource::Resource *resource, - nostd::function_ref callback) noexcept override + nostd::function_ref callback) noexcept override { MetricData metric_data; if (callback(metric_data)) diff --git a/sdk/test/metrics/CMakeLists.txt b/sdk/test/metrics/CMakeLists.txt index fb823feaca..a2080b6e46 100644 --- a/sdk/test/metrics/CMakeLists.txt +++ b/sdk/test/metrics/CMakeLists.txt @@ -6,7 +6,9 @@ foreach( attributes_processor_test attributes_hashmap_test sync_metric_storage_test + async_metric_storage_test multi_metric_storage_test + observer_result_test sync_instruments_test async_instruments_test) add_executable(${testname} "${testname}.cc") diff --git a/sdk/test/metrics/async_metric_storage_test.cc b/sdk/test/metrics/async_metric_storage_test.cc new file mode 100644 index 0000000000..f5558ba833 --- /dev/null +++ b/sdk/test/metrics/async_metric_storage_test.cc @@ -0,0 +1,40 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#ifndef ENABLE_METRICS_PREVIEW +# include "opentelemetry/sdk/metrics/state/async_metric_storage.h" +# include "opentelemetry/common/key_value_iterable_view.h" +# include "opentelemetry/sdk/metrics/observer_result.h" +# include "opentelemetry/sdk/metrics/instruments.h" + +# include "opentelemetry/sdk/instrumentationlibrary/instrumentation_library.h" +# include "opentelemetry/sdk/resource/resource.h" + +# include +# include + +using namespace opentelemetry::sdk::metrics; +using namespace opentelemetry::sdk::instrumentationlibrary; +using namespace opentelemetry::sdk::resource; + + +void measurement_fetch (opentelemetry::metrics::ObserverResult& observer_result) +{ + observer_result.Observe(20l); + observer_result.Observe(10l); +} + +TEST(AsyncMetricStorageTest, BasicTests) +{ + auto metric_callback = [](MetricData &metric_data) { return true;}; + InstrumentDescriptor instr_desc = {"name", "desc", "1unit", InstrumentType::kCounter, + InstrumentValueType::kLong}; + auto instrumentation_library = InstrumentationLibrary::Create("instr_lib"); + auto resource = Resource::Create({}); + MetricCollector* collector; + std::vector collectors; + + opentelemetry::sdk::metrics::AsyncMetricStorage storage(instr_desc, AggregationType::kSum, &measurement_fetch, new DefaultAttributesProcessor()); + EXPECT_NO_THROW(storage.Collect(collector, collectors, instrumentation_library.get(), &resource, metric_callback )); +} +#endif \ No newline at end of file diff --git a/sdk/test/metrics/observer_result_test.cc b/sdk/test/metrics/observer_result_test.cc new file mode 100644 index 0000000000..a530d42c4c --- /dev/null +++ b/sdk/test/metrics/observer_result_test.cc @@ -0,0 +1,33 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#ifndef ENABLE_METRICS_PREVIEW +# include "opentelemetry/sdk/metrics/observer_result.h" +# include "opentelemetry/sdk/metrics/view/attributes_processor.h" + +# include + +using namespace opentelemetry::sdk::metrics; +TEST(ObserverResult, BasicTests) +{ + const AttributesProcessor* attributes_processor = new DefaultAttributesProcessor(); + + ObserverResult observer_result(attributes_processor); + + observer_result.Observe(10l); + observer_result.Observe(20l); + EXPECT_EQ(observer_result.data_.size(), 1); + + std::map m1 = {{"k2", 12}}; + observer_result.Observer(30l, opentelemetry::common::KeyValueIterableView>(m1)); + EXPECT_EQ(observer_result.data_.size(), 2); + + observer_result.Observer(40l, opentelemetry::common::KeyValueIterableView>(m1)); + EXPECT_EQ(observer_result.data_.size(), 2); + + std::map m2 = {{"k2", 12}, {"k4", 12}}; + observer_result.Observer(40l, opentelemetry::common::KeyValueIterableView>(m2)); + EXPECT_EQ(observer_result.data_.size(), 3); +} + +#endif \ No newline at end of file diff --git a/sdk/test/metrics/sync_metric_storage_test.cc b/sdk/test/metrics/sync_metric_storage_test.cc index 916425dfa1..30a90d84cd 100644 --- a/sdk/test/metrics/sync_metric_storage_test.cc +++ b/sdk/test/metrics/sync_metric_storage_test.cc @@ -3,6 +3,7 @@ #ifndef ENABLE_METRICS_PREVIEW # include "opentelemetry/sdk/metrics/state/sync_metric_storage.h" +# include "opentelemetry/sdk/metrics/view/attributes_processor.h" # include "opentelemetry/common/key_value_iterable_view.h" # include "opentelemetry/sdk/metrics/instruments.h" @@ -17,12 +18,14 @@ TEST(WritableMetricStorageTest, BasicTests) InstrumentDescriptor instr_desc = {"name", "desc", "1unit", InstrumentType::kCounter, InstrumentValueType::kLong}; - opentelemetry::sdk::metrics::SyncMetricStorage storage(instr_desc, AggregationType::kSum); + opentelemetry::sdk::metrics::SyncMetricStorage storage(instr_desc, AggregationType::kSum, new DefaultAttributesProcessor()); EXPECT_NO_THROW(storage.RecordLong(10l)); EXPECT_NO_THROW(storage.RecordDouble(10.10)); EXPECT_NO_THROW(storage.RecordLong( 10l, opentelemetry::common::KeyValueIterableView({{"abc", "123"}, {"xyz", "456"}}))); + MetricCollector collector; + std::vector collectors; EXPECT_NO_THROW(storage.RecordDouble(10.10, opentelemetry::common::KeyValueIterableView({}))); } #endif From 6286691bb7eb65094bc3d5ccf1e0380cedad732c Mon Sep 17 00:00:00 2001 From: Lalit Date: Fri, 25 Feb 2022 22:09:04 -0800 Subject: [PATCH 3/7] Format --- .../opentelemetry/metrics/observer_result.h | 1 - .../metrics/aggregation/default_aggregation.h | 5 +-- .../sdk/metrics/measurement_processor.h | 4 +-- .../sdk/metrics/observer_result.h | 34 ++++++++----------- .../sdk/metrics/state/async_metric_storage.h | 24 ++++++------- .../sdk/metrics/state/metric_storage.h | 4 +-- .../sdk/metrics/state/sync_metric_storage.h | 16 ++++----- sdk/test/metrics/BUILD | 16 +++++++++ sdk/test/metrics/async_metric_storage_test.cc | 27 ++++++++------- sdk/test/metrics/observer_result_test.cc | 29 +++++++++------- sdk/test/metrics/sync_metric_storage_test.cc | 5 +-- 11 files changed, 91 insertions(+), 74 deletions(-) diff --git a/api/include/opentelemetry/metrics/observer_result.h b/api/include/opentelemetry/metrics/observer_result.h index 7a10d9fefd..9baa0892be 100644 --- a/api/include/opentelemetry/metrics/observer_result.h +++ b/api/include/opentelemetry/metrics/observer_result.h @@ -42,7 +42,6 @@ class ObserverResult this->Observe(value, nostd::span>{ attributes.begin(), attributes.end()}); } - }; } // namespace metrics diff --git a/sdk/include/opentelemetry/sdk/metrics/aggregation/default_aggregation.h b/sdk/include/opentelemetry/sdk/metrics/aggregation/default_aggregation.h index 66865d0f55..f193864926 100644 --- a/sdk/include/opentelemetry/sdk/metrics/aggregation/default_aggregation.h +++ b/sdk/include/opentelemetry/sdk/metrics/aggregation/default_aggregation.h @@ -48,7 +48,8 @@ class DefaultAggregation }; } - static std::unique_ptr CreateAggregation(AggregationType aggregation_type, InstrumentDescriptor instrument_descriptor ) + static std::unique_ptr CreateAggregation(AggregationType aggregation_type, + InstrumentDescriptor instrument_descriptor) { switch (aggregation_type) { @@ -85,7 +86,7 @@ class DefaultAggregation return std::unique_ptr(new DoubleSumAggregation(true)); } break; - default: + default: return DefaultAggregation::CreateAggregation(instrument_descriptor); } } diff --git a/sdk/include/opentelemetry/sdk/metrics/measurement_processor.h b/sdk/include/opentelemetry/sdk/metrics/measurement_processor.h index 1e634478d8..ffd47c5c92 100644 --- a/sdk/include/opentelemetry/sdk/metrics/measurement_processor.h +++ b/sdk/include/opentelemetry/sdk/metrics/measurement_processor.h @@ -4,12 +4,12 @@ #pragma once #ifndef ENABLE_METRICS_PREVIEW +# include # include "opentelemetry/common/key_value_iterable_view.h" # include "opentelemetry/sdk/metrics/instruments.h" # include "opentelemetry/sdk/metrics/metric_reader.h" # include "opentelemetry/sdk/metrics/state/sync_metric_storage.h" -# include "opentelemetry/sdk/metrics/view/attributes_processor.h" -# include +# include "opentelemetry/sdk/metrics/view/attributes_processor.h" OPENTELEMETRY_BEGIN_NAMESPACE namespace sdk diff --git a/sdk/include/opentelemetry/sdk/metrics/observer_result.h b/sdk/include/opentelemetry/sdk/metrics/observer_result.h index 7f3997eef8..c2097505d7 100644 --- a/sdk/include/opentelemetry/sdk/metrics/observer_result.h +++ b/sdk/include/opentelemetry/sdk/metrics/observer_result.h @@ -3,13 +3,12 @@ #pragma once #ifndef ENABLE_METRICS_PREVIEW -#include "opentelemetry/metrics/observer_result.h" +# include "opentelemetry/common/key_value_iterable.h" +# include "opentelemetry/metrics/observer_result.h" # include "opentelemetry/sdk/metrics/state/attributes_hashmap.h" # include "opentelemetry/sdk/metrics/view/attributes_processor.h" -# include "opentelemetry/common/key_value_iterable.h" - -#include +# include OPENTELEMETRY_BEGIN_NAMESPACE namespace sdk @@ -19,30 +18,27 @@ namespace metrics template class ObserverResult final : public opentelemetry::metrics::ObserverResult { - public: - ObserverResult(const AttributesProcessor* attributes_processor): attributes_processor_(attributes_processor) - { - } +public: + ObserverResult(const AttributesProcessor *attributes_processor) + : attributes_processor_(attributes_processor) + {} - virtual void Observe(T value) noexcept override - { - data_.insert({{}, value}); - } + virtual void Observe(T value) noexcept override { data_.insert({{}, value}); } - virtual void Observer(T value, const opentelemetry::common::KeyValueIterable &attributes) noexcept override + virtual void Observer(T value, + const opentelemetry::common::KeyValueIterable &attributes) noexcept override { - auto attr = attributes_processor_->process(attributes); - data_.insert({attr, value}); + auto attr = attributes_processor_->process(attributes); + data_.insert({attr, value}); } - std::unordered_map data_; + std::unordered_map data_; private: const AttributesProcessor *attributes_processor_; - }; -} // namespace metrics -} // sdk +} // namespace metrics +} // namespace sdk OPENTELEMETRY_END_NAMESPACE #endif diff --git a/sdk/include/opentelemetry/sdk/metrics/state/async_metric_storage.h b/sdk/include/opentelemetry/sdk/metrics/state/async_metric_storage.h index 0557564d87..d4b22712f8 100644 --- a/sdk/include/opentelemetry/sdk/metrics/state/async_metric_storage.h +++ b/sdk/include/opentelemetry/sdk/metrics/state/async_metric_storage.h @@ -4,7 +4,7 @@ #pragma once #ifndef ENABLE_METRICS_PREVIEW # include "opentelemetry/sdk/common/attributemap_hash.h" -# include "opentelemetry/sdk/metrics/instruments.h" +# include "opentelemetry/sdk/metrics/instruments.h" # include "opentelemetry/sdk/instrumentationlibrary/instrumentation_library.h" # include "opentelemetry/sdk/metrics/aggregation/default_aggregation.h" @@ -13,8 +13,8 @@ # include "opentelemetry/sdk/metrics/view/attributes_processor.h" # include "opentelemetry/sdk/resource/resource.h" -#include "opentelemetry/sdk/metrics/observer_result.h" # include +# include "opentelemetry/sdk/metrics/observer_result.h" OPENTELEMETRY_BEGIN_NAMESPACE namespace sdk @@ -27,31 +27,31 @@ class AsyncMetricStorage : public MetricStorage { public: AsyncMetricStorage(InstrumentDescriptor instrument_descriptor, - const AggregationType aggregation_type, - void (*measurement_callback)(opentelemetry::metrics::ObserverResult& ), - const AttributesProcessor *attributes_processor ) + const AggregationType aggregation_type, + void (*measurement_callback)(opentelemetry::metrics::ObserverResult &), + const AttributesProcessor *attributes_processor) : instrument_descriptor_(instrument_descriptor), aggregation_type_{aggregation_type}, measurement_collection_callback_{measurement_callback}, active_attributes_hashmap_(new AttributesHashMap()), attributes_processor_{attributes_processor} - { - } + {} bool Collect( MetricCollector *collector, nostd::span collectors, opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary *instrumentation_library, opentelemetry::sdk::resource::Resource *resource, - nostd::function_ref metric_collection_callback) noexcept override + nostd::function_ref metric_collection_callback) noexcept override { opentelemetry::sdk::metrics::ObserverResult ob_res(attributes_processor_); // read the measurement using configured callback measurement_collection_callback_(ob_res); - //process the read measurements - aggregate and store in hashmap - for (auto &measurement: ob_res.data_) { + // process the read measurements - aggregate and store in hashmap + for (auto &measurement : ob_res.data_) + { auto agg = DefaultAggregation::CreateAggregation(aggregation_type_, instrument_descriptor_); agg->Aggregate(measurement.second); active_attributes_hashmap_->Set(measurement.first, std::move(agg)); @@ -67,11 +67,11 @@ class AsyncMetricStorage : public MetricStorage } private: - void (*measurement_collection_callback_)(opentelemetry::metrics::ObserverResult& ); + void (*measurement_collection_callback_)(opentelemetry::metrics::ObserverResult &); std::unique_ptr active_attributes_hashmap_; InstrumentDescriptor instrument_descriptor_; AggregationType aggregation_type_; - const AttributesProcessor *attributes_processor_; + const AttributesProcessor *attributes_processor_; }; } // namespace metrics diff --git a/sdk/include/opentelemetry/sdk/metrics/state/metric_storage.h b/sdk/include/opentelemetry/sdk/metrics/state/metric_storage.h index 9ef91c317e..fbff04c47f 100644 --- a/sdk/include/opentelemetry/sdk/metrics/state/metric_storage.h +++ b/sdk/include/opentelemetry/sdk/metrics/state/metric_storage.h @@ -23,7 +23,7 @@ class MetricStorage nostd::span collectors, opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary *instrumentation_library, opentelemetry::sdk::resource::Resource *resource, - nostd::function_ref callback) noexcept = 0; + nostd::function_ref callback) noexcept = 0; }; class WritableMetricStorage @@ -48,7 +48,7 @@ class NoopMetricStorage : public MetricStorage nostd::span collectors, opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary *instrumentation_library, opentelemetry::sdk::resource::Resource *resource, - nostd::function_ref callback) noexcept override + nostd::function_ref callback) noexcept override { MetricData metric_data; if (callback(metric_data)) diff --git a/sdk/include/opentelemetry/sdk/metrics/state/sync_metric_storage.h b/sdk/include/opentelemetry/sdk/metrics/state/sync_metric_storage.h index 57530ebbed..e3ee673339 100644 --- a/sdk/include/opentelemetry/sdk/metrics/state/sync_metric_storage.h +++ b/sdk/include/opentelemetry/sdk/metrics/state/sync_metric_storage.h @@ -25,17 +25,17 @@ class SyncMetricStorage : public MetricStorage, public WritableMetricStorage { public: - SyncMetricStorage( - InstrumentDescriptor instrument_descriptor, - const AggregationType aggregation_type, - const AttributesProcessor *attributes_processor) + SyncMetricStorage(InstrumentDescriptor instrument_descriptor, + const AggregationType aggregation_type, + const AttributesProcessor *attributes_processor) : instrument_descriptor_(instrument_descriptor), aggregation_type_{aggregation_type}, attributes_hashmap_(new AttributesHashMap()), attributes_processor_{attributes_processor} { create_default_aggregation_ = [&]() -> std::unique_ptr { - return std::move(DefaultAggregation::CreateAggregation(aggregation_type_, instrument_descriptor_)); + return std::move( + DefaultAggregation::CreateAggregation(aggregation_type_, instrument_descriptor_)); }; } @@ -56,7 +56,7 @@ class SyncMetricStorage : public MetricStorage, public WritableMetricStorage return; } - auto attr = attributes_processor_->process(attributes); + auto attr = attributes_processor_->process(attributes); attributes_hashmap_->GetOrSetDefault(attr, create_default_aggregation_)->Aggregate(value); } @@ -78,7 +78,7 @@ class SyncMetricStorage : public MetricStorage, public WritableMetricStorage return; } - auto attr = attributes_processor_->process(attributes); + auto attr = attributes_processor_->process(attributes); attributes_hashmap_->GetOrSetDefault(attr, create_default_aggregation_)->Aggregate(value); } @@ -87,7 +87,7 @@ class SyncMetricStorage : public MetricStorage, public WritableMetricStorage nostd::span collectors, opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary *instrumentation_library, opentelemetry::sdk::resource::Resource *resource, - nostd::function_ref callback) noexcept override + nostd::function_ref callback) noexcept override { MetricData metric_data; if (callback(metric_data)) diff --git a/sdk/test/metrics/BUILD b/sdk/test/metrics/BUILD index 8a18cc597d..c0a06ac947 100644 --- a/sdk/test/metrics/BUILD +++ b/sdk/test/metrics/BUILD @@ -80,6 +80,22 @@ cc_test( ], ) +cc_test( + name = "observable_result_test", + srcs = [ + "observable_result_test.cc", + ], + tags = [ + "metrics", + "test", + ], + deps = [ + "//sdk/src/metrics", + "//sdk/src/resource", + "@com_google_googletest//:gtest_main", + ], +) + cc_test( name = "multi_metric_storage_test", srcs = [ diff --git a/sdk/test/metrics/async_metric_storage_test.cc b/sdk/test/metrics/async_metric_storage_test.cc index f5558ba833..8f246b8566 100644 --- a/sdk/test/metrics/async_metric_storage_test.cc +++ b/sdk/test/metrics/async_metric_storage_test.cc @@ -4,8 +4,8 @@ #ifndef ENABLE_METRICS_PREVIEW # include "opentelemetry/sdk/metrics/state/async_metric_storage.h" # include "opentelemetry/common/key_value_iterable_view.h" -# include "opentelemetry/sdk/metrics/observer_result.h" # include "opentelemetry/sdk/metrics/instruments.h" +# include "opentelemetry/sdk/metrics/observer_result.h" # include "opentelemetry/sdk/instrumentationlibrary/instrumentation_library.h" # include "opentelemetry/sdk/resource/resource.h" @@ -17,24 +17,25 @@ using namespace opentelemetry::sdk::metrics; using namespace opentelemetry::sdk::instrumentationlibrary; using namespace opentelemetry::sdk::resource; - -void measurement_fetch (opentelemetry::metrics::ObserverResult& observer_result) +void measurement_fetch(opentelemetry::metrics::ObserverResult &observer_result) { - observer_result.Observe(20l); - observer_result.Observe(10l); + observer_result.Observe(20l); + observer_result.Observe(10l); } TEST(AsyncMetricStorageTest, BasicTests) { - auto metric_callback = [](MetricData &metric_data) { return true;}; + auto metric_callback = [](MetricData &metric_data) { return true; }; InstrumentDescriptor instr_desc = {"name", "desc", "1unit", InstrumentType::kCounter, InstrumentValueType::kLong}; - auto instrumentation_library = InstrumentationLibrary::Create("instr_lib"); - auto resource = Resource::Create({}); - MetricCollector* collector; - std::vector collectors; - - opentelemetry::sdk::metrics::AsyncMetricStorage storage(instr_desc, AggregationType::kSum, &measurement_fetch, new DefaultAttributesProcessor()); - EXPECT_NO_THROW(storage.Collect(collector, collectors, instrumentation_library.get(), &resource, metric_callback )); + auto instrumentation_library = InstrumentationLibrary::Create("instr_lib"); + auto resource = Resource::Create({}); + MetricCollector *collector; + std::vector collectors; + + opentelemetry::sdk::metrics::AsyncMetricStorage storage( + instr_desc, AggregationType::kSum, &measurement_fetch, new DefaultAttributesProcessor()); + EXPECT_NO_THROW(storage.Collect(collector, collectors, instrumentation_library.get(), &resource, + metric_callback)); } #endif \ No newline at end of file diff --git a/sdk/test/metrics/observer_result_test.cc b/sdk/test/metrics/observer_result_test.cc index a530d42c4c..bc85f29a05 100644 --- a/sdk/test/metrics/observer_result_test.cc +++ b/sdk/test/metrics/observer_result_test.cc @@ -10,24 +10,27 @@ using namespace opentelemetry::sdk::metrics; TEST(ObserverResult, BasicTests) { - const AttributesProcessor* attributes_processor = new DefaultAttributesProcessor(); + const AttributesProcessor *attributes_processor = new DefaultAttributesProcessor(); - ObserverResult observer_result(attributes_processor); + ObserverResult observer_result(attributes_processor); - observer_result.Observe(10l); - observer_result.Observe(20l); - EXPECT_EQ(observer_result.data_.size(), 1); + observer_result.Observe(10l); + observer_result.Observe(20l); + EXPECT_EQ(observer_result.data_.size(), 1); - std::map m1 = {{"k2", 12}}; - observer_result.Observer(30l, opentelemetry::common::KeyValueIterableView>(m1)); - EXPECT_EQ(observer_result.data_.size(), 2); + std::map m1 = {{"k2", 12}}; + observer_result.Observer( + 30l, opentelemetry::common::KeyValueIterableView>(m1)); + EXPECT_EQ(observer_result.data_.size(), 2); - observer_result.Observer(40l, opentelemetry::common::KeyValueIterableView>(m1)); - EXPECT_EQ(observer_result.data_.size(), 2); + observer_result.Observer( + 40l, opentelemetry::common::KeyValueIterableView>(m1)); + EXPECT_EQ(observer_result.data_.size(), 2); - std::map m2 = {{"k2", 12}, {"k4", 12}}; - observer_result.Observer(40l, opentelemetry::common::KeyValueIterableView>(m2)); - EXPECT_EQ(observer_result.data_.size(), 3); + std::map m2 = {{"k2", 12}, {"k4", 12}}; + observer_result.Observer( + 40l, opentelemetry::common::KeyValueIterableView>(m2)); + EXPECT_EQ(observer_result.data_.size(), 3); } #endif \ No newline at end of file diff --git a/sdk/test/metrics/sync_metric_storage_test.cc b/sdk/test/metrics/sync_metric_storage_test.cc index 30a90d84cd..d2597bdb37 100644 --- a/sdk/test/metrics/sync_metric_storage_test.cc +++ b/sdk/test/metrics/sync_metric_storage_test.cc @@ -3,9 +3,9 @@ #ifndef ENABLE_METRICS_PREVIEW # include "opentelemetry/sdk/metrics/state/sync_metric_storage.h" -# include "opentelemetry/sdk/metrics/view/attributes_processor.h" # include "opentelemetry/common/key_value_iterable_view.h" # include "opentelemetry/sdk/metrics/instruments.h" +# include "opentelemetry/sdk/metrics/view/attributes_processor.h" # include # include @@ -18,7 +18,8 @@ TEST(WritableMetricStorageTest, BasicTests) InstrumentDescriptor instr_desc = {"name", "desc", "1unit", InstrumentType::kCounter, InstrumentValueType::kLong}; - opentelemetry::sdk::metrics::SyncMetricStorage storage(instr_desc, AggregationType::kSum, new DefaultAttributesProcessor()); + opentelemetry::sdk::metrics::SyncMetricStorage storage(instr_desc, AggregationType::kSum, + new DefaultAttributesProcessor()); EXPECT_NO_THROW(storage.RecordLong(10l)); EXPECT_NO_THROW(storage.RecordDouble(10.10)); EXPECT_NO_THROW(storage.RecordLong( From 40fe87c52b4f29623544f11b3e3d7b1e4a5f91fb Mon Sep 17 00:00:00 2001 From: Lalit Date: Fri, 25 Feb 2022 22:13:00 -0800 Subject: [PATCH 4/7] revert newline change --- .../opentelemetry/sdk/metrics/state/attributes_hashmap.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/include/opentelemetry/sdk/metrics/state/attributes_hashmap.h b/sdk/include/opentelemetry/sdk/metrics/state/attributes_hashmap.h index 217a50fbc0..32301f8038 100644 --- a/sdk/include/opentelemetry/sdk/metrics/state/attributes_hashmap.h +++ b/sdk/include/opentelemetry/sdk/metrics/state/attributes_hashmap.h @@ -124,4 +124,4 @@ class AttributesHashMap } // namespace sdk OPENTELEMETRY_END_NAMESPACE -#endif \ No newline at end of file +#endif From bf8c71b5900e7b1bec33ec5a57a07c1e979cdc92 Mon Sep 17 00:00:00 2001 From: Lalit Date: Fri, 25 Feb 2022 22:26:21 -0800 Subject: [PATCH 5/7] fix bazel build --- sdk/test/metrics/BUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/test/metrics/BUILD b/sdk/test/metrics/BUILD index c0a06ac947..cf780b1120 100644 --- a/sdk/test/metrics/BUILD +++ b/sdk/test/metrics/BUILD @@ -81,9 +81,9 @@ cc_test( ) cc_test( - name = "observable_result_test", + name = "observer_result_test", srcs = [ - "observable_result_test.cc", + "observer_result_test.cc", ], tags = [ "metrics", From 40d4ae47698cf1ec28910cdf97c1d1c819e7b872 Mon Sep 17 00:00:00 2001 From: Lalit Date: Tue, 1 Mar 2022 09:55:14 -0800 Subject: [PATCH 6/7] review comments --- .../opentelemetry/metrics/observer_result.h | 2 +- .../opentelemetry/sdk/metrics/observer_result.h | 12 ++++++++---- .../sdk/metrics/state/async_metric_storage.h | 10 +++++----- sdk/test/metrics/observer_result_test.cc | 16 +++++++++------- sdk/test/metrics/sync_metric_storage_test.cc | 2 -- 5 files changed, 23 insertions(+), 19 deletions(-) diff --git a/api/include/opentelemetry/metrics/observer_result.h b/api/include/opentelemetry/metrics/observer_result.h index 9baa0892be..84893deef0 100644 --- a/api/include/opentelemetry/metrics/observer_result.h +++ b/api/include/opentelemetry/metrics/observer_result.h @@ -26,7 +26,7 @@ class ObserverResult public: virtual void Observe(T value) noexcept = 0; - virtual void Observer(T value, const common::KeyValueIterable &attributes) noexcept = 0; + virtual void Observe(T value, const common::KeyValueIterable &attributes) noexcept = 0; template ::value> * = nullptr> diff --git a/sdk/include/opentelemetry/sdk/metrics/observer_result.h b/sdk/include/opentelemetry/sdk/metrics/observer_result.h index c2097505d7..ca7227bc5b 100644 --- a/sdk/include/opentelemetry/sdk/metrics/observer_result.h +++ b/sdk/include/opentelemetry/sdk/metrics/observer_result.h @@ -23,18 +23,22 @@ class ObserverResult final : public opentelemetry::metrics::ObserverResult : attributes_processor_(attributes_processor) {} - virtual void Observe(T value) noexcept override { data_.insert({{}, value}); } + void Observe(T value) noexcept override { data_.insert({{}, value}); } - virtual void Observer(T value, - const opentelemetry::common::KeyValueIterable &attributes) noexcept override + void Observe(T value, const opentelemetry::common::KeyValueIterable &attributes) noexcept override { auto attr = attributes_processor_->process(attributes); data_.insert({attr, value}); } - std::unordered_map data_; + const std::unordered_map &GetMeasurements() + { + return data_; + } private: + std::unordered_map data_; + const AttributesProcessor *attributes_processor_; }; } // namespace metrics diff --git a/sdk/include/opentelemetry/sdk/metrics/state/async_metric_storage.h b/sdk/include/opentelemetry/sdk/metrics/state/async_metric_storage.h index d4b22712f8..d5491e91cb 100644 --- a/sdk/include/opentelemetry/sdk/metrics/state/async_metric_storage.h +++ b/sdk/include/opentelemetry/sdk/metrics/state/async_metric_storage.h @@ -33,8 +33,8 @@ class AsyncMetricStorage : public MetricStorage : instrument_descriptor_(instrument_descriptor), aggregation_type_{aggregation_type}, measurement_collection_callback_{measurement_callback}, - active_attributes_hashmap_(new AttributesHashMap()), - attributes_processor_{attributes_processor} + attributes_processor_{attributes_processor}, + active_attributes_hashmap_(new AttributesHashMap()) {} bool Collect( @@ -50,7 +50,7 @@ class AsyncMetricStorage : public MetricStorage measurement_collection_callback_(ob_res); // process the read measurements - aggregate and store in hashmap - for (auto &measurement : ob_res.data_) + for (auto &measurement : ob_res.GetMeasurements()) { auto agg = DefaultAggregation::CreateAggregation(aggregation_type_, instrument_descriptor_); agg->Aggregate(measurement.second); @@ -67,11 +67,11 @@ class AsyncMetricStorage : public MetricStorage } private: - void (*measurement_collection_callback_)(opentelemetry::metrics::ObserverResult &); - std::unique_ptr active_attributes_hashmap_; InstrumentDescriptor instrument_descriptor_; AggregationType aggregation_type_; + void (*measurement_collection_callback_)(opentelemetry::metrics::ObserverResult &); const AttributesProcessor *attributes_processor_; + std::unique_ptr active_attributes_hashmap_; }; } // namespace metrics diff --git a/sdk/test/metrics/observer_result_test.cc b/sdk/test/metrics/observer_result_test.cc index bc85f29a05..a4cc28ae54 100644 --- a/sdk/test/metrics/observer_result_test.cc +++ b/sdk/test/metrics/observer_result_test.cc @@ -16,21 +16,23 @@ TEST(ObserverResult, BasicTests) observer_result.Observe(10l); observer_result.Observe(20l); - EXPECT_EQ(observer_result.data_.size(), 1); + EXPECT_EQ(observer_result.GetMeasurements().size(), 1); std::map m1 = {{"k2", 12}}; - observer_result.Observer( + observer_result.Observe( 30l, opentelemetry::common::KeyValueIterableView>(m1)); - EXPECT_EQ(observer_result.data_.size(), 2); + EXPECT_EQ(observer_result.GetMeasurements().size(), 2); - observer_result.Observer( + observer_result.Observe( 40l, opentelemetry::common::KeyValueIterableView>(m1)); - EXPECT_EQ(observer_result.data_.size(), 2); + EXPECT_EQ(observer_result.GetMeasurements().size(), 2); std::map m2 = {{"k2", 12}, {"k4", 12}}; - observer_result.Observer( + observer_result.Observe( 40l, opentelemetry::common::KeyValueIterableView>(m2)); - EXPECT_EQ(observer_result.data_.size(), 3); + EXPECT_EQ(observer_result.GetMeasurements().size(), 3); + + delete attributes_processor; } #endif \ No newline at end of file diff --git a/sdk/test/metrics/sync_metric_storage_test.cc b/sdk/test/metrics/sync_metric_storage_test.cc index d2597bdb37..23ef20b11d 100644 --- a/sdk/test/metrics/sync_metric_storage_test.cc +++ b/sdk/test/metrics/sync_metric_storage_test.cc @@ -25,8 +25,6 @@ TEST(WritableMetricStorageTest, BasicTests) EXPECT_NO_THROW(storage.RecordLong( 10l, opentelemetry::common::KeyValueIterableView({{"abc", "123"}, {"xyz", "456"}}))); - MetricCollector collector; - std::vector collectors; EXPECT_NO_THROW(storage.RecordDouble(10.10, opentelemetry::common::KeyValueIterableView({}))); } #endif From 8b4b3943a2ce15246886f9fd4a3ac6b0c2649567 Mon Sep 17 00:00:00 2001 From: Lalit Date: Wed, 9 Mar 2022 20:30:08 -0800 Subject: [PATCH 7/7] fix --- sdk/test/metrics/async_metric_storage_test.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/test/metrics/async_metric_storage_test.cc b/sdk/test/metrics/async_metric_storage_test.cc index 8f246b8566..fd2a41d325 100644 --- a/sdk/test/metrics/async_metric_storage_test.cc +++ b/sdk/test/metrics/async_metric_storage_test.cc @@ -30,12 +30,12 @@ TEST(AsyncMetricStorageTest, BasicTests) InstrumentValueType::kLong}; auto instrumentation_library = InstrumentationLibrary::Create("instr_lib"); auto resource = Resource::Create({}); - MetricCollector *collector; + MetricCollector collector; std::vector collectors; opentelemetry::sdk::metrics::AsyncMetricStorage storage( instr_desc, AggregationType::kSum, &measurement_fetch, new DefaultAttributesProcessor()); - EXPECT_NO_THROW(storage.Collect(collector, collectors, instrumentation_library.get(), &resource, + EXPECT_NO_THROW(storage.Collect(&collector, collectors, instrumentation_library.get(), &resource, metric_callback)); } #endif \ No newline at end of file