Skip to content

Commit 8dd3291

Browse files
committed
Use MetricCollectorTest friend class
1 parent 7adce40 commit 8dd3291

File tree

5 files changed

+41
-26
lines changed

5 files changed

+41
-26
lines changed

sdk/include/opentelemetry/sdk/metrics/meter_context.h

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@
2727
# include "opentelemetry/sdk/metrics/exemplar/filter_type.h"
2828
#endif
2929

30+
namespace testing
31+
{
32+
class MetricCollectorTest;
33+
}
34+
3035
OPENTELEMETRY_BEGIN_NAMESPACE
3136
namespace sdk
3237
{
@@ -102,15 +107,13 @@ class MeterContext : public std::enable_shared_from_this<MeterContext>
102107
* @param reader The MetricReader for which a MetricCollector is to be created. This must not be a
103108
* nullptr.
104109
* @param metric_filter The optional MetricFilter used when creating the MetricCollector.
105-
* @return The MetricCollector created.
106110
*
107111
* Note: This reader may not receive any in-flight meter data, but will get newly created meter
108112
* data.
109113
* Note: This method is not thread safe, and should ideally be called from main thread.
110114
*/
111-
std::weak_ptr<MetricCollector> AddMetricReader(
112-
std::shared_ptr<MetricReader> reader,
113-
std::unique_ptr<MetricFilter> metric_filter = nullptr) noexcept;
115+
void AddMetricReader(std::shared_ptr<MetricReader> reader,
116+
std::unique_ptr<MetricFilter> metric_filter = nullptr) noexcept;
114117

115118
/**
116119
* Attaches a View to list of configured Views for this Meter context.
@@ -157,6 +160,8 @@ class MeterContext : public std::enable_shared_from_this<MeterContext>
157160
bool Shutdown(std::chrono::microseconds timeout = (std::chrono::microseconds::max)()) noexcept;
158161

159162
private:
163+
friend class ::testing::MetricCollectorTest;
164+
160165
opentelemetry::sdk::resource::Resource resource_;
161166
std::vector<std::shared_ptr<CollectorHandle>> collectors_;
162167
std::unique_ptr<ViewRegistry> views_;

sdk/include/opentelemetry/sdk/metrics/meter_provider.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,15 +85,13 @@ class OPENTELEMETRY_EXPORT MeterProvider final : public opentelemetry::metrics::
8585
* @param reader The MetricReader for which a MetricCollector is to be created. This must not be a
8686
* nullptr.
8787
* @param metric_filter The optional MetricFilter used when creating the MetricCollector.
88-
* @return The MetricCollector created.
8988
*
9089
* Note: This reader may not receive any in-flight meter data, but will get newly created meter
9190
* data.
9291
* Note: This method is not thread safe, and should ideally be called from main thread.
9392
*/
94-
std::weak_ptr<MetricCollector> AddMetricReader(
95-
std::shared_ptr<MetricReader> reader,
96-
std::unique_ptr<MetricFilter> metric_filter = nullptr) noexcept;
93+
void AddMetricReader(std::shared_ptr<MetricReader> reader,
94+
std::unique_ptr<MetricFilter> metric_filter = nullptr) noexcept;
9795

9896
/**
9997
* Attaches a View to list of configured Views for this Meter provider.

sdk/src/metrics/meter_context.cc

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,12 @@ opentelemetry::common::SystemTimestamp MeterContext::GetSDKStartTime() noexcept
8080
return sdk_start_ts_;
8181
}
8282

83-
std::weak_ptr<MetricCollector> MeterContext::AddMetricReader(
84-
std::shared_ptr<MetricReader> reader,
85-
std::unique_ptr<MetricFilter> metric_filter) noexcept
83+
void MeterContext::AddMetricReader(std::shared_ptr<MetricReader> reader,
84+
std::unique_ptr<MetricFilter> metric_filter) noexcept
8685
{
8786
auto collector = std::shared_ptr<MetricCollector>{
8887
new MetricCollector(this, std::move(reader), std::move(metric_filter))};
8988
collectors_.push_back(collector);
90-
return std::weak_ptr<MetricCollector>(collector);
9189
}
9290

9391
void MeterContext::AddView(std::unique_ptr<InstrumentSelector> instrument_selector,

sdk/src/metrics/meter_provider.cc

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,10 @@ const resource::Resource &MeterProvider::GetResource() const noexcept
108108
return context_->GetResource();
109109
}
110110

111-
std::weak_ptr<MetricCollector> MeterProvider::AddMetricReader(
112-
std::shared_ptr<MetricReader> reader,
113-
std::unique_ptr<MetricFilter> metric_filter) noexcept
111+
void MeterProvider::AddMetricReader(std::shared_ptr<MetricReader> reader,
112+
std::unique_ptr<MetricFilter> metric_filter) noexcept
114113
{
115-
return context_->AddMetricReader(std::move(reader), std::move(metric_filter));
114+
context_->AddMetricReader(std::move(reader), std::move(metric_filter));
116115
}
117116

118117
void MeterProvider::AddView(std::unique_ptr<InstrumentSelector> instrument_selector,

sdk/test/metrics/metric_collector_test.cc

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,22 @@ MetricFilter::TestAttributesFn DropAllTestAttributesFn()
8686

8787
} // namespace
8888

89-
TEST(MetricCollectorTest, CollectWithMetricFilterTestMetricTest1)
89+
class testing::MetricCollectorTest : public Test
90+
{
91+
public:
92+
std::weak_ptr<MetricCollector> AddMetricReaderToMeterContext(
93+
std::shared_ptr<MeterContext> context,
94+
std::shared_ptr<MetricReader> reader,
95+
std::unique_ptr<MetricFilter> metric_filter = nullptr) noexcept
96+
{
97+
auto collector = std::shared_ptr<MetricCollector>{
98+
new MetricCollector(context.get(), std::move(reader), std::move(metric_filter))};
99+
context->collectors_.push_back(collector);
100+
return std::weak_ptr<MetricCollector>(collector);
101+
}
102+
};
103+
104+
TEST_F(MetricCollectorTest, CollectWithMetricFilterTestMetricTest1)
90105
{
91106
auto context = std::shared_ptr<MeterContext>(new MeterContext(ViewRegistryFactory::Create()));
92107
auto scope = InstrumentationScope::Create("CollectWithMetricFilterTestMetricTest1");
@@ -95,7 +110,7 @@ TEST(MetricCollectorTest, CollectWithMetricFilterTestMetricTest1)
95110

96111
auto filter = MetricFilter::Create(AcceptAllTestMetricFn(), DropAllTestAttributesFn());
97112
auto reader = std::shared_ptr<MetricReader>(new MockMetricReader());
98-
auto collector = context->AddMetricReader(reader, std::move(filter)).lock();
113+
auto collector = AddMetricReaderToMeterContext(context, reader, std::move(filter)).lock();
99114

100115
auto instrument_1_name = "instrument_1";
101116
auto instrument_1 = meter->CreateUInt64Counter(instrument_1_name);
@@ -137,7 +152,7 @@ TEST(MetricCollectorTest, CollectWithMetricFilterTestMetricTest1)
137152
}
138153
}
139154

140-
TEST(MetricCollectorTest, CollectWithMetricFilterTestMetricTest2)
155+
TEST_F(MetricCollectorTest, CollectWithMetricFilterTestMetricTest2)
141156
{
142157
auto context = std::shared_ptr<MeterContext>(new MeterContext(ViewRegistryFactory::Create()));
143158
auto scope = InstrumentationScope::Create("CollectWithMetricFilterTestMetricTest2");
@@ -146,7 +161,7 @@ TEST(MetricCollectorTest, CollectWithMetricFilterTestMetricTest2)
146161

147162
auto filter = MetricFilter::Create(DropAllTestMetricFn(), AcceptAllTestAttributesFn());
148163
auto reader = std::shared_ptr<MetricReader>(new MockMetricReader());
149-
auto collector = context->AddMetricReader(reader, std::move(filter)).lock();
164+
auto collector = AddMetricReaderToMeterContext(context, reader, std::move(filter)).lock();
150165

151166
auto instrument_1_name = "instrument_1";
152167
auto instrument_1 = meter->CreateUInt64Counter(instrument_1_name);
@@ -173,7 +188,7 @@ TEST(MetricCollectorTest, CollectWithMetricFilterTestMetricTest2)
173188
EXPECT_EQ(resource_metrics.scope_metric_data_.size(), 0);
174189
}
175190

176-
TEST(MetricCollectorTest, CollectWithMetricFilterTestMetricTest3)
191+
TEST_F(MetricCollectorTest, CollectWithMetricFilterTestMetricTest3)
177192
{
178193
auto context = std::shared_ptr<MeterContext>(new MeterContext(ViewRegistryFactory::Create()));
179194
auto scope = InstrumentationScope::Create("CollectWithMetricFilterTestMetricTest3");
@@ -192,7 +207,7 @@ TEST(MetricCollectorTest, CollectWithMetricFilterTestMetricTest3)
192207
};
193208
auto filter = MetricFilter::Create(test_metric_fn, DropAllTestAttributesFn());
194209
auto reader = std::shared_ptr<MetricReader>(new MockMetricReader());
195-
auto collector = context->AddMetricReader(reader, std::move(filter)).lock();
210+
auto collector = AddMetricReaderToMeterContext(context, reader, std::move(filter)).lock();
196211

197212
auto instrument_1_name = "instrument_1";
198213
auto instrument_1 = meter->CreateUInt64Counter(instrument_1_name);
@@ -227,7 +242,7 @@ TEST(MetricCollectorTest, CollectWithMetricFilterTestMetricTest3)
227242
}
228243
}
229244

230-
TEST(MetricCollectorTest, CollectWithMetricFilterTestAttributesTest1)
245+
TEST_F(MetricCollectorTest, CollectWithMetricFilterTestAttributesTest1)
231246
{
232247
auto context = std::shared_ptr<MeterContext>(new MeterContext(ViewRegistryFactory::Create()));
233248
auto scope = InstrumentationScope::Create("CollectWithMetricFilterTestAttributesTest1");
@@ -246,7 +261,7 @@ TEST(MetricCollectorTest, CollectWithMetricFilterTestAttributesTest1)
246261
};
247262
auto filter = MetricFilter::Create(AcceptPartialAllTestMetricFn(), test_attributes_fn);
248263
auto reader = std::shared_ptr<MetricReader>(new MockMetricReader());
249-
auto collector = context->AddMetricReader(reader, std::move(filter)).lock();
264+
auto collector = AddMetricReaderToMeterContext(context, reader, std::move(filter)).lock();
250265

251266
auto instrument_1_name = "instrument_1";
252267
auto instrument_1 = meter->CreateUInt64Counter(instrument_1_name);
@@ -310,7 +325,7 @@ TEST(MetricCollectorTest, CollectWithMetricFilterTestAttributesTest1)
310325
}
311326
}
312327

313-
TEST(MetricCollectorTest, CollectWithMetricFilterTestAttributesTest2)
328+
TEST_F(MetricCollectorTest, CollectWithMetricFilterTestAttributesTest2)
314329
{
315330
auto context = std::shared_ptr<MeterContext>(new MeterContext(ViewRegistryFactory::Create()));
316331
auto scope = InstrumentationScope::Create("CollectWithMetricFilterTestAttributesTest2");
@@ -333,7 +348,7 @@ TEST(MetricCollectorTest, CollectWithMetricFilterTestAttributesTest2)
333348
};
334349
auto filter = MetricFilter::Create(AcceptPartialAllTestMetricFn(), test_attributes_fn);
335350
auto reader = std::shared_ptr<MetricReader>(new MockMetricReader());
336-
auto collector = context->AddMetricReader(reader, std::move(filter)).lock();
351+
auto collector = AddMetricReaderToMeterContext(context, reader, std::move(filter)).lock();
337352

338353
auto instrument_1_name = "instrument_1";
339354
auto instrument_1 = meter->CreateUInt64Counter(instrument_1_name);

0 commit comments

Comments
 (0)