2525
2626# include " opentelemetry/exporters/otlp/protobuf_include_suffix.h"
2727
28+ # include " opentelemetry/exporters/otlp/otlp_grpc_client.h"
29+ # include " opentelemetry/exporters/otlp/otlp_grpc_client_factory.h"
30+
2831# include " opentelemetry/sdk/trace/simple_processor.h"
2932# include " opentelemetry/sdk/trace/tracer_provider.h"
3033# include " opentelemetry/trace/provider.h"
@@ -50,12 +53,34 @@ class OtlpGrpcMetricExporterTestPeer : public ::testing::Test
5053{
5154public:
5255 std::unique_ptr<sdk::metrics::PushMetricExporter> GetExporter (
53- std::unique_ptr<proto::collector::metrics::v1::MetricsService::StubInterface> &stub_interface)
56+ const OtlpGrpcMetricExporterOptions &options)
57+ {
58+ return std::unique_ptr<sdk::metrics::PushMetricExporter>(new OtlpGrpcMetricExporter (options));
59+ }
60+
61+ std::unique_ptr<sdk::metrics::PushMetricExporter> GetExporter (
62+ std::unique_ptr<proto::collector::metrics::v1::MetricsService::StubInterface> stub_interface)
5463 {
5564 return std::unique_ptr<sdk::metrics::PushMetricExporter>(
5665 new OtlpGrpcMetricExporter (std::move (stub_interface)));
5766 }
5867
68+ std::unique_ptr<sdk::metrics::PushMetricExporter> GetExporter (
69+ std::unique_ptr<proto::collector::metrics::v1::MetricsService::StubInterface> stub_interface,
70+ std::shared_ptr<OtlpGrpcClient> client)
71+ {
72+ return std::unique_ptr<sdk::metrics::PushMetricExporter>(
73+ new OtlpGrpcMetricExporter (std::move (stub_interface), std::move (client)));
74+ }
75+
76+ std::unique_ptr<sdk::metrics::PushMetricExporter> GetExporter (
77+ const OtlpGrpcMetricExporterOptions &options,
78+ std::shared_ptr<OtlpGrpcClient> client)
79+ {
80+ return std::unique_ptr<sdk::metrics::PushMetricExporter>(
81+ new OtlpGrpcMetricExporter (options, std::move (client)));
82+ }
83+
5984 // Get the options associated with the given exporter.
6085 const OtlpGrpcMetricExporterOptions &GetOptions (std::unique_ptr<OtlpGrpcMetricExporter> &exporter)
6186 {
@@ -204,6 +229,35 @@ TEST_F(OtlpGrpcMetricExporterTestPeer, ConfigUnknownInsecureFromEnv)
204229}
205230# endif
206231
232+ TEST_F (OtlpGrpcMetricExporterTestPeer, CheckGetAggregationTemporality)
233+ {
234+ auto options = OtlpGrpcMetricExporterOptions ();
235+ options.aggregation_temporality = PreferredAggregationTemporality::kCumulative ;
236+
237+ auto client = OtlpGrpcClientFactory::Create (options);
238+
239+ auto exporter0 = GetExporter (options);
240+ auto exporter1 = GetExporter (client->MakeMetricsServiceStub ());
241+ auto exporter2 = GetExporter (options, client);
242+ auto exporter3 = GetExporter (client->MakeMetricsServiceStub (), client);
243+
244+ EXPECT_EQ (
245+ opentelemetry::sdk::metrics::AggregationTemporality::kCumulative ,
246+ exporter0->GetAggregationTemporality (opentelemetry::sdk::metrics::InstrumentType::kCounter ));
247+
248+ EXPECT_EQ (
249+ opentelemetry::sdk::metrics::AggregationTemporality::kCumulative ,
250+ exporter1->GetAggregationTemporality (opentelemetry::sdk::metrics::InstrumentType::kCounter ));
251+
252+ EXPECT_EQ (
253+ opentelemetry::sdk::metrics::AggregationTemporality::kCumulative ,
254+ exporter2->GetAggregationTemporality (opentelemetry::sdk::metrics::InstrumentType::kCounter ));
255+
256+ EXPECT_EQ (
257+ opentelemetry::sdk::metrics::AggregationTemporality::kCumulative ,
258+ exporter3->GetAggregationTemporality (opentelemetry::sdk::metrics::InstrumentType::kCounter ));
259+ }
260+
207261} // namespace otlp
208262} // namespace exporter
209263OPENTELEMETRY_END_NAMESPACE
0 commit comments