Skip to content

Commit 93950bf

Browse files
committed
Add unit test for custom configurator
1 parent 2c55339 commit 93950bf

File tree

1 file changed

+36
-2
lines changed

1 file changed

+36
-2
lines changed

sdk/test/trace/tracer_test.cc

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,8 @@ std::shared_ptr<opentelemetry::trace::Tracer> initTracer(
150150
Sampler *sampler,
151151
IdGenerator *id_generator = new RandomIdGenerator,
152152
const ScopeConfigurator<TracerConfig> &tracer_configurator =
153-
TracerConfig::DefaultConfigurator())
153+
TracerConfig::DefaultConfigurator(),
154+
std::unique_ptr<InstrumentationScope> scope = InstrumentationScope::Create(""))
154155
{
155156
auto processor = std::unique_ptr<SpanProcessor>(new SimpleSpanProcessor(std::move(exporter)));
156157
std::vector<std::unique_ptr<SpanProcessor>> processors;
@@ -160,7 +161,7 @@ std::shared_ptr<opentelemetry::trace::Tracer> initTracer(
160161
std::move(processors), resource, std::unique_ptr<Sampler>(sampler),
161162
std::unique_ptr<IdGenerator>(id_generator),
162163
std::make_unique<ScopeConfigurator<TracerConfig>>(tracer_configurator));
163-
return std::shared_ptr<opentelemetry::trace::Tracer>(new Tracer(context));
164+
return std::shared_ptr<opentelemetry::trace::Tracer>(new Tracer(context, std::move(scope)));
164165
}
165166

166167
} // namespace
@@ -536,6 +537,39 @@ TEST(Tracer, StartSpanWithEnabledConfig)
536537
#endif
537538
}
538539

540+
TEST(Tracer, StartSpanWithCustomConfig)
541+
{
542+
#ifdef OPENTELEMETRY_RTTI_ENABLED
543+
InMemorySpanExporter *exporter = new InMemorySpanExporter();
544+
std::shared_ptr<InMemorySpanData> span_data = exporter->GetData();
545+
ScopeConfigurator<TracerConfig> custom_configurator = [](const InstrumentationScope &scope) {
546+
if (scope.GetName() == "" || scope.GetName() == "foo_library")
547+
{
548+
return TracerConfig::Disabled();
549+
}
550+
return TracerConfig::Enabled();
551+
};
552+
auto tracer_default_scope =
553+
initTracer(std::unique_ptr<SpanExporter>{exporter}, new AlwaysOnSampler(),
554+
new RandomIdGenerator(), custom_configurator);
555+
auto span_default_scope = tracer_default_scope->StartSpan("span 1");
556+
auto &span_default_scope_ref = *span_default_scope.get();
557+
EXPECT_NE(typeid(span_default_scope), typeid(trace_api::Span));
558+
EXPECT_EQ(typeid(span_default_scope), typeid(trace_api::NoopSpan));
559+
560+
auto foo_scope = InstrumentationScope::Create("foo_library");
561+
auto tracer_foo_scope =
562+
initTracer(std::unique_ptr<SpanExporter>{exporter}, new AlwaysOnSampler(),
563+
new RandomIdGenerator(), custom_configurator, std::move(foo_scope));
564+
auto span_foo_scope = tracer_foo_scope->StartSpan("span 1");
565+
auto &span_foo_scope_ref = *span_foo_scope.get();
566+
EXPECT_NE(typeid(span_foo_scope), typeid(trace_api::Span));
567+
EXPECT_EQ(typeid(span_foo_scope), typeid(trace_api::NoopSpan));
568+
#else
569+
GTEST_SKIP() << "cannot use 'typeid' with '-fno-rtti'";
570+
#endif
571+
}
572+
539573
TEST(Tracer, SpanSetLinks)
540574
{
541575
InMemorySpanExporter *exporter = new InMemorySpanExporter();

0 commit comments

Comments
 (0)