From 5bc053e52280281736a4a07aec73d4f5f3500425 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Wed, 5 Feb 2025 21:42:51 +0100 Subject: [PATCH] [SDK] Support OTEL_SDK_DISABLED environment variable (#3245) --- CHANGELOG.md | 22 +++++ api/include/opentelemetry/metrics/provider.h | 4 +- api/test/metrics/meter_provider_test.cc | 1 + examples/batch/main.cc | 5 +- examples/grpc/tracer_common.h | 5 +- examples/http/tracer_common.h | 24 ++--- examples/logs_simple/main.cc | 12 +-- examples/metrics_simple/metrics_ostream.cc | 6 +- examples/multi_processor/main.cc | 6 +- examples/multithreaded/main.cc | 5 +- examples/otlp/file_log_main.cc | 12 +-- examples/otlp/file_main.cc | 6 +- examples/otlp/file_metric_main.cc | 18 ++-- examples/otlp/grpc_log_main.cc | 10 ++- examples/otlp/grpc_main.cc | 5 +- examples/otlp/grpc_metric_main.cc | 5 +- examples/otlp/http_instrumented_main.cc | 35 ++++---- examples/otlp/http_log_main.cc | 12 +-- examples/otlp/http_main.cc | 6 +- examples/otlp/http_metric_main.cc | 18 ++-- examples/prometheus/main.cc | 6 +- examples/simple/main.cc | 6 +- examples/zipkin/main.cc | 6 +- exporters/ostream/test/ostream_log_test.cc | 5 +- .../otlp_grpc_log_record_exporter_test.cc | 9 +- ext/src/dll/input.src | 3 + .../w3c_tracecontext_http_test_server/main.cc | 3 +- functional/otlp/func_grpc_main.cc | 5 +- functional/otlp/func_http_main.cc | 5 +- .../opentelemetry/sdk/common/disabled.h | 18 ++++ sdk/include/opentelemetry/sdk/logs/provider.h | 33 +++++++ .../opentelemetry/sdk/metrics/provider.h | 33 +++++++ .../opentelemetry/sdk/trace/provider.h | 31 +++++++ sdk/src/common/BUILD | 12 +++ sdk/src/common/CMakeLists.txt | 3 +- sdk/src/common/disabled.cc | 32 +++++++ sdk/src/logs/BUILD | 1 + sdk/src/logs/CMakeLists.txt | 1 + sdk/src/logs/provider.cc | 31 +++++++ sdk/src/metrics/BUILD | 1 + sdk/src/metrics/CMakeLists.txt | 1 + sdk/src/metrics/provider.cc | 30 +++++++ sdk/src/trace/BUILD | 1 + sdk/src/trace/CMakeLists.txt | 1 + sdk/src/trace/provider.cc | 30 +++++++ sdk/test/logs/BUILD | 16 ++++ sdk/test/logs/CMakeLists.txt | 8 +- sdk/test/logs/logger_provider_sdk_test.cc | 4 +- sdk/test/logs/logger_provider_set_test.cc | 90 +++++++++++++++++++ sdk/test/metrics/CMakeLists.txt | 1 + sdk/test/metrics/meter_provider_set_test.cc | 69 ++++++++++++++ sdk/test/trace/BUILD | 16 ++++ sdk/test/trace/CMakeLists.txt | 1 + sdk/test/trace/tracer_provider_set_test.cc | 82 +++++++++++++++++ 54 files changed, 691 insertions(+), 120 deletions(-) create mode 100644 sdk/include/opentelemetry/sdk/common/disabled.h create mode 100644 sdk/include/opentelemetry/sdk/logs/provider.h create mode 100644 sdk/include/opentelemetry/sdk/metrics/provider.h create mode 100644 sdk/include/opentelemetry/sdk/trace/provider.h create mode 100644 sdk/src/common/disabled.cc create mode 100644 sdk/src/logs/provider.cc create mode 100644 sdk/src/metrics/provider.cc create mode 100644 sdk/src/trace/provider.cc create mode 100644 sdk/test/logs/logger_provider_set_test.cc create mode 100644 sdk/test/metrics/meter_provider_set_test.cc create mode 100644 sdk/test/trace/tracer_provider_set_test.cc diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a742f353c..90ea49e17c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,28 @@ Increment the: * [SDK] Add tracer scope configurator [#3137](https://github.com/open-telemetry/opentelemetry-cpp/pull/3137) +* [SDK] Support OTEL_SDK_DISABLED environment variable + [#3245](https://github.com/open-telemetry/opentelemetry-cpp/pull/3245) + +Important changes: + +* [SDK] Support OTEL_SDK_DISABLED environment variable + [#3245](https://github.com/open-telemetry/opentelemetry-cpp/pull/3245) + + * The SDK now exposes the following new methods: + + * opentelemetry::sdk::trace::Provider::SetTracerProvider() + * opentelemetry::sdk::metrics::Provider::SetMeterProvider() + * opentelemetry::sdk::logs::Provider::SetLoggerProvider() + + * These methods do support the `OTEL_SDK_DISABLED` environment variable, + unlike the corresponding existing API Provider classes. + + * Applications are encouraged to migrate from the API to the SDK + `Provider` classes, to benefit from this feature. + + * All the example code has been updated to reflect the new usage. + ## [1.19 2025-01-22] * [PROMETHEUS_EXPORTER] Fix default for emitting otel_scope attributes diff --git a/api/include/opentelemetry/metrics/provider.h b/api/include/opentelemetry/metrics/provider.h index b8ca87843a..20a606a772 100644 --- a/api/include/opentelemetry/metrics/provider.h +++ b/api/include/opentelemetry/metrics/provider.h @@ -5,8 +5,8 @@ #include -#include "opentelemetry/common/macros.h" #include "opentelemetry/common/spin_lock_mutex.h" +#include "opentelemetry/metrics/meter_provider.h" #include "opentelemetry/metrics/noop.h" #include "opentelemetry/nostd/shared_ptr.h" #include "opentelemetry/version.h" @@ -15,8 +15,6 @@ OPENTELEMETRY_BEGIN_NAMESPACE namespace metrics { -class MeterProvider; - /** * Stores the singleton global MeterProvider. */ diff --git a/api/test/metrics/meter_provider_test.cc b/api/test/metrics/meter_provider_test.cc index 8a548a5367..639f0e8f49 100644 --- a/api/test/metrics/meter_provider_test.cc +++ b/api/test/metrics/meter_provider_test.cc @@ -3,6 +3,7 @@ #include +#include "opentelemetry/metrics/meter_provider.h" #include "opentelemetry/metrics/noop.h" #include "opentelemetry/metrics/provider.h" #include "opentelemetry/nostd/shared_ptr.h" diff --git a/examples/batch/main.cc b/examples/batch/main.cc index fbb6587202..888c17e51b 100644 --- a/examples/batch/main.cc +++ b/examples/batch/main.cc @@ -16,6 +16,7 @@ #include "opentelemetry/sdk/trace/batch_span_processor_options.h" #include "opentelemetry/sdk/trace/exporter.h" #include "opentelemetry/sdk/trace/processor.h" +#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/sdk/trace/tracer_provider.h" #include "opentelemetry/sdk/trace/tracer_provider_factory.h" #include "opentelemetry/trace/provider.h" @@ -56,13 +57,13 @@ void InitTracer() trace_sdk::TracerProviderFactory::Create(std::move(processor), resource); // Set the global trace provider. - trace_api::Provider::SetTracerProvider(provider); + trace_sdk::Provider::SetTracerProvider(provider); } void CleanupTracer() { std::shared_ptr none; - trace_api::Provider::SetTracerProvider(none); + trace_sdk::Provider::SetTracerProvider(none); } opentelemetry::nostd::shared_ptr get_tracer() diff --git a/examples/grpc/tracer_common.h b/examples/grpc/tracer_common.h index f0f99bc59b..fd931767ad 100644 --- a/examples/grpc/tracer_common.h +++ b/examples/grpc/tracer_common.h @@ -9,6 +9,7 @@ #include "opentelemetry/nostd/shared_ptr.h" #include "opentelemetry/sdk/trace/exporter.h" #include "opentelemetry/sdk/trace/processor.h" +#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/sdk/trace/simple_processor_factory.h" #include "opentelemetry/sdk/trace/tracer_context.h" #include "opentelemetry/sdk/trace/tracer_context_factory.h" @@ -85,7 +86,7 @@ void InitTracer() std::shared_ptr provider = opentelemetry::sdk::trace::TracerProviderFactory::Create(std::move(context)); // Set the global trace provider - opentelemetry::trace::Provider::SetTracerProvider(provider); + opentelemetry::sdk::trace::Provider::SetTracerProvider(provider); // set global propagator opentelemetry::context::propagation::GlobalTextMapPropagator::SetGlobalPropagator( @@ -96,7 +97,7 @@ void InitTracer() void CleanupTracer() { std::shared_ptr none; - opentelemetry::trace::Provider::SetTracerProvider(none); + opentelemetry::sdk::trace::Provider::SetTracerProvider(none); } opentelemetry::nostd::shared_ptr get_tracer(std::string tracer_name) diff --git a/examples/http/tracer_common.h b/examples/http/tracer_common.h index 8b61e7bec3..d94a754d57 100644 --- a/examples/http/tracer_common.h +++ b/examples/http/tracer_common.h @@ -3,24 +3,24 @@ #pragma once +#include +#include +#include + +#include "opentelemetry/context/propagation/global_propagator.h" +#include "opentelemetry/context/propagation/text_map_propagator.h" #include "opentelemetry/exporters/ostream/span_exporter_factory.h" +#include "opentelemetry/ext/http/client/http_client.h" +#include "opentelemetry/nostd/shared_ptr.h" #include "opentelemetry/sdk/trace/exporter.h" #include "opentelemetry/sdk/trace/processor.h" +#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/sdk/trace/simple_processor_factory.h" #include "opentelemetry/sdk/trace/tracer_context.h" #include "opentelemetry/sdk/trace/tracer_context_factory.h" #include "opentelemetry/sdk/trace/tracer_provider_factory.h" -#include "opentelemetry/trace/provider.h" - -#include "opentelemetry/context/propagation/global_propagator.h" -#include "opentelemetry/context/propagation/text_map_propagator.h" #include "opentelemetry/trace/propagation/http_trace_context.h" - -#include -#include -#include -#include "opentelemetry/ext/http/client/http_client.h" -#include "opentelemetry/nostd/shared_ptr.h" +#include "opentelemetry/trace/provider.h" namespace { @@ -75,7 +75,7 @@ void InitTracer() std::shared_ptr provider = opentelemetry::sdk::trace::TracerProviderFactory::Create(std::move(context)); // Set the global trace provider - opentelemetry::trace::Provider::SetTracerProvider(provider); + opentelemetry::sdk::trace::Provider::SetTracerProvider(provider); // set global propagator opentelemetry::context::propagation::GlobalTextMapPropagator::SetGlobalPropagator( @@ -86,7 +86,7 @@ void InitTracer() void CleanupTracer() { std::shared_ptr none; - opentelemetry::trace::Provider::SetTracerProvider(none); + opentelemetry::sdk::trace::Provider::SetTracerProvider(none); } opentelemetry::nostd::shared_ptr get_tracer(std::string tracer_name) diff --git a/examples/logs_simple/main.cc b/examples/logs_simple/main.cc index eca7d75856..275ebada10 100644 --- a/examples/logs_simple/main.cc +++ b/examples/logs_simple/main.cc @@ -7,18 +7,18 @@ #include "opentelemetry/exporters/ostream/log_record_exporter.h" #include "opentelemetry/exporters/ostream/span_exporter_factory.h" #include "opentelemetry/logs/logger_provider.h" -#include "opentelemetry/logs/provider.h" #include "opentelemetry/sdk/logs/exporter.h" #include "opentelemetry/sdk/logs/logger_provider.h" #include "opentelemetry/sdk/logs/logger_provider_factory.h" #include "opentelemetry/sdk/logs/processor.h" +#include "opentelemetry/sdk/logs/provider.h" #include "opentelemetry/sdk/logs/simple_log_record_processor_factory.h" #include "opentelemetry/sdk/trace/exporter.h" #include "opentelemetry/sdk/trace/processor.h" +#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/sdk/trace/simple_processor_factory.h" #include "opentelemetry/sdk/trace/tracer_provider.h" #include "opentelemetry/sdk/trace/tracer_provider_factory.h" -#include "opentelemetry/trace/provider.h" #include "opentelemetry/trace/tracer_provider.h" #ifdef BAZEL_BUILD @@ -48,13 +48,13 @@ void InitTracer() // Set the global trace provider const std::shared_ptr &api_provider = sdk_provider; - trace_api::Provider::SetTracerProvider(api_provider); + trace_sdk::Provider::SetTracerProvider(api_provider); } void CleanupTracer() { std::shared_ptr noop; - trace_api::Provider::SetTracerProvider(noop); + trace_sdk::Provider::SetTracerProvider(noop); } void InitLogger() @@ -69,13 +69,13 @@ void InitLogger() // Set the global logger provider const std::shared_ptr &api_provider = sdk_provider; - logs_api::Provider::SetLoggerProvider(api_provider); + logs_sdk::Provider::SetLoggerProvider(api_provider); } void CleanupLogger() { std::shared_ptr noop; - logs_api::Provider::SetLoggerProvider(noop); + logs_sdk::Provider::SetLoggerProvider(noop); } } // namespace diff --git a/examples/metrics_simple/metrics_ostream.cc b/examples/metrics_simple/metrics_ostream.cc index 3445191a58..1d85ff1692 100644 --- a/examples/metrics_simple/metrics_ostream.cc +++ b/examples/metrics_simple/metrics_ostream.cc @@ -11,7 +11,6 @@ #include "opentelemetry/common/attribute_value.h" #include "opentelemetry/exporters/ostream/metric_exporter_factory.h" #include "opentelemetry/metrics/meter_provider.h" -#include "opentelemetry/metrics/provider.h" #include "opentelemetry/sdk/metrics/aggregation/aggregation_config.h" #include "opentelemetry/sdk/metrics/export/periodic_exporting_metric_reader_factory.h" #include "opentelemetry/sdk/metrics/export/periodic_exporting_metric_reader_options.h" @@ -19,6 +18,7 @@ #include "opentelemetry/sdk/metrics/meter_provider.h" #include "opentelemetry/sdk/metrics/meter_provider_factory.h" #include "opentelemetry/sdk/metrics/metric_reader.h" +#include "opentelemetry/sdk/metrics/provider.h" #include "opentelemetry/sdk/metrics/push_metric_exporter.h" #include "opentelemetry/sdk/metrics/view/instrument_selector.h" #include "opentelemetry/sdk/metrics/view/instrument_selector_factory.h" @@ -114,13 +114,13 @@ void InitMetrics(const std::string &name) std::shared_ptr api_provider(std::move(provider)); - metrics_api::Provider::SetMeterProvider(api_provider); + metrics_sdk::Provider::SetMeterProvider(api_provider); } void CleanupMetrics() { std::shared_ptr none; - metrics_api::Provider::SetMeterProvider(none); + metrics_sdk::Provider::SetMeterProvider(none); } } // namespace diff --git a/examples/multi_processor/main.cc b/examples/multi_processor/main.cc index cae2f4a176..de01b7a749 100644 --- a/examples/multi_processor/main.cc +++ b/examples/multi_processor/main.cc @@ -16,11 +16,11 @@ #include "opentelemetry/nostd/string_view.h" #include "opentelemetry/sdk/trace/exporter.h" #include "opentelemetry/sdk/trace/processor.h" +#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/sdk/trace/simple_processor_factory.h" #include "opentelemetry/sdk/trace/span_data.h" #include "opentelemetry/sdk/trace/tracer_provider.h" #include "opentelemetry/sdk/trace/tracer_provider_factory.h" -#include "opentelemetry/trace/provider.h" #include "opentelemetry/trace/span_id.h" #include "opentelemetry/trace/span_metadata.h" #include "opentelemetry/trace/trace_id.h" @@ -55,7 +55,7 @@ std::shared_ptr InitTracer() trace_sdk::TracerProviderFactory::Create(std::move(processors)); // Set the global trace provider - trace_api::Provider::SetTracerProvider(std::move(provider)); + trace_sdk::Provider::SetTracerProvider(std::move(provider)); return data; } @@ -63,7 +63,7 @@ std::shared_ptr InitTracer() void CleanupTracer() { std::shared_ptr none; - trace_api::Provider::SetTracerProvider(none); + trace_sdk::Provider::SetTracerProvider(none); } void dumpSpans(std::vector> &spans) diff --git a/examples/multithreaded/main.cc b/examples/multithreaded/main.cc index 7e686f8ff1..c5271a474b 100644 --- a/examples/multithreaded/main.cc +++ b/examples/multithreaded/main.cc @@ -12,6 +12,7 @@ #include "opentelemetry/sdk/resource/resource.h" #include "opentelemetry/sdk/trace/exporter.h" #include "opentelemetry/sdk/trace/processor.h" +#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/sdk/trace/simple_processor_factory.h" #include "opentelemetry/sdk/trace/tracer_provider.h" #include "opentelemetry/sdk/trace/tracer_provider_factory.h" @@ -34,13 +35,13 @@ void InitTracer() trace_sdk::TracerProviderFactory::Create(std::move(processor), opentelemetry::sdk::resource::Resource::Create({})); // Set the global trace provider - trace_api::Provider::SetTracerProvider(provider); + trace_sdk::Provider::SetTracerProvider(provider); } void CleanupTracer() { std::shared_ptr none; - trace_api::Provider::SetTracerProvider(none); + trace_sdk::Provider::SetTracerProvider(none); } opentelemetry::nostd::shared_ptr get_tracer() diff --git a/examples/otlp/file_log_main.cc b/examples/otlp/file_log_main.cc index e641580947..c5c7987bf2 100644 --- a/examples/otlp/file_log_main.cc +++ b/examples/otlp/file_log_main.cc @@ -12,19 +12,19 @@ #include "opentelemetry/exporters/otlp/otlp_file_log_record_exporter_factory.h" #include "opentelemetry/exporters/otlp/otlp_file_log_record_exporter_options.h" #include "opentelemetry/logs/logger_provider.h" -#include "opentelemetry/logs/provider.h" #include "opentelemetry/nostd/shared_ptr.h" #include "opentelemetry/sdk/logs/exporter.h" #include "opentelemetry/sdk/logs/logger_provider.h" #include "opentelemetry/sdk/logs/logger_provider_factory.h" #include "opentelemetry/sdk/logs/processor.h" +#include "opentelemetry/sdk/logs/provider.h" #include "opentelemetry/sdk/logs/simple_log_record_processor_factory.h" #include "opentelemetry/sdk/trace/exporter.h" #include "opentelemetry/sdk/trace/processor.h" +#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/sdk/trace/simple_processor_factory.h" #include "opentelemetry/sdk/trace/tracer_provider.h" #include "opentelemetry/sdk/trace/tracer_provider_factory.h" -#include "opentelemetry/trace/provider.h" #include "opentelemetry/trace/tracer_provider.h" #ifdef BAZEL_BUILD @@ -57,7 +57,7 @@ void InitTracer() // Set the global trace provider std::shared_ptr api_provider = tracer_provider; - trace::Provider::SetTracerProvider(api_provider); + trace_sdk::Provider::SetTracerProvider(api_provider); } void CleanupTracer() @@ -70,7 +70,7 @@ void CleanupTracer() tracer_provider.reset(); std::shared_ptr none; - trace::Provider::SetTracerProvider(none); + trace_sdk::Provider::SetTracerProvider(none); } void InitLogger() @@ -81,7 +81,7 @@ void InitLogger() logger_provider = logs_sdk::LoggerProviderFactory::Create(std::move(processor)); std::shared_ptr api_provider = logger_provider; - opentelemetry::logs::Provider::SetLoggerProvider(api_provider); + logs_sdk::Provider::SetLoggerProvider(api_provider); } void CleanupLogger() @@ -94,7 +94,7 @@ void CleanupLogger() logger_provider.reset(); nostd::shared_ptr none; - opentelemetry::logs::Provider::SetLoggerProvider(none); + logs_sdk::Provider::SetLoggerProvider(none); } } // namespace diff --git a/examples/otlp/file_main.cc b/examples/otlp/file_main.cc index 0f277051cc..62000dc18a 100644 --- a/examples/otlp/file_main.cc +++ b/examples/otlp/file_main.cc @@ -10,10 +10,10 @@ #include "opentelemetry/exporters/otlp/otlp_file_exporter_options.h" #include "opentelemetry/sdk/trace/exporter.h" #include "opentelemetry/sdk/trace/processor.h" +#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/sdk/trace/simple_processor_factory.h" #include "opentelemetry/sdk/trace/tracer_provider.h" #include "opentelemetry/sdk/trace/tracer_provider_factory.h" -#include "opentelemetry/trace/provider.h" #include "opentelemetry/trace/tracer_provider.h" #ifdef BAZEL_BUILD @@ -41,7 +41,7 @@ void InitTracer() // Set the global trace provider std::shared_ptr api_provider = provider; - trace::Provider::SetTracerProvider(api_provider); + trace_sdk::Provider::SetTracerProvider(api_provider); } void CleanupTracer() @@ -54,7 +54,7 @@ void CleanupTracer() provider.reset(); std::shared_ptr none; - trace::Provider::SetTracerProvider(none); + trace_sdk::Provider::SetTracerProvider(none); } } // namespace diff --git a/examples/otlp/file_metric_main.cc b/examples/otlp/file_metric_main.cc index 840031ae41..98a5411599 100644 --- a/examples/otlp/file_metric_main.cc +++ b/examples/otlp/file_metric_main.cc @@ -12,7 +12,6 @@ #include "opentelemetry/exporters/otlp/otlp_file_metric_exporter_factory.h" #include "opentelemetry/exporters/otlp/otlp_file_metric_exporter_options.h" #include "opentelemetry/metrics/meter_provider.h" -#include "opentelemetry/metrics/provider.h" #include "opentelemetry/sdk/metrics/export/periodic_exporting_metric_reader_factory.h" #include "opentelemetry/sdk/metrics/export/periodic_exporting_metric_reader_options.h" #include "opentelemetry/sdk/metrics/meter_context.h" @@ -20,6 +19,7 @@ #include "opentelemetry/sdk/metrics/meter_provider.h" #include "opentelemetry/sdk/metrics/meter_provider_factory.h" #include "opentelemetry/sdk/metrics/metric_reader.h" +#include "opentelemetry/sdk/metrics/provider.h" #include "opentelemetry/sdk/metrics/push_metric_exporter.h" #ifdef BAZEL_BUILD @@ -28,7 +28,7 @@ # include "metrics_foo_library/foo_library.h" #endif -namespace metric_sdk = opentelemetry::sdk::metrics; +namespace metrics_sdk = opentelemetry::sdk::metrics; namespace common = opentelemetry::common; namespace metrics_api = opentelemetry::metrics; namespace otlp_exporter = opentelemetry::exporter::otlp; @@ -46,26 +46,26 @@ void InitMetrics() std::string schema{"https://opentelemetry.io/schemas/1.2.0"}; // Initialize and set the global MeterProvider - metric_sdk::PeriodicExportingMetricReaderOptions reader_options; + metrics_sdk::PeriodicExportingMetricReaderOptions reader_options; reader_options.export_interval_millis = std::chrono::milliseconds(1000); reader_options.export_timeout_millis = std::chrono::milliseconds(500); - auto reader = - metric_sdk::PeriodicExportingMetricReaderFactory::Create(std::move(exporter), reader_options); + auto reader = metrics_sdk::PeriodicExportingMetricReaderFactory::Create(std::move(exporter), + reader_options); - auto context = metric_sdk::MeterContextFactory::Create(); + auto context = metrics_sdk::MeterContextFactory::Create(); context->AddMetricReader(std::move(reader)); - auto u_provider = metric_sdk::MeterProviderFactory::Create(std::move(context)); + auto u_provider = metrics_sdk::MeterProviderFactory::Create(std::move(context)); std::shared_ptr provider(std::move(u_provider)); - metrics_api::Provider::SetMeterProvider(provider); + metrics_sdk::Provider::SetMeterProvider(provider); } void CleanupMetrics() { std::shared_ptr none; - metrics_api::Provider::SetMeterProvider(none); + metrics_sdk::Provider::SetMeterProvider(none); } } // namespace diff --git a/examples/otlp/grpc_log_main.cc b/examples/otlp/grpc_log_main.cc index 8727c01bf6..2fc87dbd66 100644 --- a/examples/otlp/grpc_log_main.cc +++ b/examples/otlp/grpc_log_main.cc @@ -11,9 +11,11 @@ #include "opentelemetry/sdk/logs/logger_provider.h" #include "opentelemetry/sdk/logs/logger_provider_factory.h" #include "opentelemetry/sdk/logs/processor.h" +#include "opentelemetry/sdk/logs/provider.h" #include "opentelemetry/sdk/logs/simple_log_record_processor_factory.h" #include "opentelemetry/sdk/trace/exporter.h" #include "opentelemetry/sdk/trace/processor.h" +#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/sdk/trace/simple_processor_factory.h" #include "opentelemetry/sdk/trace/tracer_provider.h" #include "opentelemetry/sdk/trace/tracer_provider_factory.h" @@ -51,7 +53,7 @@ void InitTracer(const std::shared_ptr &shared_client) // Set the global trace provider std::shared_ptr api_provider = tracer_provider; - trace::Provider::SetTracerProvider(api_provider); + trace_sdk::Provider::SetTracerProvider(api_provider); } void CleanupTracer() @@ -64,7 +66,7 @@ void CleanupTracer() tracer_provider.reset(); std::shared_ptr none; - trace::Provider::SetTracerProvider(none); + trace_sdk::Provider::SetTracerProvider(none); } void InitLogger(const std::shared_ptr &shared_client) @@ -76,7 +78,7 @@ void InitLogger(const std::shared_ptr &shared_client) // Set the global logger provider std::shared_ptr api_provider = logger_provider; - opentelemetry::logs::Provider::SetLoggerProvider(api_provider); + logs_sdk::Provider::SetLoggerProvider(api_provider); } void CleanupLogger() @@ -89,7 +91,7 @@ void CleanupLogger() logger_provider.reset(); nostd::shared_ptr none; - opentelemetry::logs::Provider::SetLoggerProvider(none); + logs_sdk::Provider::SetLoggerProvider(none); } } // namespace diff --git a/examples/otlp/grpc_main.cc b/examples/otlp/grpc_main.cc index 9faed286d8..1b9698b458 100644 --- a/examples/otlp/grpc_main.cc +++ b/examples/otlp/grpc_main.cc @@ -4,6 +4,7 @@ #include "opentelemetry/exporters/otlp/otlp_grpc_exporter_factory.h" #include "opentelemetry/nostd/shared_ptr.h" #include "opentelemetry/sdk/trace/processor.h" +#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/sdk/trace/simple_processor_factory.h" #include "opentelemetry/sdk/trace/tracer_provider.h" #include "opentelemetry/sdk/trace/tracer_provider_factory.h" @@ -35,7 +36,7 @@ void InitTracer() // Set the global trace provider std::shared_ptr api_provider = provider; - trace::Provider::SetTracerProvider(api_provider); + trace_sdk::Provider::SetTracerProvider(api_provider); } void CleanupTracer() @@ -48,7 +49,7 @@ void CleanupTracer() provider.reset(); std::shared_ptr none; - trace::Provider::SetTracerProvider(none); + trace_sdk::Provider::SetTracerProvider(none); } } // namespace diff --git a/examples/otlp/grpc_metric_main.cc b/examples/otlp/grpc_metric_main.cc index 9fe9d88afe..7b6550edba 100644 --- a/examples/otlp/grpc_metric_main.cc +++ b/examples/otlp/grpc_metric_main.cc @@ -10,6 +10,7 @@ #include "opentelemetry/sdk/metrics/meter_context_factory.h" #include "opentelemetry/sdk/metrics/meter_provider.h" #include "opentelemetry/sdk/metrics/meter_provider_factory.h" +#include "opentelemetry/sdk/metrics/provider.h" #include #include @@ -51,13 +52,13 @@ void InitMetrics() auto u_provider = metric_sdk::MeterProviderFactory::Create(std::move(context)); std::shared_ptr provider(std::move(u_provider)); - metrics_api::Provider::SetMeterProvider(provider); + metric_sdk::Provider::SetMeterProvider(provider); } void CleanupMetrics() { std::shared_ptr none; - metrics_api::Provider::SetMeterProvider(none); + metric_sdk::Provider::SetMeterProvider(none); } } // namespace diff --git a/examples/otlp/http_instrumented_main.cc b/examples/otlp/http_instrumented_main.cc index 19f7a2d572..7c6068f596 100644 --- a/examples/otlp/http_instrumented_main.cc +++ b/examples/otlp/http_instrumented_main.cc @@ -1,8 +1,10 @@ // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 +#include #include #include +#include #include #include @@ -16,38 +18,35 @@ #include "opentelemetry/exporters/otlp/otlp_http_metric_exporter_options.h" #include "opentelemetry/exporters/otlp/otlp_http_metric_exporter_runtime_options.h" #include "opentelemetry/logs/logger_provider.h" -#include "opentelemetry/logs/provider.h" #include "opentelemetry/metrics/meter_provider.h" -#include "opentelemetry/metrics/provider.h" #include "opentelemetry/sdk/logs/batch_log_record_processor_factory.h" +#include "opentelemetry/sdk/logs/batch_log_record_processor_options.h" +#include "opentelemetry/sdk/logs/batch_log_record_processor_runtime_options.h" +#include "opentelemetry/sdk/logs/exporter.h" #include "opentelemetry/sdk/logs/logger_provider.h" #include "opentelemetry/sdk/logs/logger_provider_factory.h" +#include "opentelemetry/sdk/logs/processor.h" +#include "opentelemetry/sdk/logs/provider.h" #include "opentelemetry/sdk/metrics/export/periodic_exporting_metric_reader_factory.h" #include "opentelemetry/sdk/metrics/export/periodic_exporting_metric_reader_options.h" #include "opentelemetry/sdk/metrics/export/periodic_exporting_metric_reader_runtime_options.h" #include "opentelemetry/sdk/metrics/meter_context.h" #include "opentelemetry/sdk/metrics/meter_context_factory.h" +#include "opentelemetry/sdk/metrics/meter_provider.h" #include "opentelemetry/sdk/metrics/meter_provider_factory.h" #include "opentelemetry/sdk/metrics/metric_reader.h" +#include "opentelemetry/sdk/metrics/provider.h" #include "opentelemetry/sdk/metrics/push_metric_exporter.h" #include "opentelemetry/sdk/trace/batch_span_processor_factory.h" #include "opentelemetry/sdk/trace/batch_span_processor_options.h" #include "opentelemetry/sdk/trace/batch_span_processor_runtime_options.h" +#include "opentelemetry/sdk/trace/exporter.h" #include "opentelemetry/sdk/trace/processor.h" +#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/sdk/trace/tracer_provider.h" #include "opentelemetry/sdk/trace/tracer_provider_factory.h" -#include "opentelemetry/trace/provider.h" #include "opentelemetry/trace/tracer_provider.h" -#include -#include -#include "opentelemetry/sdk/logs/batch_log_record_processor_options.h" -#include "opentelemetry/sdk/logs/batch_log_record_processor_runtime_options.h" -#include "opentelemetry/sdk/logs/exporter.h" -#include "opentelemetry/sdk/logs/processor.h" -#include "opentelemetry/sdk/metrics/meter_provider.h" -#include "opentelemetry/sdk/trace/exporter.h" - #ifdef BAZEL_BUILD # include "examples/common/logs_foo_library/foo_library.h" # include "examples/common/metrics_foo_library/foo_library.h" @@ -186,7 +185,7 @@ void InitTracer() // Set the global trace provider std::shared_ptr api_provider = tracer_provider; - opentelemetry::trace::Provider::SetTracerProvider(api_provider); + opentelemetry::sdk::trace::Provider::SetTracerProvider(api_provider); } void CleanupTracer() @@ -200,7 +199,7 @@ void CleanupTracer() tracer_provider.reset(); std::shared_ptr none; - opentelemetry::trace::Provider::SetTracerProvider(none); + opentelemetry::sdk::trace::Provider::SetTracerProvider(none); } void InitMetrics() @@ -241,7 +240,7 @@ void InitMetrics() meter_provider = opentelemetry::sdk::metrics::MeterProviderFactory::Create(std::move(context)); std::shared_ptr api_provider = meter_provider; - opentelemetry::metrics::Provider::SetMeterProvider(api_provider); + opentelemetry::sdk::metrics::Provider::SetMeterProvider(api_provider); } void CleanupMetrics() @@ -255,7 +254,7 @@ void CleanupMetrics() meter_provider.reset(); std::shared_ptr none; - opentelemetry::metrics::Provider::SetMeterProvider(none); + opentelemetry::sdk::metrics::Provider::SetMeterProvider(none); } void InitLogger() @@ -284,7 +283,7 @@ void InitLogger() logger_provider = opentelemetry::sdk::logs::LoggerProviderFactory::Create(std::move(processor)); std::shared_ptr api_provider = logger_provider; - opentelemetry::logs::Provider::SetLoggerProvider(api_provider); + opentelemetry::sdk::logs::Provider::SetLoggerProvider(api_provider); } void CleanupLogger() @@ -298,7 +297,7 @@ void CleanupLogger() logger_provider.reset(); std::shared_ptr none; - opentelemetry::logs::Provider::SetLoggerProvider(none); + opentelemetry::sdk::logs::Provider::SetLoggerProvider(none); } } // namespace diff --git a/examples/otlp/http_log_main.cc b/examples/otlp/http_log_main.cc index 4d3844b47d..ad96d6b02c 100644 --- a/examples/otlp/http_log_main.cc +++ b/examples/otlp/http_log_main.cc @@ -13,19 +13,19 @@ #include "opentelemetry/exporters/otlp/otlp_http_log_record_exporter_factory.h" #include "opentelemetry/exporters/otlp/otlp_http_log_record_exporter_options.h" #include "opentelemetry/logs/logger_provider.h" -#include "opentelemetry/logs/provider.h" #include "opentelemetry/sdk/common/global_log_handler.h" #include "opentelemetry/sdk/logs/exporter.h" #include "opentelemetry/sdk/logs/logger_provider.h" #include "opentelemetry/sdk/logs/logger_provider_factory.h" #include "opentelemetry/sdk/logs/processor.h" +#include "opentelemetry/sdk/logs/provider.h" #include "opentelemetry/sdk/logs/simple_log_record_processor_factory.h" #include "opentelemetry/sdk/trace/exporter.h" #include "opentelemetry/sdk/trace/processor.h" +#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/sdk/trace/simple_processor_factory.h" #include "opentelemetry/sdk/trace/tracer_provider.h" #include "opentelemetry/sdk/trace/tracer_provider_factory.h" -#include "opentelemetry/trace/provider.h" #include "opentelemetry/trace/tracer_provider.h" #ifdef BAZEL_BUILD @@ -75,7 +75,7 @@ void InitTracer() // Set the global trace provider std::shared_ptr api_provider = tracer_provider; - trace::Provider::SetTracerProvider(api_provider); + trace_sdk::Provider::SetTracerProvider(api_provider); } void CleanupTracer() @@ -88,7 +88,7 @@ void CleanupTracer() tracer_provider.reset(); std::shared_ptr none; - trace::Provider::SetTracerProvider(none); + trace_sdk::Provider::SetTracerProvider(none); } opentelemetry::exporter::otlp::OtlpHttpLogRecordExporterOptions logger_opts; @@ -105,7 +105,7 @@ void InitLogger() logger_provider = logs_sdk::LoggerProviderFactory::Create(std::move(processor)); std::shared_ptr api_provider = logger_provider; - opentelemetry::logs::Provider::SetLoggerProvider(api_provider); + logs_sdk::Provider::SetLoggerProvider(api_provider); } void CleanupLogger() @@ -118,7 +118,7 @@ void CleanupLogger() logger_provider.reset(); std::shared_ptr none; - opentelemetry::logs::Provider::SetLoggerProvider(none); + logs_sdk::Provider::SetLoggerProvider(none); } } // namespace diff --git a/examples/otlp/http_main.cc b/examples/otlp/http_main.cc index aed5df1881..a76a00e188 100644 --- a/examples/otlp/http_main.cc +++ b/examples/otlp/http_main.cc @@ -11,10 +11,10 @@ #include "opentelemetry/sdk/common/global_log_handler.h" #include "opentelemetry/sdk/trace/exporter.h" #include "opentelemetry/sdk/trace/processor.h" +#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/sdk/trace/simple_processor_factory.h" #include "opentelemetry/sdk/trace/tracer_provider.h" #include "opentelemetry/sdk/trace/tracer_provider_factory.h" -#include "opentelemetry/trace/provider.h" #include "opentelemetry/trace/tracer_provider.h" #ifdef BAZEL_BUILD @@ -43,7 +43,7 @@ void InitTracer() provider = trace_sdk::TracerProviderFactory::Create(std::move(processor)); // Set the global trace provider std::shared_ptr api_provider = provider; - trace::Provider::SetTracerProvider(api_provider); + trace_sdk::Provider::SetTracerProvider(api_provider); } void CleanupTracer() @@ -56,7 +56,7 @@ void CleanupTracer() provider.reset(); std::shared_ptr none; - trace::Provider::SetTracerProvider(none); + trace_sdk::Provider::SetTracerProvider(none); } } // namespace diff --git a/examples/otlp/http_metric_main.cc b/examples/otlp/http_metric_main.cc index a7adfcf243..7e0040e3c3 100644 --- a/examples/otlp/http_metric_main.cc +++ b/examples/otlp/http_metric_main.cc @@ -12,7 +12,6 @@ #include "opentelemetry/exporters/otlp/otlp_http_metric_exporter_factory.h" #include "opentelemetry/exporters/otlp/otlp_http_metric_exporter_options.h" #include "opentelemetry/metrics/meter_provider.h" -#include "opentelemetry/metrics/provider.h" #include "opentelemetry/sdk/common/global_log_handler.h" #include "opentelemetry/sdk/metrics/export/periodic_exporting_metric_reader_factory.h" #include "opentelemetry/sdk/metrics/export/periodic_exporting_metric_reader_options.h" @@ -21,6 +20,7 @@ #include "opentelemetry/sdk/metrics/meter_provider.h" #include "opentelemetry/sdk/metrics/meter_provider_factory.h" #include "opentelemetry/sdk/metrics/metric_reader.h" +#include "opentelemetry/sdk/metrics/provider.h" #include "opentelemetry/sdk/metrics/push_metric_exporter.h" #ifdef BAZEL_BUILD @@ -29,7 +29,7 @@ # include "metrics_foo_library/foo_library.h" #endif -namespace metric_sdk = opentelemetry::sdk::metrics; +namespace metrics_sdk = opentelemetry::sdk::metrics; namespace common = opentelemetry::common; namespace metrics_api = opentelemetry::metrics; namespace otlp_exporter = opentelemetry::exporter::otlp; @@ -49,26 +49,26 @@ void InitMetrics() std::string schema{"https://opentelemetry.io/schemas/1.2.0"}; // Initialize and set the global MeterProvider - metric_sdk::PeriodicExportingMetricReaderOptions reader_options; + metrics_sdk::PeriodicExportingMetricReaderOptions reader_options; reader_options.export_interval_millis = std::chrono::milliseconds(1000); reader_options.export_timeout_millis = std::chrono::milliseconds(500); - auto reader = - metric_sdk::PeriodicExportingMetricReaderFactory::Create(std::move(exporter), reader_options); + auto reader = metrics_sdk::PeriodicExportingMetricReaderFactory::Create(std::move(exporter), + reader_options); - auto context = metric_sdk::MeterContextFactory::Create(); + auto context = metrics_sdk::MeterContextFactory::Create(); context->AddMetricReader(std::move(reader)); - auto u_provider = metric_sdk::MeterProviderFactory::Create(std::move(context)); + auto u_provider = metrics_sdk::MeterProviderFactory::Create(std::move(context)); std::shared_ptr provider(std::move(u_provider)); - metrics_api::Provider::SetMeterProvider(provider); + metrics_sdk::Provider::SetMeterProvider(provider); } void CleanupMetrics() { std::shared_ptr none; - metrics_api::Provider::SetMeterProvider(none); + metrics_sdk::Provider::SetMeterProvider(none); } } // namespace diff --git a/examples/prometheus/main.cc b/examples/prometheus/main.cc index 5af0294066..b2c2c74fec 100644 --- a/examples/prometheus/main.cc +++ b/examples/prometheus/main.cc @@ -11,11 +11,11 @@ #include "opentelemetry/exporters/prometheus/exporter_factory.h" #include "opentelemetry/exporters/prometheus/exporter_options.h" #include "opentelemetry/metrics/meter_provider.h" -#include "opentelemetry/metrics/provider.h" #include "opentelemetry/sdk/metrics/instruments.h" #include "opentelemetry/sdk/metrics/meter_provider.h" #include "opentelemetry/sdk/metrics/meter_provider_factory.h" #include "opentelemetry/sdk/metrics/metric_reader.h" +#include "opentelemetry/sdk/metrics/provider.h" #include "opentelemetry/sdk/metrics/view/instrument_selector.h" #include "opentelemetry/sdk/metrics/view/instrument_selector_factory.h" #include "opentelemetry/sdk/metrics/view/meter_selector.h" @@ -87,13 +87,13 @@ void InitMetrics(const std::string &name, const std::string &addr) std::move(histogram_view)); std::shared_ptr provider(std::move(u_provider)); - metrics_api::Provider::SetMeterProvider(provider); + metrics_sdk::Provider::SetMeterProvider(provider); } void CleanupMetrics() { std::shared_ptr none; - metrics_api::Provider::SetMeterProvider(none); + metrics_sdk::Provider::SetMeterProvider(none); } } // namespace diff --git a/examples/simple/main.cc b/examples/simple/main.cc index 7a035f4ee5..f0341a946d 100644 --- a/examples/simple/main.cc +++ b/examples/simple/main.cc @@ -7,10 +7,10 @@ #include "opentelemetry/exporters/ostream/span_exporter_factory.h" #include "opentelemetry/sdk/trace/exporter.h" #include "opentelemetry/sdk/trace/processor.h" +#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/sdk/trace/simple_processor_factory.h" #include "opentelemetry/sdk/trace/tracer_provider.h" #include "opentelemetry/sdk/trace/tracer_provider_factory.h" -#include "opentelemetry/trace/provider.h" #include "opentelemetry/trace/tracer_provider.h" #ifdef BAZEL_BUILD @@ -35,13 +35,13 @@ void InitTracer() // Set the global trace provider const std::shared_ptr &api_provider = sdk_provider; - trace_api::Provider::SetTracerProvider(api_provider); + trace_sdk::Provider::SetTracerProvider(api_provider); } void CleanupTracer() { std::shared_ptr noop; - trace_api::Provider::SetTracerProvider(noop); + trace_sdk::Provider::SetTracerProvider(noop); } } // namespace diff --git a/examples/zipkin/main.cc b/examples/zipkin/main.cc index ae6b3131fd..909c52fb69 100644 --- a/examples/zipkin/main.cc +++ b/examples/zipkin/main.cc @@ -10,10 +10,10 @@ #include "opentelemetry/sdk/resource/resource.h" #include "opentelemetry/sdk/trace/exporter.h" #include "opentelemetry/sdk/trace/processor.h" +#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/sdk/trace/simple_processor_factory.h" #include "opentelemetry/sdk/trace/tracer_provider.h" #include "opentelemetry/sdk/trace/tracer_provider_factory.h" -#include "opentelemetry/trace/provider.h" #include "opentelemetry/trace/tracer_provider.h" #ifdef BAZEL_BUILD @@ -40,13 +40,13 @@ void InitTracer() std::shared_ptr provider = trace_sdk::TracerProviderFactory::Create(std::move(processor), resource); // Set the global trace provider - trace::Provider::SetTracerProvider(provider); + trace_sdk::Provider::SetTracerProvider(provider); } void CleanupTracer() { std::shared_ptr none; - trace::Provider::SetTracerProvider(none); + trace_sdk::Provider::SetTracerProvider(none); } } // namespace diff --git a/exporters/ostream/test/ostream_log_test.cc b/exporters/ostream/test/ostream_log_test.cc index 5326028695..bf3af291f3 100644 --- a/exporters/ostream/test/ostream_log_test.cc +++ b/exporters/ostream/test/ostream_log_test.cc @@ -29,6 +29,7 @@ #include "opentelemetry/sdk/logs/exporter.h" #include "opentelemetry/sdk/logs/logger_provider.h" #include "opentelemetry/sdk/logs/processor.h" +#include "opentelemetry/sdk/logs/provider.h" #include "opentelemetry/sdk/logs/read_write_log_record.h" #include "opentelemetry/sdk/logs/readable_log_record.h" #include "opentelemetry/sdk/logs/recordable.h" @@ -396,7 +397,7 @@ TEST(OStreamLogRecordExporter, IntegrationTest) new sdklogs::SimpleLogRecordProcessor(std::move(exporter)))); auto apiProvider = nostd::shared_ptr(sdkProvider); auto provider = nostd::shared_ptr(apiProvider); - logs_api::Provider::SetLoggerProvider(provider); + sdklogs::Provider::SetLoggerProvider(provider); const std::string schema_url{"https://opentelemetry.io/schemas/1.11.0"}; auto logger = logs_api::Provider::GetLoggerProvider()->GetLogger( "Logger", "opentelelemtry_library", OPENTELEMETRY_SDK_VERSION, schema_url, @@ -467,7 +468,7 @@ TEST(OStreamLogRecordExporter, IntegrationTestWithEventId) new sdklogs::SimpleLogRecordProcessor(std::move(exporter)))); auto apiProvider = nostd::shared_ptr(sdkProvider); auto provider = nostd::shared_ptr(apiProvider); - logs_api::Provider::SetLoggerProvider(provider); + sdklogs::Provider::SetLoggerProvider(provider); const std::string schema_url{"https://opentelemetry.io/schemas/1.11.0"}; auto logger = logs_api::Provider::GetLoggerProvider()->GetLogger( "Logger", "opentelelemtry_library", OPENTELEMETRY_SDK_VERSION, schema_url, diff --git a/exporters/otlp/test/otlp_grpc_log_record_exporter_test.cc b/exporters/otlp/test/otlp_grpc_log_record_exporter_test.cc index 40b441a612..4521dfeeaa 100644 --- a/exporters/otlp/test/otlp_grpc_log_record_exporter_test.cc +++ b/exporters/otlp/test/otlp_grpc_log_record_exporter_test.cc @@ -27,6 +27,7 @@ #include "opentelemetry/sdk/resource/resource.h" #include "opentelemetry/sdk/trace/exporter.h" #include "opentelemetry/sdk/trace/processor.h" +#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/sdk/trace/simple_processor_factory.h" #include "opentelemetry/sdk/trace/tracer_provider_factory.h" #include "opentelemetry/trace/provider.h" @@ -324,7 +325,7 @@ TEST_F(OtlpGrpcLogRecordExporterTestPeer, ExportIntegrationTest) const std::string schema_url{"https://opentelemetry.io/schemas/1.11.0"}; auto tracer = trace_provider->GetTracer("opentelelemtry_library", "", schema_url); - opentelemetry::trace::Provider::SetTracerProvider(std::move(trace_provider)); + opentelemetry::sdk::trace::Provider::SetTracerProvider(std::move(trace_provider)); auto trace_span = tracer->StartSpan("test_log"); opentelemetry::trace::Scope trace_scope{trace_span}; @@ -350,7 +351,7 @@ TEST_F(OtlpGrpcLogRecordExporterTestPeer, ExportIntegrationTest) trace_span->GetContext(), std::chrono::system_clock::now()); } - opentelemetry::trace::Provider::SetTracerProvider( + opentelemetry::sdk::trace::Provider::SetTracerProvider( opentelemetry::nostd::shared_ptr( new opentelemetry::trace::NoopTracerProvider())); trace_provider = opentelemetry::nostd::shared_ptr(); @@ -410,7 +411,7 @@ TEST_F(OtlpGrpcLogRecordExporterTestPeer, ShareClientTest) auto tracer = trace_provider->GetTracer("opentelelemtry_library", "", schema_url); auto copy_trace_provider = trace_provider; - opentelemetry::trace::Provider::SetTracerProvider(std::move(copy_trace_provider)); + opentelemetry::sdk::trace::Provider::SetTracerProvider(std::move(copy_trace_provider)); auto trace_span = tracer->StartSpan("test_log"); opentelemetry::trace::Scope trace_scope{trace_span}; @@ -460,7 +461,7 @@ TEST_F(OtlpGrpcLogRecordExporterTestPeer, ShareClientTest) trace_provider->Shutdown(); EXPECT_TRUE(shared_client->IsShutdown()); - opentelemetry::trace::Provider::SetTracerProvider( + opentelemetry::sdk::trace::Provider::SetTracerProvider( opentelemetry::nostd::shared_ptr( new opentelemetry::trace::NoopTracerProvider())); trace_provider = opentelemetry::nostd::shared_ptr(); diff --git a/ext/src/dll/input.src b/ext/src/dll/input.src index 98c4c140fe..d3d58b7691 100644 --- a/ext/src/dll/input.src +++ b/ext/src/dll/input.src @@ -23,6 +23,9 @@ AddMetricReader@MeterContext@metrics@sdk@v1@opentelemetry AddMetricReader@MeterProvider@metrics@sdk@v1@opentelemetry MeterProvider@metrics@sdk@v1@opentelemetry AddView@MeterProvider@metrics@sdk@v1@opentelemetry +SetTracerProvider@Provider@trace@sdk@v1@opentelemetry +SetMeterProvider@Provider@metrics@sdk@v1@opentelemetry +SetLoggerProvider@Provider@logs@sdk@v1@opentelemetry #if defined(WITH_OTLP_GRPC) || defined(WITH_OTLP_HTTP) GetOtlpDefaultTracesTimeout@otlp@exporter@v1@opentelemetry diff --git a/ext/test/w3c_tracecontext_http_test_server/main.cc b/ext/test/w3c_tracecontext_http_test_server/main.cc index d294791950..bf440a1a06 100644 --- a/ext/test/w3c_tracecontext_http_test_server/main.cc +++ b/ext/test/w3c_tracecontext_http_test_server/main.cc @@ -25,6 +25,7 @@ #include "opentelemetry/nostd/string_view.h" #include "opentelemetry/sdk/trace/exporter.h" #include "opentelemetry/sdk/trace/processor.h" +#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/sdk/trace/simple_processor.h" #include "opentelemetry/sdk/trace/tracer_context.h" #include "opentelemetry/sdk/trace/tracer_provider.h" @@ -97,7 +98,7 @@ void initTracer() auto provider = nostd::shared_ptr( new trace_sdk::TracerProvider(std::move(context))); // Set the global trace provider - trace_api::Provider::SetTracerProvider(provider); + trace_sdk::Provider::SetTracerProvider(provider); } nostd::shared_ptr get_tracer() diff --git a/functional/otlp/func_grpc_main.cc b/functional/otlp/func_grpc_main.cc index e52fe12d84..3784186229 100644 --- a/functional/otlp/func_grpc_main.cc +++ b/functional/otlp/func_grpc_main.cc @@ -16,6 +16,7 @@ #include "opentelemetry/sdk/common/attribute_utils.h" #include "opentelemetry/sdk/common/global_log_handler.h" #include "opentelemetry/sdk/trace/processor.h" +#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/sdk/trace/recordable.h" #include "opentelemetry/sdk/trace/simple_processor_factory.h" #include "opentelemetry/sdk/trace/tracer_provider.h" @@ -172,7 +173,7 @@ void init(const otlp::OtlpGrpcExporterOptions &opts) std::shared_ptr provider = trace_sdk::TracerProviderFactory::Create(std::move(processor)); // Set the global trace provider - trace::Provider::SetTracerProvider(provider); + trace_sdk::Provider::SetTracerProvider(provider); } void payload() @@ -192,7 +193,7 @@ void payload() void cleanup() { std::shared_ptr none; - trace::Provider::SetTracerProvider(none); + trace_sdk::Provider::SetTracerProvider(none); } void instrumented_payload(const otlp::OtlpGrpcExporterOptions &opts) diff --git a/functional/otlp/func_http_main.cc b/functional/otlp/func_http_main.cc index 0d24107874..874c8bec04 100644 --- a/functional/otlp/func_http_main.cc +++ b/functional/otlp/func_http_main.cc @@ -16,6 +16,7 @@ #include "opentelemetry/sdk/common/global_log_handler.h" #include "opentelemetry/sdk/trace/exporter.h" #include "opentelemetry/sdk/trace/processor.h" +#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/sdk/trace/simple_processor_factory.h" #include "opentelemetry/sdk/trace/tracer_provider.h" #include "opentelemetry/sdk/trace/tracer_provider_factory.h" @@ -188,7 +189,7 @@ void init(const otlp::OtlpHttpExporterOptions &opts) std::shared_ptr provider = trace_sdk::TracerProviderFactory::Create(std::move(processor)); // Set the global trace provider - trace::Provider::SetTracerProvider(provider); + trace_sdk::Provider::SetTracerProvider(provider); } void payload() @@ -208,7 +209,7 @@ void payload() void cleanup() { std::shared_ptr none; - trace::Provider::SetTracerProvider(none); + trace_sdk::Provider::SetTracerProvider(none); } void instrumented_payload(const otlp::OtlpHttpExporterOptions &opts) diff --git a/sdk/include/opentelemetry/sdk/common/disabled.h b/sdk/include/opentelemetry/sdk/common/disabled.h new file mode 100644 index 0000000000..ab181865d3 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/common/disabled.h @@ -0,0 +1,18 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace common +{ + +bool GetSdkDisabled(); + +} // namespace common +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/logs/provider.h b/sdk/include/opentelemetry/sdk/logs/provider.h new file mode 100644 index 0000000000..aa637e6998 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/logs/provider.h @@ -0,0 +1,33 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +#include "opentelemetry/nostd/shared_ptr.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ + +namespace logs +{ + +/** + * Changes the singleton global LoggerProvider. + */ +class Provider +{ +public: + /** + * Changes the singleton LoggerProvider. + */ + static void SetLoggerProvider( + const nostd::shared_ptr &lp) noexcept; +}; + +} // namespace logs +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/metrics/provider.h b/sdk/include/opentelemetry/sdk/metrics/provider.h new file mode 100644 index 0000000000..facce08522 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/metrics/provider.h @@ -0,0 +1,33 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +#include "opentelemetry/nostd/shared_ptr.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ + +namespace metrics +{ + +/** + * Changes the singleton global MeterProvider. + */ +class Provider +{ +public: + /** + * Changes the singleton MeterProvider. + */ + static void SetMeterProvider( + const nostd::shared_ptr &mp) noexcept; +}; + +} // namespace metrics +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/trace/provider.h b/sdk/include/opentelemetry/sdk/trace/provider.h new file mode 100644 index 0000000000..98d3ca3a08 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/trace/provider.h @@ -0,0 +1,31 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/nostd/shared_ptr.h" +#include "opentelemetry/trace/tracer_provider.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace trace +{ + +/** + * Changes the singleton global TracerProvider. + */ +class OPENTELEMETRY_EXPORT Provider +{ +public: + /** + * Changes the singleton TracerProvider. + */ + static void SetTracerProvider( + const nostd::shared_ptr &tp) noexcept; +}; + +} // namespace trace +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/src/common/BUILD b/sdk/src/common/BUILD index 9c424cac6b..19b47034f7 100644 --- a/sdk/src/common/BUILD +++ b/sdk/src/common/BUILD @@ -33,6 +33,18 @@ cc_library( ], ) +cc_library( + name = "disabled", + srcs = [ + "disabled.cc", + ], + include_prefix = "src/common", + deps = [ + "//api", + "//sdk:headers", + ], +) + cc_library( name = "env_variables", srcs = [ diff --git a/sdk/src/common/CMakeLists.txt b/sdk/src/common/CMakeLists.txt index 16229e0820..06b3c88c1e 100644 --- a/sdk/src/common/CMakeLists.txt +++ b/sdk/src/common/CMakeLists.txt @@ -1,7 +1,8 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -set(COMMON_SRCS random.cc global_log_handler.cc env_variables.cc base64.cc) +set(COMMON_SRCS random.cc global_log_handler.cc env_variables.cc base64.cc + disabled.cc) if(WIN32) list(APPEND COMMON_SRCS platform/fork_windows.cc) else() diff --git a/sdk/src/common/disabled.cc b/sdk/src/common/disabled.cc new file mode 100644 index 0000000000..340f4cffee --- /dev/null +++ b/sdk/src/common/disabled.cc @@ -0,0 +1,32 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#include "opentelemetry/sdk/common/disabled.h" +#include "opentelemetry/sdk/common/env_variables.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace common +{ + +bool GetSdkDisabled() +{ + constexpr char kEnv[] = "OTEL_SDK_DISABLED"; + + bool exists; + bool value; + + exists = GetBoolEnvironmentVariable(kEnv, value); + if (!exists) + { + value = false; + } + + return value; +} + +} // namespace common +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/src/logs/BUILD b/sdk/src/logs/BUILD index 93642e99b6..8c3e44e205 100644 --- a/sdk/src/logs/BUILD +++ b/sdk/src/logs/BUILD @@ -10,6 +10,7 @@ cc_library( deps = [ "//api", "//sdk:headers", + "//sdk/src/common:disabled", "//sdk/src/common:global_log_handler", "//sdk/src/resource", ], diff --git a/sdk/src/logs/CMakeLists.txt b/sdk/src/logs/CMakeLists.txt index 71679a9a48..05dbab211b 100644 --- a/sdk/src/logs/CMakeLists.txt +++ b/sdk/src/logs/CMakeLists.txt @@ -3,6 +3,7 @@ add_library( opentelemetry_logs + provider.cc logger_provider.cc logger_provider_factory.cc logger.cc diff --git a/sdk/src/logs/provider.cc b/sdk/src/logs/provider.cc new file mode 100644 index 0000000000..224bc8c39d --- /dev/null +++ b/sdk/src/logs/provider.cc @@ -0,0 +1,31 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#include "opentelemetry/metrics/provider.h" +#include "opentelemetry/logs/logger_provider.h" +#include "opentelemetry/logs/provider.h" +#include "opentelemetry/nostd/shared_ptr.h" +#include "opentelemetry/sdk/common/disabled.h" +#include "opentelemetry/sdk/logs/provider.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace logs +{ + +void Provider::SetLoggerProvider( + const nostd::shared_ptr &lp) noexcept +{ + bool disabled = opentelemetry::sdk::common::GetSdkDisabled(); + + if (!disabled) + { + opentelemetry::logs::Provider::SetLoggerProvider(lp); + } +} + +} // namespace logs +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/src/metrics/BUILD b/sdk/src/metrics/BUILD index 78f224b5ab..aa8ed74b45 100644 --- a/sdk/src/metrics/BUILD +++ b/sdk/src/metrics/BUILD @@ -10,6 +10,7 @@ cc_library( deps = [ "//api", "//sdk:headers", + "//sdk/src/common:disabled", "//sdk/src/common:global_log_handler", "//sdk/src/common:random", "//sdk/src/resource", diff --git a/sdk/src/metrics/CMakeLists.txt b/sdk/src/metrics/CMakeLists.txt index 15611d1cab..5a726b4eee 100644 --- a/sdk/src/metrics/CMakeLists.txt +++ b/sdk/src/metrics/CMakeLists.txt @@ -4,6 +4,7 @@ add_library( opentelemetry_metrics async_instruments.cc + provider.cc meter_provider.cc meter_provider_factory.cc meter.cc diff --git a/sdk/src/metrics/provider.cc b/sdk/src/metrics/provider.cc new file mode 100644 index 0000000000..798f6f9749 --- /dev/null +++ b/sdk/src/metrics/provider.cc @@ -0,0 +1,30 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#include "opentelemetry/metrics/provider.h" +#include "opentelemetry/metrics/meter_provider.h" +#include "opentelemetry/nostd/shared_ptr.h" +#include "opentelemetry/sdk/common/disabled.h" +#include "opentelemetry/sdk/metrics/provider.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace metrics +{ + +void Provider::SetMeterProvider( + const nostd::shared_ptr &mp) noexcept +{ + bool disabled = opentelemetry::sdk::common::GetSdkDisabled(); + + if (!disabled) + { + opentelemetry::metrics::Provider::SetMeterProvider(mp); + } +} + +} // namespace metrics +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/src/trace/BUILD b/sdk/src/trace/BUILD index df99eb1520..7262a1c0a0 100644 --- a/sdk/src/trace/BUILD +++ b/sdk/src/trace/BUILD @@ -11,6 +11,7 @@ cc_library( deps = [ "//api", "//sdk:headers", + "//sdk/src/common:disabled", "//sdk/src/common:global_log_handler", "//sdk/src/common:random", "//sdk/src/resource", diff --git a/sdk/src/trace/CMakeLists.txt b/sdk/src/trace/CMakeLists.txt index b99c2ca42c..b39663b419 100644 --- a/sdk/src/trace/CMakeLists.txt +++ b/sdk/src/trace/CMakeLists.txt @@ -10,6 +10,7 @@ add_library( tracer.cc span.cc exporter.cc + provider.cc batch_span_processor.cc batch_span_processor_factory.cc simple_processor_factory.cc diff --git a/sdk/src/trace/provider.cc b/sdk/src/trace/provider.cc new file mode 100644 index 0000000000..ff27c40961 --- /dev/null +++ b/sdk/src/trace/provider.cc @@ -0,0 +1,30 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#include "opentelemetry/trace/provider.h" +#include "opentelemetry/nostd/shared_ptr.h" +#include "opentelemetry/sdk/common/disabled.h" +#include "opentelemetry/sdk/trace/provider.h" +#include "opentelemetry/trace/tracer_provider.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace trace +{ + +void Provider::SetTracerProvider( + const nostd::shared_ptr &tp) noexcept +{ + bool disabled = opentelemetry::sdk::common::GetSdkDisabled(); + + if (!disabled) + { + opentelemetry::trace::Provider::SetTracerProvider(tp); + } +} + +} // namespace trace +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/test/logs/BUILD b/sdk/test/logs/BUILD index 2138a448f3..e47cceca74 100644 --- a/sdk/test/logs/BUILD +++ b/sdk/test/logs/BUILD @@ -17,6 +17,22 @@ cc_test( ], ) +cc_test( + name = "logger_provider_set_test", + srcs = [ + "logger_provider_set_test.cc", + ], + tags = [ + "logs", + "test", + ], + deps = [ + "//api", + "//sdk/src/logs", + "@com_google_googletest//:gtest_main", + ], +) + cc_test( name = "logger_sdk_test", srcs = [ diff --git a/sdk/test/logs/CMakeLists.txt b/sdk/test/logs/CMakeLists.txt index f38e32769f..1164e8b5b7 100644 --- a/sdk/test/logs/CMakeLists.txt +++ b/sdk/test/logs/CMakeLists.txt @@ -1,9 +1,11 @@ # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 -foreach(testname - logger_provider_sdk_test logger_sdk_test log_record_test - simple_log_record_processor_test batch_log_record_processor_test) +foreach( + testname + logger_provider_set_test logger_provider_sdk_test logger_sdk_test + log_record_test simple_log_record_processor_test + batch_log_record_processor_test) add_executable(${testname} "${testname}.cc") target_link_libraries( ${testname} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} diff --git a/sdk/test/logs/logger_provider_sdk_test.cc b/sdk/test/logs/logger_provider_sdk_test.cc index 69cf7748be..bace13361f 100644 --- a/sdk/test/logs/logger_provider_sdk_test.cc +++ b/sdk/test/logs/logger_provider_sdk_test.cc @@ -25,6 +25,7 @@ #include "opentelemetry/sdk/logs/logger_context.h" #include "opentelemetry/sdk/logs/logger_provider.h" #include "opentelemetry/sdk/logs/processor.h" +#include "opentelemetry/sdk/logs/provider.h" #include "opentelemetry/sdk/logs/recordable.h" #include "opentelemetry/sdk/logs/simple_log_record_processor.h" #include "opentelemetry/sdk/resource/resource.h" @@ -34,13 +35,14 @@ using namespace opentelemetry::sdk::logs; namespace logs_api = opentelemetry::logs; +namespace logs_sdk = opentelemetry::sdk::logs; namespace nostd = opentelemetry::nostd; TEST(LoggerProviderSDK, PushToAPI) { auto lp = nostd::shared_ptr(new opentelemetry::sdk::logs::LoggerProvider()); - logs_api::Provider::SetLoggerProvider(lp); + logs_sdk::Provider::SetLoggerProvider(lp); // Check that the loggerprovider was correctly pushed into the API ASSERT_EQ(lp, logs_api::Provider::GetLoggerProvider()); diff --git a/sdk/test/logs/logger_provider_set_test.cc b/sdk/test/logs/logger_provider_set_test.cc new file mode 100644 index 0000000000..40e4790e93 --- /dev/null +++ b/sdk/test/logs/logger_provider_set_test.cc @@ -0,0 +1,90 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#include +#include + +#include "opentelemetry/common/key_value_iterable.h" +#include "opentelemetry/logs/event_logger.h" // IWYU pragma: keep +#include "opentelemetry/logs/event_logger_provider.h" +#include "opentelemetry/logs/logger.h" // IWYU pragma: keep +#include "opentelemetry/logs/logger_provider.h" +#include "opentelemetry/logs/provider.h" +#include "opentelemetry/nostd/shared_ptr.h" +#include "opentelemetry/nostd/string_view.h" +#include "opentelemetry/sdk/logs/provider.h" + +#if defined(_MSC_VER) +# include "opentelemetry/sdk/common/env_variables.h" +using opentelemetry::sdk::common::setenv; +using opentelemetry::sdk::common::unsetenv; +#endif + +using opentelemetry::logs::EventLogger; +using opentelemetry::logs::EventLoggerProvider; +using opentelemetry::logs::Logger; +using opentelemetry::logs::LoggerProvider; +using opentelemetry::logs::Provider; +using opentelemetry::nostd::shared_ptr; + +namespace nostd = opentelemetry::nostd; +namespace logs_api = opentelemetry::logs; +namespace logs_sdk = opentelemetry::sdk::logs; + +class TestProvider : public LoggerProvider +{ + nostd::shared_ptr GetLogger( + nostd::string_view /* logger_name */, + nostd::string_view /* library_name */, + nostd::string_view /* library_version */, + nostd::string_view /* schema_url */, + const opentelemetry::common::KeyValueIterable & /* attributes */) override + { + return shared_ptr(nullptr); + } +}; + +TEST(Provider, SetLoggerProviderDefault) +{ +#ifndef NO_GETENV + unsetenv("OTEL_SDK_DISABLED"); +#endif + + auto tf = shared_ptr(new TestProvider()); + logs_sdk::Provider::SetLoggerProvider(tf); + ASSERT_EQ(tf, logs_api::Provider::GetLoggerProvider()); +} + +#ifndef NO_GETENV +TEST(Provider, SetLoggerProviderEnabled) +{ + setenv("OTEL_SDK_DISABLED", "false", 1); + + auto tf = shared_ptr(new TestProvider()); + logs_sdk::Provider::SetLoggerProvider(tf); + ASSERT_EQ(tf, logs_api::Provider::GetLoggerProvider()); + + unsetenv("OTEL_SDK_DISABLED"); +} + +TEST(Provider, SetLoggerProviderDisabled) +{ + setenv("OTEL_SDK_DISABLED", "true", 1); + + auto tf = shared_ptr(new TestProvider()); + logs_sdk::Provider::SetLoggerProvider(tf); + ASSERT_NE(tf, logs_api::Provider::GetLoggerProvider()); + + unsetenv("OTEL_SDK_DISABLED"); +} +#endif + +TEST(Provider, MultipleLoggerProviders) +{ + auto tf = shared_ptr(new TestProvider()); + logs_sdk::Provider::SetLoggerProvider(tf); + auto tf2 = shared_ptr(new TestProvider()); + logs_sdk::Provider::SetLoggerProvider(tf2); + + ASSERT_NE(logs_api::Provider::GetLoggerProvider(), tf); +} diff --git a/sdk/test/metrics/CMakeLists.txt b/sdk/test/metrics/CMakeLists.txt index 9effa73a4c..186c6cbbbd 100644 --- a/sdk/test/metrics/CMakeLists.txt +++ b/sdk/test/metrics/CMakeLists.txt @@ -6,6 +6,7 @@ target_link_libraries(metrics_common_test_utils opentelemetry_metrics) foreach( testname + meter_provider_set_test meter_provider_sdk_test meter_test view_registry_test diff --git a/sdk/test/metrics/meter_provider_set_test.cc b/sdk/test/metrics/meter_provider_set_test.cc new file mode 100644 index 0000000000..bd8aae8cff --- /dev/null +++ b/sdk/test/metrics/meter_provider_set_test.cc @@ -0,0 +1,69 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#include +#include + +#include "opentelemetry/metrics/meter_provider.h" +#include "opentelemetry/metrics/noop.h" +#include "opentelemetry/metrics/provider.h" +#include "opentelemetry/nostd/shared_ptr.h" +#include "opentelemetry/sdk/metrics/provider.h" + +#if defined(_MSC_VER) +# include "opentelemetry/sdk/common/env_variables.h" +using opentelemetry::sdk::common::setenv; +using opentelemetry::sdk::common::unsetenv; +#endif + +using opentelemetry::metrics::MeterProvider; +using opentelemetry::metrics::NoopMeterProvider; +using opentelemetry::metrics::Provider; + +namespace metrics_api = opentelemetry::metrics; +namespace metrics_sdk = opentelemetry::sdk::metrics; + +TEST(Provider, SetMeterProviderDefault) +{ +#ifndef NO_GETENV + unsetenv("OTEL_SDK_DISABLED"); +#endif + + auto tf = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); + metrics_sdk::Provider::SetMeterProvider(tf); + ASSERT_EQ(tf, metrics_api::Provider::GetMeterProvider()); +} + +#ifndef NO_GETENV +TEST(Provider, SetMeterProviderEnabled) +{ + setenv("OTEL_SDK_DISABLED", "false", 1); + + auto tf = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); + metrics_sdk::Provider::SetMeterProvider(tf); + ASSERT_EQ(tf, metrics_api::Provider::GetMeterProvider()); + + unsetenv("OTEL_SDK_DISABLED"); +} + +TEST(Provider, SetMeterProviderDisabled) +{ + setenv("OTEL_SDK_DISABLED", "true", 1); + + auto tf = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); + metrics_sdk::Provider::SetMeterProvider(tf); + ASSERT_NE(tf, metrics_api::Provider::GetMeterProvider()); + + unsetenv("OTEL_SDK_DISABLED"); +} +#endif + +TEST(Provider, MultipleMeterProviders) +{ + auto tf = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); + metrics_sdk::Provider::SetMeterProvider(tf); + auto tf2 = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); + metrics_sdk::Provider::SetMeterProvider(tf2); + + ASSERT_NE(metrics_api::Provider::GetMeterProvider(), tf); +} diff --git a/sdk/test/trace/BUILD b/sdk/test/trace/BUILD index 455b24964d..18a750a333 100644 --- a/sdk/test/trace/BUILD +++ b/sdk/test/trace/BUILD @@ -19,6 +19,22 @@ cc_test( ], ) +cc_test( + name = "tracer_provider_set_test", + srcs = [ + "tracer_provider_set_test.cc", + ], + tags = [ + "test", + "trace", + ], + deps = [ + "//sdk/src/resource", + "//sdk/src/trace", + "@com_google_googletest//:gtest_main", + ], +) + cc_test( name = "span_data_test", srcs = [ diff --git a/sdk/test/trace/CMakeLists.txt b/sdk/test/trace/CMakeLists.txt index 7c1b75400c..de8dee2340 100644 --- a/sdk/test/trace/CMakeLists.txt +++ b/sdk/test/trace/CMakeLists.txt @@ -3,6 +3,7 @@ foreach( testname + tracer_provider_set_test tracer_provider_test span_data_test simple_processor_test diff --git a/sdk/test/trace/tracer_provider_set_test.cc b/sdk/test/trace/tracer_provider_set_test.cc new file mode 100644 index 0000000000..d8aebe7085 --- /dev/null +++ b/sdk/test/trace/tracer_provider_set_test.cc @@ -0,0 +1,82 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#include +#include + +#include "opentelemetry/nostd/shared_ptr.h" +#include "opentelemetry/nostd/string_view.h" +#include "opentelemetry/sdk/trace/provider.h" +#include "opentelemetry/trace/provider.h" +#include "opentelemetry/trace/tracer.h" +#include "opentelemetry/trace/tracer_provider.h" + +#if defined(_MSC_VER) +# include "opentelemetry/sdk/common/env_variables.h" +using opentelemetry::sdk::common::setenv; +using opentelemetry::sdk::common::unsetenv; +#endif + +using opentelemetry::trace::Tracer; +using opentelemetry::trace::TracerProvider; + +namespace nostd = opentelemetry::nostd; +namespace trace_api = opentelemetry::trace; +namespace trace_sdk = opentelemetry::sdk::trace; + +class TestProvider : public TracerProvider +{ + +#if OPENTELEMETRY_ABI_VERSION_NO >= 2 + nostd::shared_ptr GetTracer( + nostd::string_view /* name */, + nostd::string_view /* version */, + nostd::string_view /* schema_url */, + const opentelemetry::common::KeyValueIterable * /* attributes */) noexcept override + { + return nostd::shared_ptr(nullptr); + } +#else + nostd::shared_ptr GetTracer(nostd::string_view /* name */, + nostd::string_view /* version */, + nostd::string_view /* schema_url */) noexcept override + { + return nostd::shared_ptr(nullptr); + } +#endif +}; + +TEST(Provider, SetTracerProviderDefault) +{ +#ifndef NO_GETENV + unsetenv("OTEL_SDK_DISABLED"); +#endif + + auto tf = nostd::shared_ptr(new TestProvider()); + trace_sdk::Provider::SetTracerProvider(tf); + ASSERT_EQ(tf, trace_api::Provider::GetTracerProvider()); +} + +#ifndef NO_GETENV +TEST(Provider, SetTracerProviderEnabled) +{ + setenv("OTEL_SDK_DISABLED", "false", 1); + + auto tf = nostd::shared_ptr(new TestProvider()); + trace_sdk::Provider::SetTracerProvider(tf); + ASSERT_EQ(tf, trace_api::Provider::GetTracerProvider()); + + unsetenv("OTEL_SDK_DISABLED"); +} + +TEST(Provider, SetTracerProviderDisabled) +{ + setenv("OTEL_SDK_DISABLED", "true", 1); + + auto tf = nostd::shared_ptr(new TestProvider()); + trace_sdk::Provider::SetTracerProvider(tf); + ASSERT_NE(tf, trace_api::Provider::GetTracerProvider()); + + unsetenv("OTEL_SDK_DISABLED"); +} +#endif