Skip to content

Commit ca24682

Browse files
committed
Use TestMeterContext friend class
1 parent dca7b29 commit ca24682

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
@@ -109,11 +109,10 @@ const resource::Resource &MeterProvider::GetResource() const noexcept
109109
return context_->GetResource();
110110
}
111111

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

119118
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
@@ -85,7 +85,22 @@ MetricFilter::TestAttributesFn DropAllTestAttributesFn()
8585

8686
} // namespace
8787

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

95110
auto filter = MetricFilter::Create(AcceptAllTestMetricFn(), DropAllTestAttributesFn());
96111
auto reader = std::shared_ptr<MetricReader>(new MockMetricReader());
97-
auto collector = context->AddMetricReader(reader, std::move(filter)).lock();
112+
auto collector = AddMetricReaderToMeterContext(context, reader, std::move(filter)).lock();
98113

99114
auto instrument_1_name = "instrument_1";
100115
auto instrument_1 = meter->CreateUInt64Counter(instrument_1_name);
@@ -136,7 +151,7 @@ TEST(MetricCollectorTest, CollectWithMetricFilterTestMetricTest1)
136151
}
137152
}
138153

139-
TEST(MetricCollectorTest, CollectWithMetricFilterTestMetricTest2)
154+
TEST_F(MetricCollectorTest, CollectWithMetricFilterTestMetricTest2)
140155
{
141156
auto context = std::shared_ptr<MeterContext>(new MeterContext(ViewRegistryFactory::Create()));
142157
auto scope = InstrumentationScope::Create("CollectWithMetricFilterTestMetricTest2");
@@ -145,7 +160,7 @@ TEST(MetricCollectorTest, CollectWithMetricFilterTestMetricTest2)
145160

146161
auto filter = MetricFilter::Create(DropAllTestMetricFn(), AcceptAllTestAttributesFn());
147162
auto reader = std::shared_ptr<MetricReader>(new MockMetricReader());
148-
auto collector = context->AddMetricReader(reader, std::move(filter)).lock();
163+
auto collector = AddMetricReaderToMeterContext(context, reader, std::move(filter)).lock();
149164

150165
auto instrument_1_name = "instrument_1";
151166
auto instrument_1 = meter->CreateUInt64Counter(instrument_1_name);
@@ -172,7 +187,7 @@ TEST(MetricCollectorTest, CollectWithMetricFilterTestMetricTest2)
172187
EXPECT_EQ(resource_metrics.scope_metric_data_.size(), 0);
173188
}
174189

175-
TEST(MetricCollectorTest, CollectWithMetricFilterTestMetricTest3)
190+
TEST_F(MetricCollectorTest, CollectWithMetricFilterTestMetricTest3)
176191
{
177192
auto context = std::shared_ptr<MeterContext>(new MeterContext(ViewRegistryFactory::Create()));
178193
auto scope = InstrumentationScope::Create("CollectWithMetricFilterTestMetricTest3");
@@ -191,7 +206,7 @@ TEST(MetricCollectorTest, CollectWithMetricFilterTestMetricTest3)
191206
};
192207
auto filter = MetricFilter::Create(test_metric_fn, DropAllTestAttributesFn());
193208
auto reader = std::shared_ptr<MetricReader>(new MockMetricReader());
194-
auto collector = context->AddMetricReader(reader, std::move(filter)).lock();
209+
auto collector = AddMetricReaderToMeterContext(context, reader, std::move(filter)).lock();
195210

196211
auto instrument_1_name = "instrument_1";
197212
auto instrument_1 = meter->CreateUInt64Counter(instrument_1_name);
@@ -226,7 +241,7 @@ TEST(MetricCollectorTest, CollectWithMetricFilterTestMetricTest3)
226241
}
227242
}
228243

229-
TEST(MetricCollectorTest, CollectWithMetricFilterTestAttributesTest1)
244+
TEST_F(MetricCollectorTest, CollectWithMetricFilterTestAttributesTest1)
230245
{
231246
auto context = std::shared_ptr<MeterContext>(new MeterContext(ViewRegistryFactory::Create()));
232247
auto scope = InstrumentationScope::Create("CollectWithMetricFilterTestAttributesTest1");
@@ -245,7 +260,7 @@ TEST(MetricCollectorTest, CollectWithMetricFilterTestAttributesTest1)
245260
};
246261
auto filter = MetricFilter::Create(AcceptPartialAllTestMetricFn(), test_attributes_fn);
247262
auto reader = std::shared_ptr<MetricReader>(new MockMetricReader());
248-
auto collector = context->AddMetricReader(reader, std::move(filter)).lock();
263+
auto collector = AddMetricReaderToMeterContext(context, reader, std::move(filter)).lock();
249264

250265
auto instrument_1_name = "instrument_1";
251266
auto instrument_1 = meter->CreateUInt64Counter(instrument_1_name);
@@ -309,7 +324,7 @@ TEST(MetricCollectorTest, CollectWithMetricFilterTestAttributesTest1)
309324
}
310325
}
311326

312-
TEST(MetricCollectorTest, CollectWithMetricFilterTestAttributesTest2)
327+
TEST_F(MetricCollectorTest, CollectWithMetricFilterTestAttributesTest2)
313328
{
314329
auto context = std::shared_ptr<MeterContext>(new MeterContext(ViewRegistryFactory::Create()));
315330
auto scope = InstrumentationScope::Create("CollectWithMetricFilterTestAttributesTest2");
@@ -332,7 +347,7 @@ TEST(MetricCollectorTest, CollectWithMetricFilterTestAttributesTest2)
332347
};
333348
auto filter = MetricFilter::Create(AcceptPartialAllTestMetricFn(), test_attributes_fn);
334349
auto reader = std::shared_ptr<MetricReader>(new MockMetricReader());
335-
auto collector = context->AddMetricReader(reader, std::move(filter)).lock();
350+
auto collector = AddMetricReaderToMeterContext(context, reader, std::move(filter)).lock();
336351

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

0 commit comments

Comments
 (0)