2727
2828# include " opentelemetry/exporters/otlp/protobuf_include_suffix.h"
2929
30+ # include " opentelemetry/exporters/otlp/otlp_grpc_client.h"
31+ # include " opentelemetry/exporters/otlp/otlp_grpc_client_factory.h"
32+
3033# include " opentelemetry/sdk/trace/simple_processor.h"
3134# include " opentelemetry/sdk/trace/tracer_provider.h"
3235# include " opentelemetry/trace/provider.h"
@@ -52,12 +55,34 @@ class OtlpGrpcMetricExporterTestPeer : public ::testing::Test
5255{
5356public:
5457 std::unique_ptr<sdk::metrics::PushMetricExporter> GetExporter (
55- std::unique_ptr<proto::collector::metrics::v1::MetricsService::StubInterface> &stub_interface)
58+ const OtlpGrpcMetricExporterOptions &options)
59+ {
60+ return std::unique_ptr<sdk::metrics::PushMetricExporter>(new OtlpGrpcMetricExporter (options));
61+ }
62+
63+ std::unique_ptr<sdk::metrics::PushMetricExporter> GetExporter (
64+ std::unique_ptr<proto::collector::metrics::v1::MetricsService::StubInterface> stub_interface)
5665 {
5766 return std::unique_ptr<sdk::metrics::PushMetricExporter>(
5867 new OtlpGrpcMetricExporter (std::move (stub_interface)));
5968 }
6069
70+ std::unique_ptr<sdk::metrics::PushMetricExporter> GetExporter (
71+ std::unique_ptr<proto::collector::metrics::v1::MetricsService::StubInterface> stub_interface,
72+ std::shared_ptr<OtlpGrpcClient> client)
73+ {
74+ return std::unique_ptr<sdk::metrics::PushMetricExporter>(
75+ new OtlpGrpcMetricExporter (std::move (stub_interface), std::move (client)));
76+ }
77+
78+ std::unique_ptr<sdk::metrics::PushMetricExporter> GetExporter (
79+ const OtlpGrpcMetricExporterOptions &options,
80+ std::shared_ptr<OtlpGrpcClient> client)
81+ {
82+ return std::unique_ptr<sdk::metrics::PushMetricExporter>(
83+ new OtlpGrpcMetricExporter (options, std::move (client)));
84+ }
85+
6186 // Get the options associated with the given exporter.
6287 const OtlpGrpcMetricExporterOptions &GetOptions (std::unique_ptr<OtlpGrpcMetricExporter> &exporter)
6388 {
@@ -206,6 +231,35 @@ TEST_F(OtlpGrpcMetricExporterTestPeer, ConfigUnknownInsecureFromEnv)
206231}
207232# endif
208233
234+ TEST_F (OtlpGrpcMetricExporterTestPeer, CheckGetAggregationTemporality)
235+ {
236+ auto options = OtlpGrpcMetricExporterOptions ();
237+ options.aggregation_temporality = PreferredAggregationTemporality::kCumulative ;
238+
239+ auto client = OtlpGrpcClientFactory::Create (options);
240+
241+ auto exporter0 = GetExporter (options);
242+ auto exporter1 = GetExporter (client->MakeMetricsServiceStub ());
243+ auto exporter2 = GetExporter (options, client);
244+ auto exporter3 = GetExporter (client->MakeMetricsServiceStub (), client);
245+
246+ EXPECT_EQ (
247+ opentelemetry::sdk::metrics::AggregationTemporality::kCumulative ,
248+ exporter0->GetAggregationTemporality (opentelemetry::sdk::metrics::InstrumentType::kCounter ));
249+
250+ EXPECT_EQ (
251+ opentelemetry::sdk::metrics::AggregationTemporality::kCumulative ,
252+ exporter1->GetAggregationTemporality (opentelemetry::sdk::metrics::InstrumentType::kCounter ));
253+
254+ EXPECT_EQ (
255+ opentelemetry::sdk::metrics::AggregationTemporality::kCumulative ,
256+ exporter2->GetAggregationTemporality (opentelemetry::sdk::metrics::InstrumentType::kCounter ));
257+
258+ EXPECT_EQ (
259+ opentelemetry::sdk::metrics::AggregationTemporality::kCumulative ,
260+ exporter3->GetAggregationTemporality (opentelemetry::sdk::metrics::InstrumentType::kCounter ));
261+ }
262+
209263} // namespace otlp
210264} // namespace exporter
211265OPENTELEMETRY_END_NAMESPACE
0 commit comments