Skip to content

Commit 085ad96

Browse files
committed
Use MetricCollectorTest friend class
1 parent dd8c41f commit 085ad96

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
@@ -29,6 +29,11 @@
2929
# include "opentelemetry/sdk/metrics/exemplar/filter_type.h"
3030
#endif
3131

32+
namespace testing
33+
{
34+
class MetricCollectorTest;
35+
}
36+
3237
OPENTELEMETRY_BEGIN_NAMESPACE
3338
namespace sdk
3439
{
@@ -113,15 +118,13 @@ class MeterContext : public std::enable_shared_from_this<MeterContext>
113118
* @param reader The MetricReader for which a MetricCollector is to be created. This must not be a
114119
* nullptr.
115120
* @param metric_filter The optional MetricFilter used when creating the MetricCollector.
116-
* @return The MetricCollector created.
117121
*
118122
* Note: This reader may not receive any in-flight meter data, but will get newly created meter
119123
* data.
120124
* Note: This method is not thread safe, and should ideally be called from main thread.
121125
*/
122-
std::weak_ptr<MetricCollector> AddMetricReader(
123-
std::shared_ptr<MetricReader> reader,
124-
std::unique_ptr<MetricFilter> metric_filter = nullptr) noexcept;
126+
void AddMetricReader(std::shared_ptr<MetricReader> reader,
127+
std::unique_ptr<MetricFilter> metric_filter = nullptr) noexcept;
125128

126129
/**
127130
* Attaches a View to list of configured Views for this Meter context.
@@ -168,6 +171,8 @@ class MeterContext : public std::enable_shared_from_this<MeterContext>
168171
bool Shutdown(std::chrono::microseconds timeout = (std::chrono::microseconds::max)()) noexcept;
169172

170173
private:
174+
friend class ::testing::MetricCollectorTest;
175+
171176
opentelemetry::sdk::resource::Resource resource_;
172177
std::vector<std::shared_ptr<CollectorHandle>> collectors_;
173178
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
@@ -94,15 +94,13 @@ class OPENTELEMETRY_EXPORT MeterProvider final : public opentelemetry::metrics::
9494
* @param reader The MetricReader for which a MetricCollector is to be created. This must not be a
9595
* nullptr.
9696
* @param metric_filter The optional MetricFilter used when creating the MetricCollector.
97-
* @return The MetricCollector created.
9897
*
9998
* Note: This reader may not receive any in-flight meter data, but will get newly created meter
10099
* data.
101100
* Note: This method is not thread safe, and should ideally be called from main thread.
102101
*/
103-
std::weak_ptr<MetricCollector> AddMetricReader(
104-
std::shared_ptr<MetricReader> reader,
105-
std::unique_ptr<MetricFilter> metric_filter = nullptr) noexcept;
102+
void AddMetricReader(std::shared_ptr<MetricReader> reader,
103+
std::unique_ptr<MetricFilter> metric_filter = nullptr) noexcept;
106104

107105
/**
108106
* 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
@@ -93,14 +93,12 @@ opentelemetry::common::SystemTimestamp MeterContext::GetSDKStartTime() noexcept
9393
return sdk_start_ts_;
9494
}
9595

96-
std::weak_ptr<MetricCollector> MeterContext::AddMetricReader(
97-
std::shared_ptr<MetricReader> reader,
98-
std::unique_ptr<MetricFilter> metric_filter) noexcept
96+
void MeterContext::AddMetricReader(std::shared_ptr<MetricReader> reader,
97+
std::unique_ptr<MetricFilter> metric_filter) noexcept
9998
{
10099
auto collector = std::shared_ptr<MetricCollector>{
101100
new MetricCollector(this, std::move(reader), std::move(metric_filter))};
102101
collectors_.push_back(collector);
103-
return std::weak_ptr<MetricCollector>(collector);
104102
}
105103

106104
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
@@ -113,11 +113,10 @@ const resource::Resource &MeterProvider::GetResource() const noexcept
113113
return context_->GetResource();
114114
}
115115

116-
std::weak_ptr<MetricCollector> MeterProvider::AddMetricReader(
117-
std::shared_ptr<MetricReader> reader,
118-
std::unique_ptr<MetricFilter> metric_filter) noexcept
116+
void MeterProvider::AddMetricReader(std::shared_ptr<MetricReader> reader,
117+
std::unique_ptr<MetricFilter> metric_filter) noexcept
119118
{
120-
return context_->AddMetricReader(std::move(reader), std::move(metric_filter));
119+
context_->AddMetricReader(std::move(reader), std::move(metric_filter));
121120
}
122121

123122
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)