From 19a8e4c2887848e3a4973d3122cf0aacf586fdd1 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Wed, 15 Jan 2025 21:26:51 +0100 Subject: [PATCH 01/17] Implement OTEL_SDK_DISABLED --- api/include/opentelemetry/logs/provider.h | 33 ++-- api/include/opentelemetry/metrics/provider.h | 22 ++- api/include/opentelemetry/trace/provider.h | 22 ++- api/test/CMakeLists.txt | 4 - api/test/logs/logger_test.cc | 41 ----- api/test/logs/provider_test.cc | 34 ----- api/test/metrics/meter_provider_test.cc | 19 --- api/test/trace/provider_test.cc | 29 ---- .../opentelemetry/sdk/common/disabled.h | 18 +++ sdk/include/opentelemetry/sdk/logs/provider.h | 39 +++++ .../opentelemetry/sdk/metrics/provider.h | 33 ++++ .../opentelemetry/sdk/trace/provider.h | 31 ++++ sdk/src/common/CMakeLists.txt | 3 +- sdk/src/common/disabled.cc | 32 ++++ sdk/src/logs/CMakeLists.txt | 1 + sdk/src/logs/provider.cc | 70 +++++++++ sdk/src/metrics/CMakeLists.txt | 1 + sdk/src/metrics/provider.cc | 51 +++++++ sdk/src/trace/CMakeLists.txt | 1 + sdk/src/trace/provider.cc | 52 +++++++ sdk/test/CMakeLists.txt | 4 + sdk/test/logs/CMakeLists.txt | 2 +- sdk/test/logs/logger_provider_set_test.cc | 143 ++++++++++++++++++ sdk/test/logs/logger_sdk_test.cc | 44 ++++++ sdk/test/metrics/CMakeLists.txt | 1 + sdk/test/metrics/meter_provider_set_test.cc | 63 ++++++++ {api => sdk}/test/singleton/BUILD | 0 {api => sdk}/test/singleton/CMakeLists.txt | 3 +- {api => sdk}/test/singleton/component_a.cc | 0 {api => sdk}/test/singleton/component_a.h | 0 {api => sdk}/test/singleton/component_b.cc | 0 {api => sdk}/test/singleton/component_b.h | 0 {api => sdk}/test/singleton/component_c.cc | 0 {api => sdk}/test/singleton/component_c.h | 0 {api => sdk}/test/singleton/component_d.cc | 0 {api => sdk}/test/singleton/component_d.h | 0 {api => sdk}/test/singleton/component_e.cc | 0 {api => sdk}/test/singleton/component_e.h | 0 {api => sdk}/test/singleton/component_f.cc | 0 {api => sdk}/test/singleton/component_f.h | 0 {api => sdk}/test/singleton/component_g.cc | 0 {api => sdk}/test/singleton/component_h.cc | 0 {api => sdk}/test/singleton/singleton_test.cc | 0 sdk/test/trace/CMakeLists.txt | 1 + sdk/test/trace/tracer_provider_set_test.cc | 78 ++++++++++ 45 files changed, 725 insertions(+), 150 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 rename {api => sdk}/test/singleton/BUILD (100%) rename {api => sdk}/test/singleton/CMakeLists.txt (97%) rename {api => sdk}/test/singleton/component_a.cc (100%) rename {api => sdk}/test/singleton/component_a.h (100%) rename {api => sdk}/test/singleton/component_b.cc (100%) rename {api => sdk}/test/singleton/component_b.h (100%) rename {api => sdk}/test/singleton/component_c.cc (100%) rename {api => sdk}/test/singleton/component_c.h (100%) rename {api => sdk}/test/singleton/component_d.cc (100%) rename {api => sdk}/test/singleton/component_d.h (100%) rename {api => sdk}/test/singleton/component_e.cc (100%) rename {api => sdk}/test/singleton/component_e.h (100%) rename {api => sdk}/test/singleton/component_f.cc (100%) rename {api => sdk}/test/singleton/component_f.h (100%) rename {api => sdk}/test/singleton/component_g.cc (100%) rename {api => sdk}/test/singleton/component_h.cc (100%) rename {api => sdk}/test/singleton/singleton_test.cc (100%) create mode 100644 sdk/test/trace/tracer_provider_set_test.cc diff --git a/api/include/opentelemetry/logs/provider.h b/api/include/opentelemetry/logs/provider.h index 1d8a1901d8..ae697d72dc 100644 --- a/api/include/opentelemetry/logs/provider.h +++ b/api/include/opentelemetry/logs/provider.h @@ -12,6 +12,14 @@ #include "opentelemetry/version.h" OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace logs +{ +class Provider; +} +} // namespace sdk + namespace logs { @@ -38,12 +46,13 @@ class OPENTELEMETRY_EXPORT Provider /** * Changes the singleton LoggerProvider. + * While declared in the API class opentelemetry::logs::Provider, + * this method is actually part of the SDK, not API. + * An application **MUST** link with the opentelemetry-cpp SDK, + * to install a logs provider, when configuring OpenTelemetry. + * An instrumented library does not need to invoke this method. */ - static void SetLoggerProvider(const nostd::shared_ptr &tp) noexcept - { - std::lock_guard guard(GetLock()); - GetProvider() = tp; - } + static void SetLoggerProvider(const nostd::shared_ptr &lp) noexcept; /** * Returns the singleton EventLoggerProvider. @@ -59,14 +68,18 @@ class OPENTELEMETRY_EXPORT Provider /** * Changes the singleton EventLoggerProvider. + * While declared in the API class opentelemetry::logs::Provider, + * this method is actually part of the SDK, not API. + * An application **MUST** link with the opentelemetry-cpp SDK, + * to install an event logs provider, when configuring OpenTelemetry. + * An instrumented library does not need to invoke this method. */ - static void SetEventLoggerProvider(const nostd::shared_ptr &tp) noexcept - { - std::lock_guard guard(GetLock()); - GetEventProvider() = tp; - } + static void SetEventLoggerProvider(const nostd::shared_ptr &lp) noexcept; private: + /* The SDK is allowed to change the singleton in the API. */ + friend class opentelemetry::sdk::logs::Provider; + OPENTELEMETRY_API_SINGLETON static nostd::shared_ptr &GetProvider() noexcept { static nostd::shared_ptr provider(new NoopLoggerProvider); diff --git a/api/include/opentelemetry/metrics/provider.h b/api/include/opentelemetry/metrics/provider.h index b8ca87843a..11d34f072b 100644 --- a/api/include/opentelemetry/metrics/provider.h +++ b/api/include/opentelemetry/metrics/provider.h @@ -12,6 +12,14 @@ #include "opentelemetry/version.h" OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace metrics +{ +class Provider; +} +} // namespace sdk + namespace metrics { @@ -37,14 +45,18 @@ class Provider /** * Changes the singleton MeterProvider. + * While declared in the API class opentelemetry::metrics::Provider, + * this method is actually part of the SDK, not API. + * An application **MUST** link with the opentelemetry-cpp SDK, + * to install a metrics provider, when configuring OpenTelemetry. + * An instrumented library does not need to invoke this method. */ - static void SetMeterProvider(const nostd::shared_ptr &tp) noexcept - { - std::lock_guard guard(GetLock()); - GetProvider() = tp; - } + static void SetMeterProvider(const nostd::shared_ptr &mp) noexcept; private: + /* The SDK is allowed to change the singleton in the API. */ + friend class opentelemetry::sdk::metrics::Provider; + OPENTELEMETRY_API_SINGLETON static nostd::shared_ptr &GetProvider() noexcept { static nostd::shared_ptr provider(new NoopMeterProvider); diff --git a/api/include/opentelemetry/trace/provider.h b/api/include/opentelemetry/trace/provider.h index 7e22dc69f5..22878afa47 100644 --- a/api/include/opentelemetry/trace/provider.h +++ b/api/include/opentelemetry/trace/provider.h @@ -12,6 +12,14 @@ #include "opentelemetry/version.h" OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace trace +{ +class Provider; +} +} // namespace sdk + namespace trace { @@ -35,14 +43,18 @@ class OPENTELEMETRY_EXPORT Provider /** * Changes the singleton TracerProvider. + * While declared in the API class opentelemetry::trace::Provider, + * this method is actually part of the SDK, not API. + * An application **MUST** link with the opentelemetry-cpp SDK, + * to install a tracer provider, when configuring OpenTelemetry. + * An instrumented library does not need to invoke this method. */ - static void SetTracerProvider(const nostd::shared_ptr &tp) noexcept - { - std::lock_guard guard(GetLock()); - GetProvider() = tp; - } + static void SetTracerProvider(const nostd::shared_ptr &tp) noexcept; private: + /* The SDK is allowed to change the singleton in the API. */ + friend class opentelemetry::sdk::trace::Provider; + OPENTELEMETRY_API_SINGLETON static nostd::shared_ptr &GetProvider() noexcept { static nostd::shared_ptr provider(new NoopTracerProvider); diff --git a/api/test/CMakeLists.txt b/api/test/CMakeLists.txt index 66eeee2092..afcfb9a2df 100644 --- a/api/test/CMakeLists.txt +++ b/api/test/CMakeLists.txt @@ -10,7 +10,3 @@ add_subdirectory(metrics) add_subdirectory(logs) add_subdirectory(common) add_subdirectory(baggage) - -if(NOT OPENTELEMETRY_SKIP_DYNAMIC_LOADING_TESTS) - add_subdirectory(singleton) -endif() diff --git a/api/test/logs/logger_test.cc b/api/test/logs/logger_test.cc index 4f62473d77..e57ec5d766 100644 --- a/api/test/logs/logger_test.cc +++ b/api/test/logs/logger_test.cc @@ -192,44 +192,3 @@ TEST(Logger, EventLogMethodOverloads) opentelemetry::common::MakeAttributes(vec)); } -// Define a basic Logger class -class TestLogger : public Logger -{ - const nostd::string_view GetName() noexcept override { return "test logger"; } - - nostd::unique_ptr CreateLogRecord() noexcept override - { - return nullptr; - } - - using Logger::EmitLogRecord; - - void EmitLogRecord(nostd::unique_ptr &&) noexcept override {} -}; - -// Define a basic LoggerProvider class that returns an instance of the logger class defined above -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 common::KeyValueIterable & /* attributes */) override - { - return nostd::shared_ptr(new TestLogger()); - } -}; - -TEST(Logger, PushLoggerImplementation) -{ - // Push the new loggerprovider class into the global singleton - auto test_provider = shared_ptr(new TestProvider()); - Provider::SetLoggerProvider(test_provider); - - auto lp = Provider::GetLoggerProvider(); - - // Check that the implementation was pushed by calling TestLogger's GetName() - nostd::string_view schema_url{"https://opentelemetry.io/schemas/1.11.0"}; - auto logger = lp->GetLogger("TestLogger", "opentelelemtry_library", "", schema_url); - ASSERT_EQ("test logger", logger->GetName()); -} diff --git a/api/test/logs/provider_test.cc b/api/test/logs/provider_test.cc index f3b45264e5..8ceb72e324 100644 --- a/api/test/logs/provider_test.cc +++ b/api/test/logs/provider_test.cc @@ -40,23 +40,6 @@ TEST(Provider, GetLoggerProviderDefault) EXPECT_NE(nullptr, tf); } -TEST(Provider, SetLoggerProvider) -{ - auto tf = shared_ptr(new TestProvider()); - Provider::SetLoggerProvider(tf); - ASSERT_EQ(tf, Provider::GetLoggerProvider()); -} - -TEST(Provider, MultipleLoggerProviders) -{ - auto tf = shared_ptr(new TestProvider()); - Provider::SetLoggerProvider(tf); - auto tf2 = shared_ptr(new TestProvider()); - Provider::SetLoggerProvider(tf2); - - ASSERT_NE(Provider::GetLoggerProvider(), tf); -} - TEST(Provider, GetLogger) { auto tf = shared_ptr(new TestProvider()); @@ -88,23 +71,6 @@ TEST(Provider, GetEventLoggerProviderDefault) EXPECT_NE(nullptr, tf); } -TEST(Provider, SetEventLoggerProvider) -{ - auto tf = nostd::shared_ptr(new TestEventLoggerProvider()); - Provider::SetEventLoggerProvider(tf); - ASSERT_EQ(tf, Provider::GetEventLoggerProvider()); -} - -TEST(Provider, MultipleEventLoggerProviders) -{ - auto tf = nostd::shared_ptr(new TestEventLoggerProvider()); - Provider::SetEventLoggerProvider(tf); - auto tf2 = nostd::shared_ptr(new TestEventLoggerProvider()); - Provider::SetEventLoggerProvider(tf2); - - ASSERT_NE(Provider::GetEventLoggerProvider(), tf); -} - TEST(Provider, CreateEventLogger) { auto tf = nostd::shared_ptr(new TestEventLoggerProvider()); diff --git a/api/test/metrics/meter_provider_test.cc b/api/test/metrics/meter_provider_test.cc index 8a548a5367..93473b4425 100644 --- a/api/test/metrics/meter_provider_test.cc +++ b/api/test/metrics/meter_provider_test.cc @@ -3,12 +3,10 @@ #include -#include "opentelemetry/metrics/noop.h" #include "opentelemetry/metrics/provider.h" #include "opentelemetry/nostd/shared_ptr.h" using opentelemetry::metrics::MeterProvider; -using opentelemetry::metrics::NoopMeterProvider; using opentelemetry::metrics::Provider; TEST(Provider, GetMeterProviderDefault) @@ -16,20 +14,3 @@ TEST(Provider, GetMeterProviderDefault) auto tf = Provider::GetMeterProvider(); EXPECT_NE(nullptr, tf); } - -TEST(Provider, SetMeterProvider) -{ - auto tf = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); - Provider::SetMeterProvider(tf); - ASSERT_EQ(tf, Provider::GetMeterProvider()); -} - -TEST(Provider, MultipleMeterProviders) -{ - auto tf = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); - Provider::SetMeterProvider(tf); - auto tf2 = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); - Provider::SetMeterProvider(tf2); - - ASSERT_NE(Provider::GetMeterProvider(), tf); -} diff --git a/api/test/trace/provider_test.cc b/api/test/trace/provider_test.cc index d8736f9cbc..11b5fd40fb 100644 --- a/api/test/trace/provider_test.cc +++ b/api/test/trace/provider_test.cc @@ -14,37 +14,8 @@ using opentelemetry::trace::TracerProvider; namespace nostd = opentelemetry::nostd; -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, GetTracerProviderDefault) { auto tf = Provider::GetTracerProvider(); EXPECT_NE(nullptr, tf); } - -TEST(Provider, SetTracerProvider) -{ - auto tf = nostd::shared_ptr(new TestProvider()); - Provider::SetTracerProvider(tf); - ASSERT_EQ(tf, Provider::GetTracerProvider()); -} 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..f9f1df947a --- /dev/null +++ b/sdk/include/opentelemetry/sdk/logs/provider.h @@ -0,0 +1,39 @@ +// 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; + + /** + * Changes the singleton EventLoggerProvider. + */ + static void SetEventLoggerProvider( + const nostd::shared_ptr &lp) noexcept; +}; + +} // namespace metrics +} // 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/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/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..b3140e6f13 --- /dev/null +++ b/sdk/src/logs/provider.cc @@ -0,0 +1,70 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#include "opentelemetry/metrics/provider.h" +#include "opentelemetry/common/spin_lock_mutex.h" +#include "opentelemetry/logs/logger_provider.h" +#include "opentelemetry/logs/provider.h" +#include "opentelemetry/logs/noop.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 logs +{ + +/* + * Note: + * This method is declared in the API namespace (for backward compatibility), + * but part of the SDK. + */ +void Provider::SetLoggerProvider(const nostd::shared_ptr &lp) noexcept +{ + opentelemetry::sdk::logs::Provider::SetLoggerProvider(lp); +} + +void Provider::SetEventLoggerProvider(const nostd::shared_ptr &lp) noexcept +{ + opentelemetry::sdk::logs::Provider::SetEventLoggerProvider(lp); +} + +} // namespace metrics +OPENTELEMETRY_END_NAMESPACE + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace logs +{ + +void Provider::SetLoggerProvider( + const nostd::shared_ptr &lp) noexcept +{ + bool disabled = opentelemetry::sdk::common::GetSdkDisabled(); + + if (!disabled) + { + std::lock_guard guard( + opentelemetry::logs::Provider::GetLock()); + opentelemetry::logs::Provider::GetProvider() = lp; + } +} + +void Provider::SetEventLoggerProvider( + const nostd::shared_ptr &lp) noexcept +{ + bool disabled = opentelemetry::sdk::common::GetSdkDisabled(); + + if (!disabled) + { + std::lock_guard guard( + opentelemetry::logs::Provider::GetLock()); + opentelemetry::logs::Provider::GetEventProvider() = lp; + } +} + +} // namespace metrics +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE 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..e3464bda2c --- /dev/null +++ b/sdk/src/metrics/provider.cc @@ -0,0 +1,51 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#include "opentelemetry/metrics/provider.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/sdk/common/disabled.h" +#include "opentelemetry/sdk/metrics/provider.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace metrics +{ + +/* + * Note: + * This method is declared in the API namespace (for backward compatibility), + * but part of the SDK. + */ +void Provider::SetMeterProvider(const nostd::shared_ptr &mp) noexcept +{ + opentelemetry::sdk::metrics::Provider::SetMeterProvider(mp); +} + +} // namespace metrics +OPENTELEMETRY_END_NAMESPACE + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace metrics +{ + +void Provider::SetMeterProvider( + const nostd::shared_ptr &mp) noexcept +{ + bool disabled = opentelemetry::sdk::common::GetSdkDisabled(); + + if (!disabled) + { + std::lock_guard guard( + opentelemetry::metrics::Provider::GetLock()); + opentelemetry::metrics::Provider::GetProvider() = mp; + } +} + +} // namespace metrics +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/src/trace/CMakeLists.txt b/sdk/src/trace/CMakeLists.txt index 939a6ed2bc..5a0b69d106 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..6c1636daee --- /dev/null +++ b/sdk/src/trace/provider.cc @@ -0,0 +1,52 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#include "opentelemetry/trace/provider.h" +#include "opentelemetry/common/spin_lock_mutex.h" +#include "opentelemetry/nostd/shared_ptr.h" +#include "opentelemetry/sdk/common/disabled.h" +#include "opentelemetry/sdk/trace/provider.h" +#include "opentelemetry/trace/noop.h" +#include "opentelemetry/trace/tracer_provider.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace trace +{ + +/* + * Note: + * This method is declared in the API namespace (for backward compatibility), + * but part of the SDK. + */ +void Provider::SetTracerProvider( + const nostd::shared_ptr &tp) noexcept +{ + opentelemetry::sdk::trace::Provider::SetTracerProvider(tp); +} + +} // namespace trace +OPENTELEMETRY_END_NAMESPACE + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace trace +{ + +void Provider::SetTracerProvider( + const nostd::shared_ptr &tp) noexcept +{ + bool disabled = opentelemetry::sdk::common::GetSdkDisabled(); + + if (!disabled) + { + std::lock_guard guard( + opentelemetry::trace::Provider::GetLock()); + opentelemetry::trace::Provider::GetProvider() = tp; + } +} + +} // namespace trace +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/test/CMakeLists.txt b/sdk/test/CMakeLists.txt index 33dd07f81a..ad8f8429fa 100644 --- a/sdk/test/CMakeLists.txt +++ b/sdk/test/CMakeLists.txt @@ -7,3 +7,7 @@ add_subdirectory(metrics) add_subdirectory(logs) add_subdirectory(resource) add_subdirectory(instrumentationscope) + +if(NOT OPENTELEMETRY_SKIP_DYNAMIC_LOADING_TESTS) + add_subdirectory(singleton) +endif() diff --git a/sdk/test/logs/CMakeLists.txt b/sdk/test/logs/CMakeLists.txt index f38e32769f..baebd339dd 100644 --- a/sdk/test/logs/CMakeLists.txt +++ b/sdk/test/logs/CMakeLists.txt @@ -2,7 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 foreach(testname - logger_provider_sdk_test logger_sdk_test log_record_test + 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( 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..7a0341deb1 --- /dev/null +++ b/sdk/test/logs/logger_provider_set_test.cc @@ -0,0 +1,143 @@ +// 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" + +#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; + +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()); + Provider::SetLoggerProvider(tf); + ASSERT_EQ(tf, Provider::GetLoggerProvider()); +} + +#ifndef NO_GETENV +TEST(Provider, SetLoggerProviderEnabled) +{ + setenv("OTEL_SDK_DISABLED", "false", 1); + + auto tf = shared_ptr(new TestProvider()); + Provider::SetLoggerProvider(tf); + ASSERT_EQ(tf, Provider::GetLoggerProvider()); + + unsetenv("OTEL_SDK_DISABLED"); +} + +TEST(Provider, SetLoggerProviderDisabled) +{ + setenv("OTEL_SDK_DISABLED", "true", 1); + + auto tf = shared_ptr(new TestProvider()); + Provider::SetLoggerProvider(tf); + ASSERT_NE(tf, Provider::GetLoggerProvider()); + + unsetenv("OTEL_SDK_DISABLED"); +} +#endif + +TEST(Provider, MultipleLoggerProviders) +{ + auto tf = shared_ptr(new TestProvider()); + Provider::SetLoggerProvider(tf); + auto tf2 = shared_ptr(new TestProvider()); + Provider::SetLoggerProvider(tf2); + + ASSERT_NE(Provider::GetLoggerProvider(), tf); +} + +class TestEventLoggerProvider : public EventLoggerProvider +{ +public: + nostd::shared_ptr CreateEventLogger( + nostd::shared_ptr /*delegate_logger*/, + nostd::string_view /*event_domain*/) noexcept override + { + return nostd::shared_ptr(nullptr); + } +}; + +TEST(Provider, SetEventLoggerProviderDefault) +{ +#ifndef NO_GETENV + unsetenv("OTEL_SDK_DISABLED"); +#endif + + auto tf = nostd::shared_ptr(new TestEventLoggerProvider()); + Provider::SetEventLoggerProvider(tf); + ASSERT_EQ(tf, Provider::GetEventLoggerProvider()); +} + +#ifndef NO_GETENV +TEST(Provider, SetEventLoggerProviderEnabled) +{ + setenv("OTEL_SDK_DISABLED", "false", 1); + + auto tf = nostd::shared_ptr(new TestEventLoggerProvider()); + Provider::SetEventLoggerProvider(tf); + ASSERT_EQ(tf, Provider::GetEventLoggerProvider()); + + unsetenv("OTEL_SDK_DISABLED"); +} + +TEST(Provider, SetEventLoggerProviderDisabled) +{ + setenv("OTEL_SDK_DISABLED", "true", 1); + + auto tf = nostd::shared_ptr(new TestEventLoggerProvider()); + Provider::SetEventLoggerProvider(tf); + ASSERT_NE(tf, Provider::GetEventLoggerProvider()); + + unsetenv("OTEL_SDK_DISABLED"); +} +#endif + +TEST(Provider, MultipleEventLoggerProviders) +{ + auto tf = nostd::shared_ptr(new TestEventLoggerProvider()); + Provider::SetEventLoggerProvider(tf); + auto tf2 = nostd::shared_ptr(new TestEventLoggerProvider()); + Provider::SetEventLoggerProvider(tf2); + + ASSERT_NE(Provider::GetEventLoggerProvider(), tf); +} + diff --git a/sdk/test/logs/logger_sdk_test.cc b/sdk/test/logs/logger_sdk_test.cc index 6ec5e616dd..c606f38f4a 100644 --- a/sdk/test/logs/logger_sdk_test.cc +++ b/sdk/test/logs/logger_sdk_test.cc @@ -15,6 +15,7 @@ #include "opentelemetry/logs/logger.h" #include "opentelemetry/logs/logger_provider.h" #include "opentelemetry/logs/severity.h" +#include "opentelemetry/logs/provider.h" #include "opentelemetry/nostd/shared_ptr.h" #include "opentelemetry/nostd/span.h" #include "opentelemetry/nostd/string_view.h" @@ -303,3 +304,46 @@ TEST(LoggerSDK, EventLog) ASSERT_EQ(shared_recordable->GetEventName(), "otel-cpp.event_name"); ASSERT_EQ(shared_recordable->GetEventDomain(), "otel-cpp.event_domain"); } + +// Define a basic Logger class +class TestLogger : public opentelemetry::logs::Logger +{ + const nostd::string_view GetName() noexcept override { return "test logger"; } + + nostd::unique_ptr CreateLogRecord() noexcept override + { + return nullptr; + } + + using Logger::EmitLogRecord; + + void EmitLogRecord(nostd::unique_ptr &&) noexcept override {} +}; + +// Define a basic LoggerProvider class that returns an instance of the logger class defined above +class TestProvider : public opentelemetry::logs::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 nostd::shared_ptr(new TestLogger()); + } +}; + +TEST(Logger, PushLoggerImplementation) +{ + // Push the new loggerprovider class into the global singleton + auto test_provider = nostd::shared_ptr(new TestProvider()); + opentelemetry::logs::Provider::SetLoggerProvider(test_provider); + + auto lp = opentelemetry::logs::Provider::GetLoggerProvider(); + + // Check that the implementation was pushed by calling TestLogger's GetName() + nostd::string_view schema_url{"https://opentelemetry.io/schemas/1.11.0"}; + auto logger = lp->GetLogger("TestLogger", "opentelelemtry_library", "", schema_url); + ASSERT_EQ("test logger", logger->GetName()); +} + 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..b9c24d16b1 --- /dev/null +++ b/sdk/test/metrics/meter_provider_set_test.cc @@ -0,0 +1,63 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#include + +#include "opentelemetry/metrics/noop.h" +#include "opentelemetry/metrics/provider.h" +#include "opentelemetry/nostd/shared_ptr.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; + +TEST(Provider, SetMeterProviderDefault) +{ +#ifndef NO_GETENV + unsetenv("OTEL_SDK_DISABLED"); +#endif + + auto tf = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); + Provider::SetMeterProvider(tf); + ASSERT_EQ(tf, Provider::GetMeterProvider()); +} + +#ifndef NO_GETENV +TEST(Provider, SetMeterProviderEnabled) +{ + setenv("OTEL_SDK_DISABLED", "false", 1); + + auto tf = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); + Provider::SetMeterProvider(tf); + ASSERT_EQ(tf, Provider::GetMeterProvider()); + + unsetenv("OTEL_SDK_DISABLED"); +} + +TEST(Provider, SetMeterProviderDisabled) +{ + setenv("OTEL_SDK_DISABLED", "true", 1); + + auto tf = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); + Provider::SetMeterProvider(tf); + ASSERT_NE(tf, Provider::GetMeterProvider()); + + unsetenv("OTEL_SDK_DISABLED"); +} +#endif + +TEST(Provider, MultipleMeterProviders) +{ + auto tf = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); + Provider::SetMeterProvider(tf); + auto tf2 = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); + Provider::SetMeterProvider(tf2); + + ASSERT_NE(Provider::GetMeterProvider(), tf); +} diff --git a/api/test/singleton/BUILD b/sdk/test/singleton/BUILD similarity index 100% rename from api/test/singleton/BUILD rename to sdk/test/singleton/BUILD diff --git a/api/test/singleton/CMakeLists.txt b/sdk/test/singleton/CMakeLists.txt similarity index 97% rename from api/test/singleton/CMakeLists.txt rename to sdk/test/singleton/CMakeLists.txt index 7c30d6e571..09e6ae19f9 100644 --- a/api/test/singleton/CMakeLists.txt +++ b/sdk/test/singleton/CMakeLists.txt @@ -47,7 +47,8 @@ target_link_libraries( ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${CMAKE_DL_LIBS} - opentelemetry_api) + opentelemetry_api + opentelemetry_trace) gtest_add_tests( TARGET singleton_test diff --git a/api/test/singleton/component_a.cc b/sdk/test/singleton/component_a.cc similarity index 100% rename from api/test/singleton/component_a.cc rename to sdk/test/singleton/component_a.cc diff --git a/api/test/singleton/component_a.h b/sdk/test/singleton/component_a.h similarity index 100% rename from api/test/singleton/component_a.h rename to sdk/test/singleton/component_a.h diff --git a/api/test/singleton/component_b.cc b/sdk/test/singleton/component_b.cc similarity index 100% rename from api/test/singleton/component_b.cc rename to sdk/test/singleton/component_b.cc diff --git a/api/test/singleton/component_b.h b/sdk/test/singleton/component_b.h similarity index 100% rename from api/test/singleton/component_b.h rename to sdk/test/singleton/component_b.h diff --git a/api/test/singleton/component_c.cc b/sdk/test/singleton/component_c.cc similarity index 100% rename from api/test/singleton/component_c.cc rename to sdk/test/singleton/component_c.cc diff --git a/api/test/singleton/component_c.h b/sdk/test/singleton/component_c.h similarity index 100% rename from api/test/singleton/component_c.h rename to sdk/test/singleton/component_c.h diff --git a/api/test/singleton/component_d.cc b/sdk/test/singleton/component_d.cc similarity index 100% rename from api/test/singleton/component_d.cc rename to sdk/test/singleton/component_d.cc diff --git a/api/test/singleton/component_d.h b/sdk/test/singleton/component_d.h similarity index 100% rename from api/test/singleton/component_d.h rename to sdk/test/singleton/component_d.h diff --git a/api/test/singleton/component_e.cc b/sdk/test/singleton/component_e.cc similarity index 100% rename from api/test/singleton/component_e.cc rename to sdk/test/singleton/component_e.cc diff --git a/api/test/singleton/component_e.h b/sdk/test/singleton/component_e.h similarity index 100% rename from api/test/singleton/component_e.h rename to sdk/test/singleton/component_e.h diff --git a/api/test/singleton/component_f.cc b/sdk/test/singleton/component_f.cc similarity index 100% rename from api/test/singleton/component_f.cc rename to sdk/test/singleton/component_f.cc diff --git a/api/test/singleton/component_f.h b/sdk/test/singleton/component_f.h similarity index 100% rename from api/test/singleton/component_f.h rename to sdk/test/singleton/component_f.h diff --git a/api/test/singleton/component_g.cc b/sdk/test/singleton/component_g.cc similarity index 100% rename from api/test/singleton/component_g.cc rename to sdk/test/singleton/component_g.cc diff --git a/api/test/singleton/component_h.cc b/sdk/test/singleton/component_h.cc similarity index 100% rename from api/test/singleton/component_h.cc rename to sdk/test/singleton/component_h.cc diff --git a/api/test/singleton/singleton_test.cc b/sdk/test/singleton/singleton_test.cc similarity index 100% rename from api/test/singleton/singleton_test.cc rename to sdk/test/singleton/singleton_test.cc diff --git a/sdk/test/trace/CMakeLists.txt b/sdk/test/trace/CMakeLists.txt index 385c8eaacd..c3e73e41c4 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..c9b03b17c5 --- /dev/null +++ b/sdk/test/trace/tracer_provider_set_test.cc @@ -0,0 +1,78 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#include + +#include "opentelemetry/nostd/shared_ptr.h" +#include "opentelemetry/nostd/string_view.h" +#include "opentelemetry/trace/provider.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::Provider; +using opentelemetry::trace::Tracer; +using opentelemetry::trace::TracerProvider; + +namespace nostd = opentelemetry::nostd; + +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()); + Provider::SetTracerProvider(tf); + ASSERT_EQ(tf, Provider::GetTracerProvider()); +} + +#ifndef NO_GETENV +TEST(Provider, SetTracerProviderEnabled) +{ + setenv("OTEL_SDK_DISABLED", "false", 1); + + auto tf = nostd::shared_ptr(new TestProvider()); + Provider::SetTracerProvider(tf); + ASSERT_EQ(tf, Provider::GetTracerProvider()); + + unsetenv("OTEL_SDK_DISABLED"); +} + +TEST(Provider, SetTracerProviderDisabled) +{ + setenv("OTEL_SDK_DISABLED", "true", 1); + + auto tf = nostd::shared_ptr(new TestProvider()); + Provider::SetTracerProvider(tf); + ASSERT_NE(tf, Provider::GetTracerProvider()); + + unsetenv("OTEL_SDK_DISABLED"); +} +#endif From 9bceb31b63e1b6f173606aa38690fb3fca54f02b Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Wed, 15 Jan 2025 22:49:33 +0100 Subject: [PATCH 02/17] build cleanup --- api/include/opentelemetry/metrics/provider.h | 4 ++-- api/include/opentelemetry/trace/provider.h | 3 ++- api/test/logs/logger_test.cc | 3 --- api/test/trace/provider_test.cc | 1 - sdk/include/opentelemetry/sdk/logs/provider.h | 2 +- sdk/src/logs/provider.cc | 6 +++--- sdk/test/logs/CMakeLists.txt | 8 +++++--- sdk/test/logs/logger_provider_set_test.cc | 3 +-- sdk/test/logs/logger_sdk_test.cc | 17 ++++++++++------- sdk/test/metrics/meter_provider_set_test.cc | 1 + sdk/test/singleton/BUILD | 10 ++++++---- sdk/test/trace/tracer_provider_set_test.cc | 1 + 12 files changed, 32 insertions(+), 27 deletions(-) diff --git a/api/include/opentelemetry/metrics/provider.h b/api/include/opentelemetry/metrics/provider.h index 11d34f072b..4c137c0165 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" @@ -16,7 +16,7 @@ namespace sdk { namespace metrics { -class Provider; +class Provider; // IWYU pragma: keep } } // namespace sdk diff --git a/api/include/opentelemetry/trace/provider.h b/api/include/opentelemetry/trace/provider.h index 22878afa47..168c89c6fc 100644 --- a/api/include/opentelemetry/trace/provider.h +++ b/api/include/opentelemetry/trace/provider.h @@ -7,6 +7,7 @@ #include "opentelemetry/common/spin_lock_mutex.h" #include "opentelemetry/nostd/shared_ptr.h" +#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/trace/noop.h" #include "opentelemetry/trace/tracer_provider.h" #include "opentelemetry/version.h" @@ -16,7 +17,7 @@ namespace sdk { namespace trace { -class Provider; +class Provider; // IWYU pragma: keep } } // namespace sdk diff --git a/api/test/logs/logger_test.cc b/api/test/logs/logger_test.cc index e57ec5d766..7bf3e02632 100644 --- a/api/test/logs/logger_test.cc +++ b/api/test/logs/logger_test.cc @@ -8,7 +8,6 @@ #include #include "opentelemetry/common/attribute_value.h" -#include "opentelemetry/common/key_value_iterable.h" #include "opentelemetry/common/key_value_iterable_view.h" #include "opentelemetry/logs/event_id.h" #include "opentelemetry/logs/event_logger.h" @@ -21,7 +20,6 @@ #include "opentelemetry/nostd/shared_ptr.h" #include "opentelemetry/nostd/span.h" #include "opentelemetry/nostd/string_view.h" -#include "opentelemetry/nostd/unique_ptr.h" using opentelemetry::logs::EventId; using opentelemetry::logs::Logger; @@ -191,4 +189,3 @@ TEST(Logger, EventLogMethodOverloads) event_logger->EmitEvent("event name", Severity::kDebug, opentelemetry::common::MakeAttributes(vec)); } - diff --git a/api/test/trace/provider_test.cc b/api/test/trace/provider_test.cc index 11b5fd40fb..9f98fb8074 100644 --- a/api/test/trace/provider_test.cc +++ b/api/test/trace/provider_test.cc @@ -4,7 +4,6 @@ #include #include "opentelemetry/nostd/shared_ptr.h" -#include "opentelemetry/nostd/string_view.h" #include "opentelemetry/trace/provider.h" #include "opentelemetry/trace/tracer_provider.h" diff --git a/sdk/include/opentelemetry/sdk/logs/provider.h b/sdk/include/opentelemetry/sdk/logs/provider.h index f9f1df947a..febf7c9593 100644 --- a/sdk/include/opentelemetry/sdk/logs/provider.h +++ b/sdk/include/opentelemetry/sdk/logs/provider.h @@ -34,6 +34,6 @@ class Provider const nostd::shared_ptr &lp) noexcept; }; -} // namespace metrics +} // namespace logs } // namespace sdk OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/src/logs/provider.cc b/sdk/src/logs/provider.cc index b3140e6f13..40bf919d41 100644 --- a/sdk/src/logs/provider.cc +++ b/sdk/src/logs/provider.cc @@ -4,8 +4,8 @@ #include "opentelemetry/metrics/provider.h" #include "opentelemetry/common/spin_lock_mutex.h" #include "opentelemetry/logs/logger_provider.h" -#include "opentelemetry/logs/provider.h" #include "opentelemetry/logs/noop.h" +#include "opentelemetry/logs/provider.h" #include "opentelemetry/nostd/shared_ptr.h" #include "opentelemetry/sdk/common/disabled.h" #include "opentelemetry/sdk/logs/provider.h" @@ -30,7 +30,7 @@ void Provider::SetEventLoggerProvider(const nostd::shared_ptr -#include +#include #include "opentelemetry/common/key_value_iterable.h" #include "opentelemetry/logs/event_logger.h" // IWYU pragma: keep @@ -140,4 +140,3 @@ TEST(Provider, MultipleEventLoggerProviders) ASSERT_NE(Provider::GetEventLoggerProvider(), tf); } - diff --git a/sdk/test/logs/logger_sdk_test.cc b/sdk/test/logs/logger_sdk_test.cc index c606f38f4a..d9f92338ab 100644 --- a/sdk/test/logs/logger_sdk_test.cc +++ b/sdk/test/logs/logger_sdk_test.cc @@ -9,16 +9,19 @@ #include #include "opentelemetry/common/attribute_value.h" +#include "opentelemetry/common/key_value_iterable.h" #include "opentelemetry/common/timestamp.h" #include "opentelemetry/logs/event_logger.h" #include "opentelemetry/logs/event_logger_provider.h" +#include "opentelemetry/logs/log_record.h" #include "opentelemetry/logs/logger.h" #include "opentelemetry/logs/logger_provider.h" -#include "opentelemetry/logs/severity.h" #include "opentelemetry/logs/provider.h" +#include "opentelemetry/logs/severity.h" #include "opentelemetry/nostd/shared_ptr.h" #include "opentelemetry/nostd/span.h" #include "opentelemetry/nostd/string_view.h" +#include "opentelemetry/nostd/unique_ptr.h" #include "opentelemetry/nostd/variant.h" #include "opentelemetry/sdk/instrumentationscope/instrumentation_scope.h" #include "opentelemetry/sdk/logs/event_logger_provider.h" @@ -323,11 +326,12 @@ class TestLogger : public opentelemetry::logs::Logger // Define a basic LoggerProvider class that returns an instance of the logger class defined above class TestProvider : public opentelemetry::logs::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 + 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 nostd::shared_ptr(new TestLogger()); } @@ -346,4 +350,3 @@ TEST(Logger, PushLoggerImplementation) auto logger = lp->GetLogger("TestLogger", "opentelelemtry_library", "", schema_url); ASSERT_EQ("test logger", logger->GetName()); } - diff --git a/sdk/test/metrics/meter_provider_set_test.cc b/sdk/test/metrics/meter_provider_set_test.cc index b9c24d16b1..eb0a2ca069 100644 --- a/sdk/test/metrics/meter_provider_set_test.cc +++ b/sdk/test/metrics/meter_provider_set_test.cc @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 #include +#include #include "opentelemetry/metrics/noop.h" #include "opentelemetry/metrics/provider.h" diff --git a/sdk/test/singleton/BUILD b/sdk/test/singleton/BUILD index eae9f6b8c0..d37599a45b 100644 --- a/sdk/test/singleton/BUILD +++ b/sdk/test/singleton/BUILD @@ -159,15 +159,15 @@ cc_binary( # # To build this test alone: -# - bazel build //api/test/singleton:singleton_test -# - bazel build //api/test/singleton:component_g -# - bazel build //api/test/singleton:component_h +# - bazel build //sdk/test/singleton:singleton_test +# - bazel build //sdk/test/singleton:component_g +# - bazel build //sdk/test/singleton:component_h # # Note that singleton_test does not depend on # component_g and component_h, on purpose. # # To run this test: -# bazel test //api/test/singleton:singleton_test +# bazel test //sdk/test/singleton:singleton_test # cc_test( @@ -196,6 +196,8 @@ cc_test( "component_e", "component_f", "//api", + "//sdk/src/common", + "//sdk/src/trace", "@com_google_googletest//:gtest_main", ], ) diff --git a/sdk/test/trace/tracer_provider_set_test.cc b/sdk/test/trace/tracer_provider_set_test.cc index c9b03b17c5..540554107d 100644 --- a/sdk/test/trace/tracer_provider_set_test.cc +++ b/sdk/test/trace/tracer_provider_set_test.cc @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 #include +#include #include "opentelemetry/nostd/shared_ptr.h" #include "opentelemetry/nostd/string_view.h" From 037a5b008e311c85fc139fb51fff4c2a1d32527e Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Wed, 15 Jan 2025 23:29:42 +0100 Subject: [PATCH 03/17] build --- api/include/opentelemetry/trace/provider.h | 1 - 1 file changed, 1 deletion(-) diff --git a/api/include/opentelemetry/trace/provider.h b/api/include/opentelemetry/trace/provider.h index 168c89c6fc..1cf3d18880 100644 --- a/api/include/opentelemetry/trace/provider.h +++ b/api/include/opentelemetry/trace/provider.h @@ -7,7 +7,6 @@ #include "opentelemetry/common/spin_lock_mutex.h" #include "opentelemetry/nostd/shared_ptr.h" -#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/trace/noop.h" #include "opentelemetry/trace/tracer_provider.h" #include "opentelemetry/version.h" From d7f0de674d89c90241d52c0f2d09f018c8ab1b72 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Thu, 16 Jan 2025 00:18:23 +0100 Subject: [PATCH 04/17] bazel cleanup --- api/include/opentelemetry/trace/provider.h | 4 ++++ api/test/metrics/meter_provider_test.cc | 1 - sdk/src/common/BUILD | 12 ++++++++++++ sdk/src/logs/BUILD | 1 + sdk/src/metrics/BUILD | 1 + sdk/src/trace/BUILD | 1 + sdk/src/trace/provider.cc | 1 - sdk/test/logs/BUILD | 16 ++++++++++++++++ sdk/test/singleton/BUILD | 2 +- sdk/test/trace/BUILD | 16 ++++++++++++++++ 10 files changed, 52 insertions(+), 3 deletions(-) diff --git a/api/include/opentelemetry/trace/provider.h b/api/include/opentelemetry/trace/provider.h index 1cf3d18880..04a4faf4f1 100644 --- a/api/include/opentelemetry/trace/provider.h +++ b/api/include/opentelemetry/trace/provider.h @@ -11,6 +11,10 @@ #include "opentelemetry/trace/tracer_provider.h" #include "opentelemetry/version.h" +// The friend declaration is sufficient, +// we do not want a API -> SDK dependency. +// IWYU pragma: no_include "opentelemetry/sdk/trace/provider.h" + OPENTELEMETRY_BEGIN_NAMESPACE namespace sdk { diff --git a/api/test/metrics/meter_provider_test.cc b/api/test/metrics/meter_provider_test.cc index 93473b4425..9c0b7e7502 100644 --- a/api/test/metrics/meter_provider_test.cc +++ b/api/test/metrics/meter_provider_test.cc @@ -4,7 +4,6 @@ #include #include "opentelemetry/metrics/provider.h" -#include "opentelemetry/nostd/shared_ptr.h" using opentelemetry::metrics::MeterProvider; using opentelemetry::metrics::Provider; 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/logs/BUILD b/sdk/src/logs/BUILD index 93642e99b6..b11029a3aa 100644 --- a/sdk/src/logs/BUILD +++ b/sdk/src/logs/BUILD @@ -11,6 +11,7 @@ cc_library( "//api", "//sdk:headers", "//sdk/src/common:global_log_handler", + "//sdk/src/common:disabled", "//sdk/src/resource", ], ) diff --git a/sdk/src/metrics/BUILD b/sdk/src/metrics/BUILD index 78f224b5ab..82c8205094 100644 --- a/sdk/src/metrics/BUILD +++ b/sdk/src/metrics/BUILD @@ -11,6 +11,7 @@ cc_library( "//api", "//sdk:headers", "//sdk/src/common:global_log_handler", + "//sdk/src/common:disabled", "//sdk/src/common:random", "//sdk/src/resource", ], diff --git a/sdk/src/trace/BUILD b/sdk/src/trace/BUILD index df99eb1520..bf7c157c93 100644 --- a/sdk/src/trace/BUILD +++ b/sdk/src/trace/BUILD @@ -12,6 +12,7 @@ cc_library( "//api", "//sdk:headers", "//sdk/src/common:global_log_handler", + "//sdk/src/common:disabled", "//sdk/src/common:random", "//sdk/src/resource", ], diff --git a/sdk/src/trace/provider.cc b/sdk/src/trace/provider.cc index 6c1636daee..4e70d15b74 100644 --- a/sdk/src/trace/provider.cc +++ b/sdk/src/trace/provider.cc @@ -6,7 +6,6 @@ #include "opentelemetry/nostd/shared_ptr.h" #include "opentelemetry/sdk/common/disabled.h" #include "opentelemetry/sdk/trace/provider.h" -#include "opentelemetry/trace/noop.h" #include "opentelemetry/trace/tracer_provider.h" #include "opentelemetry/version.h" 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/singleton/BUILD b/sdk/test/singleton/BUILD index d37599a45b..e8caca538f 100644 --- a/sdk/test/singleton/BUILD +++ b/sdk/test/singleton/BUILD @@ -196,7 +196,7 @@ cc_test( "component_e", "component_f", "//api", - "//sdk/src/common", + "//sdk/src/common:disabled", "//sdk/src/trace", "@com_google_googletest//:gtest_main", ], diff --git a/sdk/test/trace/BUILD b/sdk/test/trace/BUILD index 9aa8a95cdf..2a29eabe3b 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 = [ From 4b46785546f9e5afdaf0b6d642a0463da3d5a993 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Sat, 18 Jan 2025 02:29:30 +0100 Subject: [PATCH 05/17] Rework --- api/include/opentelemetry/logs/provider.h | 35 ++++++++------ api/include/opentelemetry/metrics/provider.h | 20 +++++--- api/include/opentelemetry/trace/provider.h | 24 +++++----- api/test/logs/logger_test.cc | 46 +++++++++++++++++++ api/test/logs/provider_test.cc | 38 +++++++++++++++ api/test/metrics/meter_provider_test.cc | 22 +++++++++ api/test/trace/provider_test.cc | 32 +++++++++++++ examples/batch/main.cc | 5 +- examples/grpc/tracer_common.h | 5 +- examples/http/tracer_common.h | 24 +++++----- examples/logs_simple/main.cc | 10 ++-- examples/metrics_simple/metrics_ostream.cc | 5 +- examples/multi_processor/main.cc | 5 +- examples/multithreaded/main.cc | 5 +- examples/otlp/file_log_main.cc | 10 ++-- examples/otlp/file_main.cc | 5 +- examples/otlp/file_metric_main.cc | 17 +++---- 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 | 32 +++++++------ examples/otlp/http_log_main.cc | 10 ++-- examples/otlp/http_main.cc | 5 +- examples/otlp/http_metric_main.cc | 17 +++---- examples/prometheus/main.cc | 5 +- examples/simple/main.cc | 5 +- examples/zipkin/main.cc | 5 +- exporters/ostream/test/ostream_log_test.cc | 5 +- .../otlp_grpc_log_record_exporter_test.cc | 9 ++-- functional/otlp/func_grpc_main.cc | 5 +- functional/otlp/func_http_main.cc | 5 +- sdk/src/logs/BUILD | 2 +- sdk/src/logs/provider.cc | 22 --------- sdk/src/metrics/BUILD | 2 +- sdk/src/metrics/provider.cc | 17 ------- sdk/src/trace/BUILD | 2 +- sdk/src/trace/provider.cc | 18 -------- sdk/test/logs/logger_provider_sdk_test.cc | 4 +- sdk/test/logs/logger_provider_set_test.cc | 42 +++++++++-------- sdk/test/logs/logger_sdk_test.cc | 6 ++- sdk/test/metrics/meter_provider_set_test.cc | 23 ++++++---- sdk/test/singleton/singleton_test.cc | 7 +-- sdk/test/trace/tracer_provider_set_test.cc | 19 ++++---- 43 files changed, 369 insertions(+), 226 deletions(-) diff --git a/api/include/opentelemetry/logs/provider.h b/api/include/opentelemetry/logs/provider.h index ae697d72dc..b6752cb9f1 100644 --- a/api/include/opentelemetry/logs/provider.h +++ b/api/include/opentelemetry/logs/provider.h @@ -16,8 +16,11 @@ namespace sdk { namespace logs { +// The forward declaration is sufficient, +// we do not want a API -> SDK dependency. +// IWYU pragma: no_include "opentelemetry/sdk/logs/provider.h" class Provider; -} +} // namespace logs } // namespace sdk namespace logs @@ -44,15 +47,18 @@ class OPENTELEMETRY_EXPORT Provider return nostd::shared_ptr(GetProvider()); } +#if OPENTELEMETRY_ABI_VERSION_NO == 1 + /** * Changes the singleton LoggerProvider. - * While declared in the API class opentelemetry::logs::Provider, - * this method is actually part of the SDK, not API. - * An application **MUST** link with the opentelemetry-cpp SDK, - * to install a logs provider, when configuring OpenTelemetry. - * An instrumented library does not need to invoke this method. */ - static void SetLoggerProvider(const nostd::shared_ptr &lp) noexcept; + static void SetLoggerProvider(const nostd::shared_ptr &tp) noexcept + { + std::lock_guard guard(GetLock()); + GetProvider() = tp; + } + +#endif /* OPENTELEMETRY_ABI_VERSION_NO */ /** * Returns the singleton EventLoggerProvider. @@ -66,15 +72,18 @@ class OPENTELEMETRY_EXPORT Provider return nostd::shared_ptr(GetEventProvider()); } +#if OPENTELEMETRY_ABI_VERSION_NO == 1 + /** * Changes the singleton EventLoggerProvider. - * While declared in the API class opentelemetry::logs::Provider, - * this method is actually part of the SDK, not API. - * An application **MUST** link with the opentelemetry-cpp SDK, - * to install an event logs provider, when configuring OpenTelemetry. - * An instrumented library does not need to invoke this method. */ - static void SetEventLoggerProvider(const nostd::shared_ptr &lp) noexcept; + static void SetEventLoggerProvider(const nostd::shared_ptr &tp) noexcept + { + std::lock_guard guard(GetLock()); + GetEventProvider() = tp; + } + +#endif /* OPENTELEMETRY_ABI_VERSION_NO */ private: /* The SDK is allowed to change the singleton in the API. */ diff --git a/api/include/opentelemetry/metrics/provider.h b/api/include/opentelemetry/metrics/provider.h index 4c137c0165..171ce09e49 100644 --- a/api/include/opentelemetry/metrics/provider.h +++ b/api/include/opentelemetry/metrics/provider.h @@ -16,8 +16,11 @@ namespace sdk { namespace metrics { +// The forward declaration is sufficient, +// we do not want a API -> SDK dependency. +// IWYU pragma: no_include "opentelemetry/sdk/metrics/provider.h" class Provider; // IWYU pragma: keep -} +} // namespace metrics } // namespace sdk namespace metrics @@ -43,15 +46,18 @@ class Provider return nostd::shared_ptr(GetProvider()); } +#if OPENTELEMETRY_ABI_VERSION_NO == 1 + /** * Changes the singleton MeterProvider. - * While declared in the API class opentelemetry::metrics::Provider, - * this method is actually part of the SDK, not API. - * An application **MUST** link with the opentelemetry-cpp SDK, - * to install a metrics provider, when configuring OpenTelemetry. - * An instrumented library does not need to invoke this method. */ - static void SetMeterProvider(const nostd::shared_ptr &mp) noexcept; + static void SetMeterProvider(const nostd::shared_ptr &tp) noexcept + { + std::lock_guard guard(GetLock()); + GetProvider() = tp; + } + +#endif /* OPENTELEMETRY_ABI_VERSION_NO */ private: /* The SDK is allowed to change the singleton in the API. */ diff --git a/api/include/opentelemetry/trace/provider.h b/api/include/opentelemetry/trace/provider.h index 04a4faf4f1..dc7bcd1969 100644 --- a/api/include/opentelemetry/trace/provider.h +++ b/api/include/opentelemetry/trace/provider.h @@ -11,17 +11,16 @@ #include "opentelemetry/trace/tracer_provider.h" #include "opentelemetry/version.h" -// The friend declaration is sufficient, -// we do not want a API -> SDK dependency. -// IWYU pragma: no_include "opentelemetry/sdk/trace/provider.h" - OPENTELEMETRY_BEGIN_NAMESPACE namespace sdk { namespace trace { +// The forward declaration is sufficient, +// we do not want a API -> SDK dependency. +// IWYU pragma: no_include "opentelemetry/sdk/trace/provider.h" class Provider; // IWYU pragma: keep -} +} // namespace trace } // namespace sdk namespace trace @@ -45,15 +44,18 @@ class OPENTELEMETRY_EXPORT Provider return nostd::shared_ptr(GetProvider()); } +#if OPENTELEMETRY_ABI_VERSION_NO == 1 + /** * Changes the singleton TracerProvider. - * While declared in the API class opentelemetry::trace::Provider, - * this method is actually part of the SDK, not API. - * An application **MUST** link with the opentelemetry-cpp SDK, - * to install a tracer provider, when configuring OpenTelemetry. - * An instrumented library does not need to invoke this method. */ - static void SetTracerProvider(const nostd::shared_ptr &tp) noexcept; + static void SetTracerProvider(const nostd::shared_ptr &tp) noexcept + { + std::lock_guard guard(GetLock()); + GetProvider() = tp; + } + +#endif /* OPENTELEMETRY_ABI_VERSION_NO */ private: /* The SDK is allowed to change the singleton in the API. */ diff --git a/api/test/logs/logger_test.cc b/api/test/logs/logger_test.cc index 7bf3e02632..043a8626bb 100644 --- a/api/test/logs/logger_test.cc +++ b/api/test/logs/logger_test.cc @@ -8,6 +8,7 @@ #include #include "opentelemetry/common/attribute_value.h" +#include "opentelemetry/common/key_value_iterable.h" #include "opentelemetry/common/key_value_iterable_view.h" #include "opentelemetry/logs/event_id.h" #include "opentelemetry/logs/event_logger.h" @@ -20,6 +21,7 @@ #include "opentelemetry/nostd/shared_ptr.h" #include "opentelemetry/nostd/span.h" #include "opentelemetry/nostd/string_view.h" +#include "opentelemetry/nostd/unique_ptr.h" using opentelemetry::logs::EventId; using opentelemetry::logs::Logger; @@ -189,3 +191,47 @@ TEST(Logger, EventLogMethodOverloads) event_logger->EmitEvent("event name", Severity::kDebug, opentelemetry::common::MakeAttributes(vec)); } + +// Define a basic Logger class +class TestLogger : public Logger +{ + const nostd::string_view GetName() noexcept override { return "test logger"; } + + nostd::unique_ptr CreateLogRecord() noexcept override + { + return nullptr; + } + + using Logger::EmitLogRecord; + + void EmitLogRecord(nostd::unique_ptr &&) noexcept override {} +}; + +// Define a basic LoggerProvider class that returns an instance of the logger class defined above +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 common::KeyValueIterable & /* attributes */) override + { + return nostd::shared_ptr(new TestLogger()); + } +}; + +#if OPENTELEMETRY_ABI_VERSION_NO == 1 +TEST(Logger, PushLoggerImplementation) +{ + // Push the new loggerprovider class into the global singleton + auto test_provider = shared_ptr(new TestProvider()); + Provider::SetLoggerProvider(test_provider); + + auto lp = Provider::GetLoggerProvider(); + + // Check that the implementation was pushed by calling TestLogger's GetName() + nostd::string_view schema_url{"https://opentelemetry.io/schemas/1.11.0"}; + auto logger = lp->GetLogger("TestLogger", "opentelelemtry_library", "", schema_url); + ASSERT_EQ("test logger", logger->GetName()); +} +#endif /* OPENTELEMETRY_ABI_VERSION_NO */ diff --git a/api/test/logs/provider_test.cc b/api/test/logs/provider_test.cc index 8ceb72e324..7856ac19c6 100644 --- a/api/test/logs/provider_test.cc +++ b/api/test/logs/provider_test.cc @@ -40,6 +40,25 @@ TEST(Provider, GetLoggerProviderDefault) EXPECT_NE(nullptr, tf); } +#if OPENTELEMETRY_ABI_VERSION_NO == 1 +TEST(Provider, SetLoggerProvider) +{ + auto tf = shared_ptr(new TestProvider()); + Provider::SetLoggerProvider(tf); + ASSERT_EQ(tf, Provider::GetLoggerProvider()); +} + +TEST(Provider, MultipleLoggerProviders) +{ + auto tf = shared_ptr(new TestProvider()); + Provider::SetLoggerProvider(tf); + auto tf2 = shared_ptr(new TestProvider()); + Provider::SetLoggerProvider(tf2); + + ASSERT_NE(Provider::GetLoggerProvider(), tf); +} +#endif /* OPENTELEMETRY_ABI_VERSION_NO */ + TEST(Provider, GetLogger) { auto tf = shared_ptr(new TestProvider()); @@ -71,6 +90,25 @@ TEST(Provider, GetEventLoggerProviderDefault) EXPECT_NE(nullptr, tf); } +#if OPENTELEMETRY_ABI_VERSION_NO == 1 +TEST(Provider, SetEventLoggerProvider) +{ + auto tf = nostd::shared_ptr(new TestEventLoggerProvider()); + Provider::SetEventLoggerProvider(tf); + ASSERT_EQ(tf, Provider::GetEventLoggerProvider()); +} + +TEST(Provider, MultipleEventLoggerProviders) +{ + auto tf = nostd::shared_ptr(new TestEventLoggerProvider()); + Provider::SetEventLoggerProvider(tf); + auto tf2 = nostd::shared_ptr(new TestEventLoggerProvider()); + Provider::SetEventLoggerProvider(tf2); + + ASSERT_NE(Provider::GetEventLoggerProvider(), tf); +} +#endif /* OPENTELEMETRY_ABI_VERSION_NO */ + TEST(Provider, CreateEventLogger) { auto tf = nostd::shared_ptr(new TestEventLoggerProvider()); diff --git a/api/test/metrics/meter_provider_test.cc b/api/test/metrics/meter_provider_test.cc index 9c0b7e7502..9f4cde512f 100644 --- a/api/test/metrics/meter_provider_test.cc +++ b/api/test/metrics/meter_provider_test.cc @@ -3,9 +3,12 @@ #include +#include "opentelemetry/metrics/noop.h" #include "opentelemetry/metrics/provider.h" +#include "opentelemetry/nostd/shared_ptr.h" using opentelemetry::metrics::MeterProvider; +using opentelemetry::metrics::NoopMeterProvider; using opentelemetry::metrics::Provider; TEST(Provider, GetMeterProviderDefault) @@ -13,3 +16,22 @@ TEST(Provider, GetMeterProviderDefault) auto tf = Provider::GetMeterProvider(); EXPECT_NE(nullptr, tf); } + +#if OPENTELEMETRY_ABI_VERSION_NO == 1 +TEST(Provider, SetMeterProvider) +{ + auto tf = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); + Provider::SetMeterProvider(tf); + ASSERT_EQ(tf, Provider::GetMeterProvider()); +} + +TEST(Provider, MultipleMeterProviders) +{ + auto tf = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); + Provider::SetMeterProvider(tf); + auto tf2 = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); + Provider::SetMeterProvider(tf2); + + ASSERT_NE(Provider::GetMeterProvider(), tf); +} +#endif /* OPENTELEMETRY_ABI_VERSION_NO */ diff --git a/api/test/trace/provider_test.cc b/api/test/trace/provider_test.cc index 9f98fb8074..601320e21e 100644 --- a/api/test/trace/provider_test.cc +++ b/api/test/trace/provider_test.cc @@ -4,6 +4,7 @@ #include #include "opentelemetry/nostd/shared_ptr.h" +#include "opentelemetry/nostd/string_view.h" #include "opentelemetry/trace/provider.h" #include "opentelemetry/trace/tracer_provider.h" @@ -13,8 +14,39 @@ using opentelemetry::trace::TracerProvider; namespace nostd = opentelemetry::nostd; +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, GetTracerProviderDefault) { auto tf = Provider::GetTracerProvider(); EXPECT_NE(nullptr, tf); } + +#if OPENTELEMETRY_ABI_VERSION_NO == 1 +TEST(Provider, SetTracerProvider) +{ + auto tf = nostd::shared_ptr(new TestProvider()); + Provider::SetTracerProvider(tf); + ASSERT_EQ(tf, Provider::GetTracerProvider()); +} +#endif /* OPENTELEMETRY_ABI_VERSION_NO */ 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..ad2e0ee4bf 100644 --- a/examples/logs_simple/main.cc +++ b/examples/logs_simple/main.cc @@ -12,9 +12,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" @@ -48,13 +50,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 +71,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..5948850fd7 100644 --- a/examples/metrics_simple/metrics_ostream.cc +++ b/examples/metrics_simple/metrics_ostream.cc @@ -19,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" #include "opentelemetry/sdk/metrics/view/instrument_selector.h" #include "opentelemetry/sdk/metrics/view/instrument_selector_factory.h" @@ -114,13 +115,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..194b0711ae 100644 --- a/examples/multi_processor/main.cc +++ b/examples/multi_processor/main.cc @@ -16,6 +16,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_factory.h" #include "opentelemetry/sdk/trace/span_data.h" #include "opentelemetry/sdk/trace/tracer_provider.h" @@ -55,7 +56,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 +64,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..25b83872a0 100644 --- a/examples/otlp/file_log_main.cc +++ b/examples/otlp/file_log_main.cc @@ -18,9 +18,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" @@ -57,7 +59,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 +72,7 @@ void CleanupTracer() tracer_provider.reset(); std::shared_ptr none; - trace::Provider::SetTracerProvider(none); + trace_sdk::Provider::SetTracerProvider(none); } void InitLogger() @@ -81,7 +83,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 +96,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..82f4e91608 100644 --- a/examples/otlp/file_main.cc +++ b/examples/otlp/file_main.cc @@ -10,6 +10,7 @@ #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" @@ -41,7 +42,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 +55,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..688922f0c3 100644 --- a/examples/otlp/file_metric_main.cc +++ b/examples/otlp/file_metric_main.cc @@ -20,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 @@ -28,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; @@ -46,26 +47,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 81a6aa611e..8683f8712d 100644 --- a/examples/otlp/grpc_log_main.cc +++ b/examples/otlp/grpc_log_main.cc @@ -10,9 +10,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" @@ -50,7 +52,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() @@ -63,7 +65,7 @@ void CleanupTracer() tracer_provider.reset(); std::shared_ptr none; - trace::Provider::SetTracerProvider(none); + trace_sdk::Provider::SetTracerProvider(none); } void InitLogger() @@ -75,7 +77,7 @@ void InitLogger() // 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() @@ -88,7 +90,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..ab10f43359 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 @@ -20,34 +22,34 @@ #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 +188,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 +202,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 +243,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 +257,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 +286,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 +300,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..14a4b946bf 100644 --- a/examples/otlp/http_log_main.cc +++ b/examples/otlp/http_log_main.cc @@ -19,9 +19,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" @@ -75,7 +77,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 +90,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 +107,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 +120,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..4046435dfb 100644 --- a/examples/otlp/http_main.cc +++ b/examples/otlp/http_main.cc @@ -11,6 +11,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" @@ -43,7 +44,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 +57,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..e096e3b77b 100644 --- a/examples/otlp/http_metric_main.cc +++ b/examples/otlp/http_metric_main.cc @@ -21,6 +21,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 +30,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 +50,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..475024e96d 100644 --- a/examples/prometheus/main.cc +++ b/examples/prometheus/main.cc @@ -16,6 +16,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/view/instrument_selector.h" #include "opentelemetry/sdk/metrics/view/instrument_selector_factory.h" #include "opentelemetry/sdk/metrics/view/meter_selector.h" @@ -87,13 +88,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..8a842f04e4 100644 --- a/examples/simple/main.cc +++ b/examples/simple/main.cc @@ -7,6 +7,7 @@ #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" @@ -35,13 +36,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..398681b060 100644 --- a/examples/zipkin/main.cc +++ b/examples/zipkin/main.cc @@ -10,6 +10,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" @@ -40,13 +41,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 a2604de096..9c5be02925 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/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/src/logs/BUILD b/sdk/src/logs/BUILD index b11029a3aa..8c3e44e205 100644 --- a/sdk/src/logs/BUILD +++ b/sdk/src/logs/BUILD @@ -10,8 +10,8 @@ cc_library( deps = [ "//api", "//sdk:headers", - "//sdk/src/common:global_log_handler", "//sdk/src/common:disabled", + "//sdk/src/common:global_log_handler", "//sdk/src/resource", ], ) diff --git a/sdk/src/logs/provider.cc b/sdk/src/logs/provider.cc index 40bf919d41..d4be5c0592 100644 --- a/sdk/src/logs/provider.cc +++ b/sdk/src/logs/provider.cc @@ -11,28 +11,6 @@ #include "opentelemetry/sdk/logs/provider.h" #include "opentelemetry/version.h" -OPENTELEMETRY_BEGIN_NAMESPACE -namespace logs -{ - -/* - * Note: - * This method is declared in the API namespace (for backward compatibility), - * but part of the SDK. - */ -void Provider::SetLoggerProvider(const nostd::shared_ptr &lp) noexcept -{ - opentelemetry::sdk::logs::Provider::SetLoggerProvider(lp); -} - -void Provider::SetEventLoggerProvider(const nostd::shared_ptr &lp) noexcept -{ - opentelemetry::sdk::logs::Provider::SetEventLoggerProvider(lp); -} - -} // namespace logs -OPENTELEMETRY_END_NAMESPACE - OPENTELEMETRY_BEGIN_NAMESPACE namespace sdk { diff --git a/sdk/src/metrics/BUILD b/sdk/src/metrics/BUILD index 82c8205094..aa8ed74b45 100644 --- a/sdk/src/metrics/BUILD +++ b/sdk/src/metrics/BUILD @@ -10,8 +10,8 @@ cc_library( deps = [ "//api", "//sdk:headers", - "//sdk/src/common:global_log_handler", "//sdk/src/common:disabled", + "//sdk/src/common:global_log_handler", "//sdk/src/common:random", "//sdk/src/resource", ], diff --git a/sdk/src/metrics/provider.cc b/sdk/src/metrics/provider.cc index e3464bda2c..1aa8b6fcaa 100644 --- a/sdk/src/metrics/provider.cc +++ b/sdk/src/metrics/provider.cc @@ -10,23 +10,6 @@ #include "opentelemetry/sdk/metrics/provider.h" #include "opentelemetry/version.h" -OPENTELEMETRY_BEGIN_NAMESPACE -namespace metrics -{ - -/* - * Note: - * This method is declared in the API namespace (for backward compatibility), - * but part of the SDK. - */ -void Provider::SetMeterProvider(const nostd::shared_ptr &mp) noexcept -{ - opentelemetry::sdk::metrics::Provider::SetMeterProvider(mp); -} - -} // namespace metrics -OPENTELEMETRY_END_NAMESPACE - OPENTELEMETRY_BEGIN_NAMESPACE namespace sdk { diff --git a/sdk/src/trace/BUILD b/sdk/src/trace/BUILD index bf7c157c93..7262a1c0a0 100644 --- a/sdk/src/trace/BUILD +++ b/sdk/src/trace/BUILD @@ -11,8 +11,8 @@ cc_library( deps = [ "//api", "//sdk:headers", - "//sdk/src/common:global_log_handler", "//sdk/src/common:disabled", + "//sdk/src/common:global_log_handler", "//sdk/src/common:random", "//sdk/src/resource", ], diff --git a/sdk/src/trace/provider.cc b/sdk/src/trace/provider.cc index 4e70d15b74..277ad56f3f 100644 --- a/sdk/src/trace/provider.cc +++ b/sdk/src/trace/provider.cc @@ -9,24 +9,6 @@ #include "opentelemetry/trace/tracer_provider.h" #include "opentelemetry/version.h" -OPENTELEMETRY_BEGIN_NAMESPACE -namespace trace -{ - -/* - * Note: - * This method is declared in the API namespace (for backward compatibility), - * but part of the SDK. - */ -void Provider::SetTracerProvider( - const nostd::shared_ptr &tp) noexcept -{ - opentelemetry::sdk::trace::Provider::SetTracerProvider(tp); -} - -} // namespace trace -OPENTELEMETRY_END_NAMESPACE - OPENTELEMETRY_BEGIN_NAMESPACE namespace sdk { 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 index ed1171f6d1..78f7ac981b 100644 --- a/sdk/test/logs/logger_provider_set_test.cc +++ b/sdk/test/logs/logger_provider_set_test.cc @@ -12,6 +12,7 @@ #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" @@ -25,7 +26,10 @@ using opentelemetry::logs::Logger; using opentelemetry::logs::LoggerProvider; using opentelemetry::logs::Provider; using opentelemetry::nostd::shared_ptr; -namespace nostd = opentelemetry::nostd; + +namespace nostd = opentelemetry::nostd; +namespace logs_api = opentelemetry::logs; +namespace logs_sdk = opentelemetry::sdk::logs; class TestProvider : public LoggerProvider { @@ -47,8 +51,8 @@ TEST(Provider, SetLoggerProviderDefault) #endif auto tf = shared_ptr(new TestProvider()); - Provider::SetLoggerProvider(tf); - ASSERT_EQ(tf, Provider::GetLoggerProvider()); + logs_sdk::Provider::SetLoggerProvider(tf); + ASSERT_EQ(tf, logs_api::Provider::GetLoggerProvider()); } #ifndef NO_GETENV @@ -57,8 +61,8 @@ TEST(Provider, SetLoggerProviderEnabled) setenv("OTEL_SDK_DISABLED", "false", 1); auto tf = shared_ptr(new TestProvider()); - Provider::SetLoggerProvider(tf); - ASSERT_EQ(tf, Provider::GetLoggerProvider()); + logs_sdk::Provider::SetLoggerProvider(tf); + ASSERT_EQ(tf, logs_api::Provider::GetLoggerProvider()); unsetenv("OTEL_SDK_DISABLED"); } @@ -68,8 +72,8 @@ TEST(Provider, SetLoggerProviderDisabled) setenv("OTEL_SDK_DISABLED", "true", 1); auto tf = shared_ptr(new TestProvider()); - Provider::SetLoggerProvider(tf); - ASSERT_NE(tf, Provider::GetLoggerProvider()); + logs_sdk::Provider::SetLoggerProvider(tf); + ASSERT_NE(tf, logs_api::Provider::GetLoggerProvider()); unsetenv("OTEL_SDK_DISABLED"); } @@ -78,11 +82,11 @@ TEST(Provider, SetLoggerProviderDisabled) TEST(Provider, MultipleLoggerProviders) { auto tf = shared_ptr(new TestProvider()); - Provider::SetLoggerProvider(tf); + logs_sdk::Provider::SetLoggerProvider(tf); auto tf2 = shared_ptr(new TestProvider()); - Provider::SetLoggerProvider(tf2); + logs_sdk::Provider::SetLoggerProvider(tf2); - ASSERT_NE(Provider::GetLoggerProvider(), tf); + ASSERT_NE(logs_api::Provider::GetLoggerProvider(), tf); } class TestEventLoggerProvider : public EventLoggerProvider @@ -103,8 +107,8 @@ TEST(Provider, SetEventLoggerProviderDefault) #endif auto tf = nostd::shared_ptr(new TestEventLoggerProvider()); - Provider::SetEventLoggerProvider(tf); - ASSERT_EQ(tf, Provider::GetEventLoggerProvider()); + logs_sdk::Provider::SetEventLoggerProvider(tf); + ASSERT_EQ(tf, logs_api::Provider::GetEventLoggerProvider()); } #ifndef NO_GETENV @@ -113,8 +117,8 @@ TEST(Provider, SetEventLoggerProviderEnabled) setenv("OTEL_SDK_DISABLED", "false", 1); auto tf = nostd::shared_ptr(new TestEventLoggerProvider()); - Provider::SetEventLoggerProvider(tf); - ASSERT_EQ(tf, Provider::GetEventLoggerProvider()); + logs_sdk::Provider::SetEventLoggerProvider(tf); + ASSERT_EQ(tf, logs_api::Provider::GetEventLoggerProvider()); unsetenv("OTEL_SDK_DISABLED"); } @@ -124,8 +128,8 @@ TEST(Provider, SetEventLoggerProviderDisabled) setenv("OTEL_SDK_DISABLED", "true", 1); auto tf = nostd::shared_ptr(new TestEventLoggerProvider()); - Provider::SetEventLoggerProvider(tf); - ASSERT_NE(tf, Provider::GetEventLoggerProvider()); + logs_sdk::Provider::SetEventLoggerProvider(tf); + ASSERT_NE(tf, logs_api::Provider::GetEventLoggerProvider()); unsetenv("OTEL_SDK_DISABLED"); } @@ -134,9 +138,9 @@ TEST(Provider, SetEventLoggerProviderDisabled) TEST(Provider, MultipleEventLoggerProviders) { auto tf = nostd::shared_ptr(new TestEventLoggerProvider()); - Provider::SetEventLoggerProvider(tf); + logs_sdk::Provider::SetEventLoggerProvider(tf); auto tf2 = nostd::shared_ptr(new TestEventLoggerProvider()); - Provider::SetEventLoggerProvider(tf2); + logs_sdk::Provider::SetEventLoggerProvider(tf2); - ASSERT_NE(Provider::GetEventLoggerProvider(), tf); + ASSERT_NE(logs_api::Provider::GetEventLoggerProvider(), tf); } diff --git a/sdk/test/logs/logger_sdk_test.cc b/sdk/test/logs/logger_sdk_test.cc index d9f92338ab..7971c837ee 100644 --- a/sdk/test/logs/logger_sdk_test.cc +++ b/sdk/test/logs/logger_sdk_test.cc @@ -28,6 +28,7 @@ #include "opentelemetry/sdk/logs/logger.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/resource/resource.h" #include "opentelemetry/sdk/trace/processor.h" @@ -43,6 +44,7 @@ using namespace opentelemetry::sdk::logs; namespace logs_api = opentelemetry::logs; +namespace logs_sdk = opentelemetry::sdk::logs; namespace nostd = opentelemetry::nostd; TEST(LoggerSDK, LogToNullProcessor) @@ -341,9 +343,9 @@ TEST(Logger, PushLoggerImplementation) { // Push the new loggerprovider class into the global singleton auto test_provider = nostd::shared_ptr(new TestProvider()); - opentelemetry::logs::Provider::SetLoggerProvider(test_provider); + logs_sdk::Provider::SetLoggerProvider(test_provider); - auto lp = opentelemetry::logs::Provider::GetLoggerProvider(); + auto lp = logs_api::Provider::GetLoggerProvider(); // Check that the implementation was pushed by calling TestLogger's GetName() nostd::string_view schema_url{"https://opentelemetry.io/schemas/1.11.0"}; diff --git a/sdk/test/metrics/meter_provider_set_test.cc b/sdk/test/metrics/meter_provider_set_test.cc index eb0a2ca069..bd8aae8cff 100644 --- a/sdk/test/metrics/meter_provider_set_test.cc +++ b/sdk/test/metrics/meter_provider_set_test.cc @@ -4,9 +4,11 @@ #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" @@ -18,6 +20,9 @@ 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 @@ -25,8 +30,8 @@ TEST(Provider, SetMeterProviderDefault) #endif auto tf = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); - Provider::SetMeterProvider(tf); - ASSERT_EQ(tf, Provider::GetMeterProvider()); + metrics_sdk::Provider::SetMeterProvider(tf); + ASSERT_EQ(tf, metrics_api::Provider::GetMeterProvider()); } #ifndef NO_GETENV @@ -35,8 +40,8 @@ TEST(Provider, SetMeterProviderEnabled) setenv("OTEL_SDK_DISABLED", "false", 1); auto tf = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); - Provider::SetMeterProvider(tf); - ASSERT_EQ(tf, Provider::GetMeterProvider()); + metrics_sdk::Provider::SetMeterProvider(tf); + ASSERT_EQ(tf, metrics_api::Provider::GetMeterProvider()); unsetenv("OTEL_SDK_DISABLED"); } @@ -46,8 +51,8 @@ TEST(Provider, SetMeterProviderDisabled) setenv("OTEL_SDK_DISABLED", "true", 1); auto tf = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); - Provider::SetMeterProvider(tf); - ASSERT_NE(tf, Provider::GetMeterProvider()); + metrics_sdk::Provider::SetMeterProvider(tf); + ASSERT_NE(tf, metrics_api::Provider::GetMeterProvider()); unsetenv("OTEL_SDK_DISABLED"); } @@ -56,9 +61,9 @@ TEST(Provider, SetMeterProviderDisabled) TEST(Provider, MultipleMeterProviders) { auto tf = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); - Provider::SetMeterProvider(tf); + metrics_sdk::Provider::SetMeterProvider(tf); auto tf2 = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); - Provider::SetMeterProvider(tf2); + metrics_sdk::Provider::SetMeterProvider(tf2); - ASSERT_NE(Provider::GetMeterProvider(), tf); + ASSERT_NE(metrics_api::Provider::GetMeterProvider(), tf); } diff --git a/sdk/test/singleton/singleton_test.cc b/sdk/test/singleton/singleton_test.cc index 456ca4d37f..b8c896bad2 100644 --- a/sdk/test/singleton/singleton_test.cc +++ b/sdk/test/singleton/singleton_test.cc @@ -20,6 +20,7 @@ #include "opentelemetry/common/key_value_iterable.h" #include "opentelemetry/nostd/shared_ptr.h" #include "opentelemetry/nostd/string_view.h" +#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/trace/default_span.h" #include "opentelemetry/trace/noop.h" #include "opentelemetry/trace/provider.h" @@ -325,11 +326,11 @@ void setup_otel() std::shared_ptr provider = MyTracerProvider::Create(); // The whole point of this test is to make sure - // that the API singleton behind SetTracerProvider() + // that the API singleton behind GetTracerProvider() // works for all components, static and dynamic. // Set the global tracer provider - trace_api::Provider::SetTracerProvider(provider); + opentelemetry::sdk::trace::Provider::SetTracerProvider(provider); } void cleanup_otel() @@ -338,7 +339,7 @@ void cleanup_otel() new opentelemetry::trace::NoopTracerProvider()); // Set the global tracer provider - trace_api::Provider::SetTracerProvider(provider); + opentelemetry::sdk::trace::Provider::SetTracerProvider(provider); } // TODO: Remove once windows api singletons are supported. diff --git a/sdk/test/trace/tracer_provider_set_test.cc b/sdk/test/trace/tracer_provider_set_test.cc index 540554107d..d8aebe7085 100644 --- a/sdk/test/trace/tracer_provider_set_test.cc +++ b/sdk/test/trace/tracer_provider_set_test.cc @@ -6,7 +6,9 @@ #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) @@ -15,11 +17,12 @@ using opentelemetry::sdk::common::setenv; using opentelemetry::sdk::common::unsetenv; #endif -using opentelemetry::trace::Provider; using opentelemetry::trace::Tracer; using opentelemetry::trace::TracerProvider; -namespace nostd = opentelemetry::nostd; +namespace nostd = opentelemetry::nostd; +namespace trace_api = opentelemetry::trace; +namespace trace_sdk = opentelemetry::sdk::trace; class TestProvider : public TracerProvider { @@ -50,8 +53,8 @@ TEST(Provider, SetTracerProviderDefault) #endif auto tf = nostd::shared_ptr(new TestProvider()); - Provider::SetTracerProvider(tf); - ASSERT_EQ(tf, Provider::GetTracerProvider()); + trace_sdk::Provider::SetTracerProvider(tf); + ASSERT_EQ(tf, trace_api::Provider::GetTracerProvider()); } #ifndef NO_GETENV @@ -60,8 +63,8 @@ TEST(Provider, SetTracerProviderEnabled) setenv("OTEL_SDK_DISABLED", "false", 1); auto tf = nostd::shared_ptr(new TestProvider()); - Provider::SetTracerProvider(tf); - ASSERT_EQ(tf, Provider::GetTracerProvider()); + trace_sdk::Provider::SetTracerProvider(tf); + ASSERT_EQ(tf, trace_api::Provider::GetTracerProvider()); unsetenv("OTEL_SDK_DISABLED"); } @@ -71,8 +74,8 @@ TEST(Provider, SetTracerProviderDisabled) setenv("OTEL_SDK_DISABLED", "true", 1); auto tf = nostd::shared_ptr(new TestProvider()); - Provider::SetTracerProvider(tf); - ASSERT_NE(tf, Provider::GetTracerProvider()); + trace_sdk::Provider::SetTracerProvider(tf); + ASSERT_NE(tf, trace_api::Provider::GetTracerProvider()); unsetenv("OTEL_SDK_DISABLED"); } From fb4914ff5a25c7217b8b761f0c9ff326d48cb45c Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Sat, 18 Jan 2025 02:46:45 +0100 Subject: [PATCH 06/17] abi v2 build cleanup --- ext/test/w3c_tracecontext_http_test_server/main.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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() From 624fdc7079e8d93b0eea63f8f9446d245c1bffe7 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Sat, 18 Jan 2025 23:32:06 +0100 Subject: [PATCH 07/17] Cleanup --- api/include/opentelemetry/logs/provider.h | 26 +++++++++----------- api/include/opentelemetry/metrics/provider.h | 6 ++--- api/include/opentelemetry/trace/provider.h | 6 ++--- ext/src/dll/input.src | 3 +++ sdk/src/logs/provider.cc | 8 ++---- sdk/src/metrics/provider.cc | 4 +-- sdk/src/trace/provider.cc | 4 +-- 7 files changed, 24 insertions(+), 33 deletions(-) diff --git a/api/include/opentelemetry/logs/provider.h b/api/include/opentelemetry/logs/provider.h index b6752cb9f1..5d2c026b31 100644 --- a/api/include/opentelemetry/logs/provider.h +++ b/api/include/opentelemetry/logs/provider.h @@ -47,33 +47,31 @@ class OPENTELEMETRY_EXPORT Provider return nostd::shared_ptr(GetProvider()); } -#if OPENTELEMETRY_ABI_VERSION_NO == 1 - /** - * Changes the singleton LoggerProvider. + * Returns the singleton EventLoggerProvider. + * + * By default, a no-op EventLoggerProvider is returned. This will never return a + * nullptr EventLoggerProvider. */ - static void SetLoggerProvider(const nostd::shared_ptr &tp) noexcept + static nostd::shared_ptr GetEventLoggerProvider() noexcept { std::lock_guard guard(GetLock()); - GetProvider() = tp; + return nostd::shared_ptr(GetEventProvider()); } +#if OPENTELEMETRY_ABI_VERSION_NO >= 2 +private: #endif /* OPENTELEMETRY_ABI_VERSION_NO */ /** - * Returns the singleton EventLoggerProvider. - * - * By default, a no-op EventLoggerProvider is returned. This will never return a - * nullptr EventLoggerProvider. + * Changes the singleton LoggerProvider. */ - static nostd::shared_ptr GetEventLoggerProvider() noexcept + static void SetLoggerProvider(const nostd::shared_ptr &tp) noexcept { std::lock_guard guard(GetLock()); - return nostd::shared_ptr(GetEventProvider()); + GetProvider() = tp; } -#if OPENTELEMETRY_ABI_VERSION_NO == 1 - /** * Changes the singleton EventLoggerProvider. */ @@ -83,8 +81,6 @@ class OPENTELEMETRY_EXPORT Provider GetEventProvider() = tp; } -#endif /* OPENTELEMETRY_ABI_VERSION_NO */ - private: /* The SDK is allowed to change the singleton in the API. */ friend class opentelemetry::sdk::logs::Provider; diff --git a/api/include/opentelemetry/metrics/provider.h b/api/include/opentelemetry/metrics/provider.h index 171ce09e49..4df35274ee 100644 --- a/api/include/opentelemetry/metrics/provider.h +++ b/api/include/opentelemetry/metrics/provider.h @@ -46,7 +46,9 @@ class Provider return nostd::shared_ptr(GetProvider()); } -#if OPENTELEMETRY_ABI_VERSION_NO == 1 +#if OPENTELEMETRY_ABI_VERSION_NO >= 2 +private: +#endif /* OPENTELEMETRY_ABI_VERSION_NO */ /** * Changes the singleton MeterProvider. @@ -57,8 +59,6 @@ class Provider GetProvider() = tp; } -#endif /* OPENTELEMETRY_ABI_VERSION_NO */ - private: /* The SDK is allowed to change the singleton in the API. */ friend class opentelemetry::sdk::metrics::Provider; diff --git a/api/include/opentelemetry/trace/provider.h b/api/include/opentelemetry/trace/provider.h index dc7bcd1969..355e0b89e1 100644 --- a/api/include/opentelemetry/trace/provider.h +++ b/api/include/opentelemetry/trace/provider.h @@ -44,7 +44,9 @@ class OPENTELEMETRY_EXPORT Provider return nostd::shared_ptr(GetProvider()); } -#if OPENTELEMETRY_ABI_VERSION_NO == 1 +#if OPENTELEMETRY_ABI_VERSION_NO >= 2 +private: +#endif /* OPENTELEMETRY_ABI_VERSION_NO */ /** * Changes the singleton TracerProvider. @@ -55,8 +57,6 @@ class OPENTELEMETRY_EXPORT Provider GetProvider() = tp; } -#endif /* OPENTELEMETRY_ABI_VERSION_NO */ - private: /* The SDK is allowed to change the singleton in the API. */ friend class opentelemetry::sdk::trace::Provider; diff --git a/ext/src/dll/input.src b/ext/src/dll/input.src index 98c4c140fe..d9a6a5649e 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 +Provider@trace@sdk@v1@opentelemetry +Provider@metrics@sdk@v1@opentelemetry +Provider@logs@sdk@v1@opentelemetry #if defined(WITH_OTLP_GRPC) || defined(WITH_OTLP_HTTP) GetOtlpDefaultTracesTimeout@otlp@exporter@v1@opentelemetry diff --git a/sdk/src/logs/provider.cc b/sdk/src/logs/provider.cc index d4be5c0592..ac56e76786 100644 --- a/sdk/src/logs/provider.cc +++ b/sdk/src/logs/provider.cc @@ -24,9 +24,7 @@ void Provider::SetLoggerProvider( if (!disabled) { - std::lock_guard guard( - opentelemetry::logs::Provider::GetLock()); - opentelemetry::logs::Provider::GetProvider() = lp; + opentelemetry::logs::Provider::SetLoggerProvider(lp); } } @@ -37,9 +35,7 @@ void Provider::SetEventLoggerProvider( if (!disabled) { - std::lock_guard guard( - opentelemetry::logs::Provider::GetLock()); - opentelemetry::logs::Provider::GetEventProvider() = lp; + opentelemetry::logs::Provider::SetEventLoggerProvider(lp); } } diff --git a/sdk/src/metrics/provider.cc b/sdk/src/metrics/provider.cc index 1aa8b6fcaa..2317df3fcd 100644 --- a/sdk/src/metrics/provider.cc +++ b/sdk/src/metrics/provider.cc @@ -23,9 +23,7 @@ void Provider::SetMeterProvider( if (!disabled) { - std::lock_guard guard( - opentelemetry::metrics::Provider::GetLock()); - opentelemetry::metrics::Provider::GetProvider() = mp; + opentelemetry::metrics::Provider::SetMeterProvider(mp); } } diff --git a/sdk/src/trace/provider.cc b/sdk/src/trace/provider.cc index 277ad56f3f..7f496bf2f7 100644 --- a/sdk/src/trace/provider.cc +++ b/sdk/src/trace/provider.cc @@ -22,9 +22,7 @@ void Provider::SetTracerProvider( if (!disabled) { - std::lock_guard guard( - opentelemetry::trace::Provider::GetLock()); - opentelemetry::trace::Provider::GetProvider() = tp; + opentelemetry::trace::Provider::SetTracerProvider(tp); } } From 48554480b75a96f55b2afd44794612ad9838c871 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Tue, 28 Jan 2025 23:25:14 +0100 Subject: [PATCH 08/17] Revert all changes on EventLogger. --- api/include/opentelemetry/logs/provider.h | 18 +++--- api/test/logs/provider_test.cc | 2 - sdk/include/opentelemetry/sdk/logs/provider.h | 6 -- sdk/src/logs/provider.cc | 11 ---- sdk/test/logs/logger_provider_set_test.cc | 56 ------------------- 5 files changed, 9 insertions(+), 84 deletions(-) diff --git a/api/include/opentelemetry/logs/provider.h b/api/include/opentelemetry/logs/provider.h index 5d2c026b31..70dfe7a55a 100644 --- a/api/include/opentelemetry/logs/provider.h +++ b/api/include/opentelemetry/logs/provider.h @@ -59,6 +59,15 @@ class OPENTELEMETRY_EXPORT Provider return nostd::shared_ptr(GetEventProvider()); } + /** + * Changes the singleton EventLoggerProvider. + */ + static void SetEventLoggerProvider(const nostd::shared_ptr &tp) noexcept + { + std::lock_guard guard(GetLock()); + GetEventProvider() = tp; + } + #if OPENTELEMETRY_ABI_VERSION_NO >= 2 private: #endif /* OPENTELEMETRY_ABI_VERSION_NO */ @@ -72,15 +81,6 @@ class OPENTELEMETRY_EXPORT Provider GetProvider() = tp; } - /** - * Changes the singleton EventLoggerProvider. - */ - static void SetEventLoggerProvider(const nostd::shared_ptr &tp) noexcept - { - std::lock_guard guard(GetLock()); - GetEventProvider() = tp; - } - private: /* The SDK is allowed to change the singleton in the API. */ friend class opentelemetry::sdk::logs::Provider; diff --git a/api/test/logs/provider_test.cc b/api/test/logs/provider_test.cc index 7856ac19c6..460b662bb7 100644 --- a/api/test/logs/provider_test.cc +++ b/api/test/logs/provider_test.cc @@ -90,7 +90,6 @@ TEST(Provider, GetEventLoggerProviderDefault) EXPECT_NE(nullptr, tf); } -#if OPENTELEMETRY_ABI_VERSION_NO == 1 TEST(Provider, SetEventLoggerProvider) { auto tf = nostd::shared_ptr(new TestEventLoggerProvider()); @@ -107,7 +106,6 @@ TEST(Provider, MultipleEventLoggerProviders) ASSERT_NE(Provider::GetEventLoggerProvider(), tf); } -#endif /* OPENTELEMETRY_ABI_VERSION_NO */ TEST(Provider, CreateEventLogger) { diff --git a/sdk/include/opentelemetry/sdk/logs/provider.h b/sdk/include/opentelemetry/sdk/logs/provider.h index febf7c9593..aa637e6998 100644 --- a/sdk/include/opentelemetry/sdk/logs/provider.h +++ b/sdk/include/opentelemetry/sdk/logs/provider.h @@ -26,12 +26,6 @@ class Provider */ static void SetLoggerProvider( const nostd::shared_ptr &lp) noexcept; - - /** - * Changes the singleton EventLoggerProvider. - */ - static void SetEventLoggerProvider( - const nostd::shared_ptr &lp) noexcept; }; } // namespace logs diff --git a/sdk/src/logs/provider.cc b/sdk/src/logs/provider.cc index ac56e76786..3068e53981 100644 --- a/sdk/src/logs/provider.cc +++ b/sdk/src/logs/provider.cc @@ -28,17 +28,6 @@ void Provider::SetLoggerProvider( } } -void Provider::SetEventLoggerProvider( - const nostd::shared_ptr &lp) noexcept -{ - bool disabled = opentelemetry::sdk::common::GetSdkDisabled(); - - if (!disabled) - { - opentelemetry::logs::Provider::SetEventLoggerProvider(lp); - } -} - } // namespace logs } // namespace sdk OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/test/logs/logger_provider_set_test.cc b/sdk/test/logs/logger_provider_set_test.cc index 78f7ac981b..40e4790e93 100644 --- a/sdk/test/logs/logger_provider_set_test.cc +++ b/sdk/test/logs/logger_provider_set_test.cc @@ -88,59 +88,3 @@ TEST(Provider, MultipleLoggerProviders) ASSERT_NE(logs_api::Provider::GetLoggerProvider(), tf); } - -class TestEventLoggerProvider : public EventLoggerProvider -{ -public: - nostd::shared_ptr CreateEventLogger( - nostd::shared_ptr /*delegate_logger*/, - nostd::string_view /*event_domain*/) noexcept override - { - return nostd::shared_ptr(nullptr); - } -}; - -TEST(Provider, SetEventLoggerProviderDefault) -{ -#ifndef NO_GETENV - unsetenv("OTEL_SDK_DISABLED"); -#endif - - auto tf = nostd::shared_ptr(new TestEventLoggerProvider()); - logs_sdk::Provider::SetEventLoggerProvider(tf); - ASSERT_EQ(tf, logs_api::Provider::GetEventLoggerProvider()); -} - -#ifndef NO_GETENV -TEST(Provider, SetEventLoggerProviderEnabled) -{ - setenv("OTEL_SDK_DISABLED", "false", 1); - - auto tf = nostd::shared_ptr(new TestEventLoggerProvider()); - logs_sdk::Provider::SetEventLoggerProvider(tf); - ASSERT_EQ(tf, logs_api::Provider::GetEventLoggerProvider()); - - unsetenv("OTEL_SDK_DISABLED"); -} - -TEST(Provider, SetEventLoggerProviderDisabled) -{ - setenv("OTEL_SDK_DISABLED", "true", 1); - - auto tf = nostd::shared_ptr(new TestEventLoggerProvider()); - logs_sdk::Provider::SetEventLoggerProvider(tf); - ASSERT_NE(tf, logs_api::Provider::GetEventLoggerProvider()); - - unsetenv("OTEL_SDK_DISABLED"); -} -#endif - -TEST(Provider, MultipleEventLoggerProviders) -{ - auto tf = nostd::shared_ptr(new TestEventLoggerProvider()); - logs_sdk::Provider::SetEventLoggerProvider(tf); - auto tf2 = nostd::shared_ptr(new TestEventLoggerProvider()); - logs_sdk::Provider::SetEventLoggerProvider(tf2); - - ASSERT_NE(logs_api::Provider::GetEventLoggerProvider(), tf); -} From e683b1eb33ae23de3e64292c6715dadafd06dc32 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Wed, 29 Jan 2025 00:09:26 +0100 Subject: [PATCH 09/17] Build cleanup --- api/include/opentelemetry/metrics/provider.h | 2 -- examples/logs_simple/main.cc | 2 -- examples/metrics_simple/metrics_ostream.cc | 1 - examples/multi_processor/main.cc | 1 - examples/otlp/file_log_main.cc | 2 -- examples/otlp/file_main.cc | 1 - examples/otlp/file_metric_main.cc | 1 - examples/otlp/http_instrumented_main.cc | 3 --- examples/otlp/http_log_main.cc | 2 -- examples/otlp/http_main.cc | 1 - examples/otlp/http_metric_main.cc | 1 - examples/prometheus/main.cc | 1 - examples/simple/main.cc | 1 - examples/zipkin/main.cc | 1 - ext/src/dll/input.src | 6 +++--- sdk/src/trace/provider.cc | 1 - sdk/test/metrics/meter_provider_set_test.cc | 1 - sdk/test/singleton/singleton_test.cc | 1 - 18 files changed, 3 insertions(+), 26 deletions(-) diff --git a/api/include/opentelemetry/metrics/provider.h b/api/include/opentelemetry/metrics/provider.h index 4df35274ee..b82acf5d0c 100644 --- a/api/include/opentelemetry/metrics/provider.h +++ b/api/include/opentelemetry/metrics/provider.h @@ -26,8 +26,6 @@ class Provider; // IWYU pragma: keep namespace metrics { -class MeterProvider; - /** * Stores the singleton global MeterProvider. */ diff --git a/examples/logs_simple/main.cc b/examples/logs_simple/main.cc index ad2e0ee4bf..275ebada10 100644 --- a/examples/logs_simple/main.cc +++ b/examples/logs_simple/main.cc @@ -7,7 +7,6 @@ #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" @@ -20,7 +19,6 @@ #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 diff --git a/examples/metrics_simple/metrics_ostream.cc b/examples/metrics_simple/metrics_ostream.cc index 5948850fd7..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" diff --git a/examples/multi_processor/main.cc b/examples/multi_processor/main.cc index 194b0711ae..de01b7a749 100644 --- a/examples/multi_processor/main.cc +++ b/examples/multi_processor/main.cc @@ -21,7 +21,6 @@ #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" diff --git a/examples/otlp/file_log_main.cc b/examples/otlp/file_log_main.cc index 25b83872a0..c5c7987bf2 100644 --- a/examples/otlp/file_log_main.cc +++ b/examples/otlp/file_log_main.cc @@ -12,7 +12,6 @@ #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" @@ -26,7 +25,6 @@ #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 diff --git a/examples/otlp/file_main.cc b/examples/otlp/file_main.cc index 82f4e91608..62000dc18a 100644 --- a/examples/otlp/file_main.cc +++ b/examples/otlp/file_main.cc @@ -14,7 +14,6 @@ #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 diff --git a/examples/otlp/file_metric_main.cc b/examples/otlp/file_metric_main.cc index 688922f0c3..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" diff --git a/examples/otlp/http_instrumented_main.cc b/examples/otlp/http_instrumented_main.cc index ab10f43359..7c6068f596 100644 --- a/examples/otlp/http_instrumented_main.cc +++ b/examples/otlp/http_instrumented_main.cc @@ -18,9 +18,7 @@ #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" @@ -47,7 +45,6 @@ #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" #ifdef BAZEL_BUILD diff --git a/examples/otlp/http_log_main.cc b/examples/otlp/http_log_main.cc index 14a4b946bf..ad96d6b02c 100644 --- a/examples/otlp/http_log_main.cc +++ b/examples/otlp/http_log_main.cc @@ -13,7 +13,6 @@ #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" @@ -27,7 +26,6 @@ #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 diff --git a/examples/otlp/http_main.cc b/examples/otlp/http_main.cc index 4046435dfb..a76a00e188 100644 --- a/examples/otlp/http_main.cc +++ b/examples/otlp/http_main.cc @@ -15,7 +15,6 @@ #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 diff --git a/examples/otlp/http_metric_main.cc b/examples/otlp/http_metric_main.cc index e096e3b77b..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" diff --git a/examples/prometheus/main.cc b/examples/prometheus/main.cc index 475024e96d..b2c2c74fec 100644 --- a/examples/prometheus/main.cc +++ b/examples/prometheus/main.cc @@ -11,7 +11,6 @@ #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" diff --git a/examples/simple/main.cc b/examples/simple/main.cc index 8a842f04e4..f0341a946d 100644 --- a/examples/simple/main.cc +++ b/examples/simple/main.cc @@ -11,7 +11,6 @@ #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 diff --git a/examples/zipkin/main.cc b/examples/zipkin/main.cc index 398681b060..909c52fb69 100644 --- a/examples/zipkin/main.cc +++ b/examples/zipkin/main.cc @@ -14,7 +14,6 @@ #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 diff --git a/ext/src/dll/input.src b/ext/src/dll/input.src index d9a6a5649e..d3d58b7691 100644 --- a/ext/src/dll/input.src +++ b/ext/src/dll/input.src @@ -23,9 +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 -Provider@trace@sdk@v1@opentelemetry -Provider@metrics@sdk@v1@opentelemetry -Provider@logs@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/sdk/src/trace/provider.cc b/sdk/src/trace/provider.cc index 7f496bf2f7..ff27c40961 100644 --- a/sdk/src/trace/provider.cc +++ b/sdk/src/trace/provider.cc @@ -2,7 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 #include "opentelemetry/trace/provider.h" -#include "opentelemetry/common/spin_lock_mutex.h" #include "opentelemetry/nostd/shared_ptr.h" #include "opentelemetry/sdk/common/disabled.h" #include "opentelemetry/sdk/trace/provider.h" diff --git a/sdk/test/metrics/meter_provider_set_test.cc b/sdk/test/metrics/meter_provider_set_test.cc index bd8aae8cff..926ddc3eaf 100644 --- a/sdk/test/metrics/meter_provider_set_test.cc +++ b/sdk/test/metrics/meter_provider_set_test.cc @@ -4,7 +4,6 @@ #include #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/sdk/test/singleton/singleton_test.cc b/sdk/test/singleton/singleton_test.cc index b8c896bad2..bf11f7f994 100644 --- a/sdk/test/singleton/singleton_test.cc +++ b/sdk/test/singleton/singleton_test.cc @@ -23,7 +23,6 @@ #include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/trace/default_span.h" #include "opentelemetry/trace/noop.h" -#include "opentelemetry/trace/provider.h" #include "opentelemetry/trace/span.h" #include "opentelemetry/trace/span_context.h" #include "opentelemetry/trace/span_context_kv_iterable.h" From 5da4f7f8840507a99f5dbf937731fcfd109d8242 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Wed, 29 Jan 2025 01:07:00 +0100 Subject: [PATCH 10/17] CHANGELOG --- CHANGELOG.md | 41 +++++++++++++++++++++ api/test/metrics/meter_provider_test.cc | 1 + sdk/src/logs/provider.cc | 2 - sdk/src/metrics/provider.cc | 2 - sdk/test/metrics/meter_provider_set_test.cc | 1 + 5 files changed, 43 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ff1b44ed2..1083c973db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,47 @@ Increment the: ## [Unreleased] +* [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. + + * Note that the API methods will no longer be public starting + with OPENTELEMETRY_ABI_VERSION >= 2, only the SDK methods will + be available then. + + * All the example code has been updated to reflect the new usage. + +Breaking changes: + +* [SDK] Support OTEL_SDK_DISABLED environment variable + [#3245](https://github.com/open-telemetry/opentelemetry-cpp/pull/3245) + + * The following existing API methods are no longer public + starting with OPENTELEMETRY_ABI_VERSION >= 2. + + * opentelemetry::trace::Provider::SetTracerProvider() + * opentelemetry::metrics::Provider::SetMeterProvider() + * opentelemetry::logs::Provider::SetLoggerProvider() + + * Applications should use the corresponding SDK methods, + already available in every ABI version. + ## [1.19 2025-01-22] * [PROMETHEUS_EXPORTER] Fix default for emitting otel_scope attributes diff --git a/api/test/metrics/meter_provider_test.cc b/api/test/metrics/meter_provider_test.cc index 9f4cde512f..facec6f5b3 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/sdk/src/logs/provider.cc b/sdk/src/logs/provider.cc index 3068e53981..224bc8c39d 100644 --- a/sdk/src/logs/provider.cc +++ b/sdk/src/logs/provider.cc @@ -2,9 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 #include "opentelemetry/metrics/provider.h" -#include "opentelemetry/common/spin_lock_mutex.h" #include "opentelemetry/logs/logger_provider.h" -#include "opentelemetry/logs/noop.h" #include "opentelemetry/logs/provider.h" #include "opentelemetry/nostd/shared_ptr.h" #include "opentelemetry/sdk/common/disabled.h" diff --git a/sdk/src/metrics/provider.cc b/sdk/src/metrics/provider.cc index 2317df3fcd..798f6f9749 100644 --- a/sdk/src/metrics/provider.cc +++ b/sdk/src/metrics/provider.cc @@ -2,9 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 #include "opentelemetry/metrics/provider.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/sdk/common/disabled.h" #include "opentelemetry/sdk/metrics/provider.h" diff --git a/sdk/test/metrics/meter_provider_set_test.cc b/sdk/test/metrics/meter_provider_set_test.cc index 926ddc3eaf..bd8aae8cff 100644 --- a/sdk/test/metrics/meter_provider_set_test.cc +++ b/sdk/test/metrics/meter_provider_set_test.cc @@ -4,6 +4,7 @@ #include #include +#include "opentelemetry/metrics/meter_provider.h" #include "opentelemetry/metrics/noop.h" #include "opentelemetry/metrics/provider.h" #include "opentelemetry/nostd/shared_ptr.h" From 1ddfbd9bb97141d4b1c94aaa6b78ef0d186cdedc Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Tue, 4 Feb 2025 12:05:47 +0100 Subject: [PATCH 11/17] [SDK] Fix BatchLogRecordProcessor to instrument shutdown (#3262) --- sdk/src/logs/batch_log_record_processor.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/src/logs/batch_log_record_processor.cc b/sdk/src/logs/batch_log_record_processor.cc index 2080136303..324905ff62 100644 --- a/sdk/src/logs/batch_log_record_processor.cc +++ b/sdk/src/logs/batch_log_record_processor.cc @@ -218,7 +218,7 @@ void BatchLogRecordProcessor::DoBackgroundWork() if (synchronization_data_->is_shutdown.load() == true) { DrainQueue(); - return; + break; } auto start = std::chrono::steady_clock::now(); From 55547203efacb254ab9964c472c6f80ba5ba14a8 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Tue, 4 Feb 2025 17:51:30 +0100 Subject: [PATCH 12/17] Revert API changes --- CHANGELOG.md | 19 ----------- api/include/opentelemetry/logs/provider.h | 36 +++++--------------- api/include/opentelemetry/metrics/provider.h | 20 ++--------- api/include/opentelemetry/trace/provider.h | 18 ---------- api/test/logs/logger_test.cc | 2 -- api/test/logs/provider_test.cc | 2 -- api/test/metrics/meter_provider_test.cc | 3 -- api/test/trace/provider_test.cc | 2 -- 8 files changed, 11 insertions(+), 91 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e253b68c6..90ea49e17c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,27 +38,8 @@ Important changes: * Applications are encouraged to migrate from the API to the SDK `Provider` classes, to benefit from this feature. - * Note that the API methods will no longer be public starting - with OPENTELEMETRY_ABI_VERSION >= 2, only the SDK methods will - be available then. - * All the example code has been updated to reflect the new usage. -Breaking changes: - -* [SDK] Support OTEL_SDK_DISABLED environment variable - [#3245](https://github.com/open-telemetry/opentelemetry-cpp/pull/3245) - - * The following existing API methods are no longer public - starting with OPENTELEMETRY_ABI_VERSION >= 2. - - * opentelemetry::trace::Provider::SetTracerProvider() - * opentelemetry::metrics::Provider::SetMeterProvider() - * opentelemetry::logs::Provider::SetLoggerProvider() - - * Applications should use the corresponding SDK methods, - already available in every ABI version. - ## [1.19 2025-01-22] * [PROMETHEUS_EXPORTER] Fix default for emitting otel_scope attributes diff --git a/api/include/opentelemetry/logs/provider.h b/api/include/opentelemetry/logs/provider.h index 70dfe7a55a..1d8a1901d8 100644 --- a/api/include/opentelemetry/logs/provider.h +++ b/api/include/opentelemetry/logs/provider.h @@ -12,17 +12,6 @@ #include "opentelemetry/version.h" OPENTELEMETRY_BEGIN_NAMESPACE -namespace sdk -{ -namespace logs -{ -// The forward declaration is sufficient, -// we do not want a API -> SDK dependency. -// IWYU pragma: no_include "opentelemetry/sdk/logs/provider.h" -class Provider; -} // namespace logs -} // namespace sdk - namespace logs { @@ -47,6 +36,15 @@ class OPENTELEMETRY_EXPORT Provider return nostd::shared_ptr(GetProvider()); } + /** + * Changes the singleton LoggerProvider. + */ + static void SetLoggerProvider(const nostd::shared_ptr &tp) noexcept + { + std::lock_guard guard(GetLock()); + GetProvider() = tp; + } + /** * Returns the singleton EventLoggerProvider. * @@ -68,23 +66,7 @@ class OPENTELEMETRY_EXPORT Provider GetEventProvider() = tp; } -#if OPENTELEMETRY_ABI_VERSION_NO >= 2 private: -#endif /* OPENTELEMETRY_ABI_VERSION_NO */ - - /** - * Changes the singleton LoggerProvider. - */ - static void SetLoggerProvider(const nostd::shared_ptr &tp) noexcept - { - std::lock_guard guard(GetLock()); - GetProvider() = tp; - } - -private: - /* The SDK is allowed to change the singleton in the API. */ - friend class opentelemetry::sdk::logs::Provider; - OPENTELEMETRY_API_SINGLETON static nostd::shared_ptr &GetProvider() noexcept { static nostd::shared_ptr provider(new NoopLoggerProvider); diff --git a/api/include/opentelemetry/metrics/provider.h b/api/include/opentelemetry/metrics/provider.h index b82acf5d0c..b8ca87843a 100644 --- a/api/include/opentelemetry/metrics/provider.h +++ b/api/include/opentelemetry/metrics/provider.h @@ -5,26 +5,17 @@ #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" OPENTELEMETRY_BEGIN_NAMESPACE -namespace sdk -{ namespace metrics { -// The forward declaration is sufficient, -// we do not want a API -> SDK dependency. -// IWYU pragma: no_include "opentelemetry/sdk/metrics/provider.h" -class Provider; // IWYU pragma: keep -} // namespace metrics -} // namespace sdk -namespace metrics -{ +class MeterProvider; /** * Stores the singleton global MeterProvider. @@ -44,10 +35,6 @@ class Provider return nostd::shared_ptr(GetProvider()); } -#if OPENTELEMETRY_ABI_VERSION_NO >= 2 -private: -#endif /* OPENTELEMETRY_ABI_VERSION_NO */ - /** * Changes the singleton MeterProvider. */ @@ -58,9 +45,6 @@ class Provider } private: - /* The SDK is allowed to change the singleton in the API. */ - friend class opentelemetry::sdk::metrics::Provider; - OPENTELEMETRY_API_SINGLETON static nostd::shared_ptr &GetProvider() noexcept { static nostd::shared_ptr provider(new NoopMeterProvider); diff --git a/api/include/opentelemetry/trace/provider.h b/api/include/opentelemetry/trace/provider.h index 355e0b89e1..7e22dc69f5 100644 --- a/api/include/opentelemetry/trace/provider.h +++ b/api/include/opentelemetry/trace/provider.h @@ -12,17 +12,6 @@ #include "opentelemetry/version.h" OPENTELEMETRY_BEGIN_NAMESPACE -namespace sdk -{ -namespace trace -{ -// The forward declaration is sufficient, -// we do not want a API -> SDK dependency. -// IWYU pragma: no_include "opentelemetry/sdk/trace/provider.h" -class Provider; // IWYU pragma: keep -} // namespace trace -} // namespace sdk - namespace trace { @@ -44,10 +33,6 @@ class OPENTELEMETRY_EXPORT Provider return nostd::shared_ptr(GetProvider()); } -#if OPENTELEMETRY_ABI_VERSION_NO >= 2 -private: -#endif /* OPENTELEMETRY_ABI_VERSION_NO */ - /** * Changes the singleton TracerProvider. */ @@ -58,9 +43,6 @@ class OPENTELEMETRY_EXPORT Provider } private: - /* The SDK is allowed to change the singleton in the API. */ - friend class opentelemetry::sdk::trace::Provider; - OPENTELEMETRY_API_SINGLETON static nostd::shared_ptr &GetProvider() noexcept { static nostd::shared_ptr provider(new NoopTracerProvider); diff --git a/api/test/logs/logger_test.cc b/api/test/logs/logger_test.cc index 043a8626bb..4f62473d77 100644 --- a/api/test/logs/logger_test.cc +++ b/api/test/logs/logger_test.cc @@ -220,7 +220,6 @@ class TestProvider : public LoggerProvider } }; -#if OPENTELEMETRY_ABI_VERSION_NO == 1 TEST(Logger, PushLoggerImplementation) { // Push the new loggerprovider class into the global singleton @@ -234,4 +233,3 @@ TEST(Logger, PushLoggerImplementation) auto logger = lp->GetLogger("TestLogger", "opentelelemtry_library", "", schema_url); ASSERT_EQ("test logger", logger->GetName()); } -#endif /* OPENTELEMETRY_ABI_VERSION_NO */ diff --git a/api/test/logs/provider_test.cc b/api/test/logs/provider_test.cc index 460b662bb7..f3b45264e5 100644 --- a/api/test/logs/provider_test.cc +++ b/api/test/logs/provider_test.cc @@ -40,7 +40,6 @@ TEST(Provider, GetLoggerProviderDefault) EXPECT_NE(nullptr, tf); } -#if OPENTELEMETRY_ABI_VERSION_NO == 1 TEST(Provider, SetLoggerProvider) { auto tf = shared_ptr(new TestProvider()); @@ -57,7 +56,6 @@ TEST(Provider, MultipleLoggerProviders) ASSERT_NE(Provider::GetLoggerProvider(), tf); } -#endif /* OPENTELEMETRY_ABI_VERSION_NO */ TEST(Provider, GetLogger) { diff --git a/api/test/metrics/meter_provider_test.cc b/api/test/metrics/meter_provider_test.cc index facec6f5b3..8a548a5367 100644 --- a/api/test/metrics/meter_provider_test.cc +++ b/api/test/metrics/meter_provider_test.cc @@ -3,7 +3,6 @@ #include -#include "opentelemetry/metrics/meter_provider.h" #include "opentelemetry/metrics/noop.h" #include "opentelemetry/metrics/provider.h" #include "opentelemetry/nostd/shared_ptr.h" @@ -18,7 +17,6 @@ TEST(Provider, GetMeterProviderDefault) EXPECT_NE(nullptr, tf); } -#if OPENTELEMETRY_ABI_VERSION_NO == 1 TEST(Provider, SetMeterProvider) { auto tf = opentelemetry::nostd::shared_ptr(new NoopMeterProvider()); @@ -35,4 +33,3 @@ TEST(Provider, MultipleMeterProviders) ASSERT_NE(Provider::GetMeterProvider(), tf); } -#endif /* OPENTELEMETRY_ABI_VERSION_NO */ diff --git a/api/test/trace/provider_test.cc b/api/test/trace/provider_test.cc index 601320e21e..d8736f9cbc 100644 --- a/api/test/trace/provider_test.cc +++ b/api/test/trace/provider_test.cc @@ -42,11 +42,9 @@ TEST(Provider, GetTracerProviderDefault) EXPECT_NE(nullptr, tf); } -#if OPENTELEMETRY_ABI_VERSION_NO == 1 TEST(Provider, SetTracerProvider) { auto tf = nostd::shared_ptr(new TestProvider()); Provider::SetTracerProvider(tf); ASSERT_EQ(tf, Provider::GetTracerProvider()); } -#endif /* OPENTELEMETRY_ABI_VERSION_NO */ From 47f6472fd0d152ff2d70183edb8620de5763ab1c Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Tue, 4 Feb 2025 18:04:11 +0100 Subject: [PATCH 13/17] Revert moving the singleton test. --- api/test/CMakeLists.txt | 4 ++++ {sdk => api}/test/singleton/BUILD | 10 ++++------ {sdk => api}/test/singleton/CMakeLists.txt | 3 +-- {sdk => api}/test/singleton/component_a.cc | 0 {sdk => api}/test/singleton/component_a.h | 0 {sdk => api}/test/singleton/component_b.cc | 0 {sdk => api}/test/singleton/component_b.h | 0 {sdk => api}/test/singleton/component_c.cc | 0 {sdk => api}/test/singleton/component_c.h | 0 {sdk => api}/test/singleton/component_d.cc | 0 {sdk => api}/test/singleton/component_d.h | 0 {sdk => api}/test/singleton/component_e.cc | 0 {sdk => api}/test/singleton/component_e.h | 0 {sdk => api}/test/singleton/component_f.cc | 0 {sdk => api}/test/singleton/component_f.h | 0 {sdk => api}/test/singleton/component_g.cc | 0 {sdk => api}/test/singleton/component_h.cc | 0 {sdk => api}/test/singleton/singleton_test.cc | 8 ++++---- 18 files changed, 13 insertions(+), 12 deletions(-) rename {sdk => api}/test/singleton/BUILD (93%) rename {sdk => api}/test/singleton/CMakeLists.txt (97%) rename {sdk => api}/test/singleton/component_a.cc (100%) rename {sdk => api}/test/singleton/component_a.h (100%) rename {sdk => api}/test/singleton/component_b.cc (100%) rename {sdk => api}/test/singleton/component_b.h (100%) rename {sdk => api}/test/singleton/component_c.cc (100%) rename {sdk => api}/test/singleton/component_c.h (100%) rename {sdk => api}/test/singleton/component_d.cc (100%) rename {sdk => api}/test/singleton/component_d.h (100%) rename {sdk => api}/test/singleton/component_e.cc (100%) rename {sdk => api}/test/singleton/component_e.h (100%) rename {sdk => api}/test/singleton/component_f.cc (100%) rename {sdk => api}/test/singleton/component_f.h (100%) rename {sdk => api}/test/singleton/component_g.cc (100%) rename {sdk => api}/test/singleton/component_h.cc (100%) rename {sdk => api}/test/singleton/singleton_test.cc (97%) diff --git a/api/test/CMakeLists.txt b/api/test/CMakeLists.txt index afcfb9a2df..66eeee2092 100644 --- a/api/test/CMakeLists.txt +++ b/api/test/CMakeLists.txt @@ -10,3 +10,7 @@ add_subdirectory(metrics) add_subdirectory(logs) add_subdirectory(common) add_subdirectory(baggage) + +if(NOT OPENTELEMETRY_SKIP_DYNAMIC_LOADING_TESTS) + add_subdirectory(singleton) +endif() diff --git a/sdk/test/singleton/BUILD b/api/test/singleton/BUILD similarity index 93% rename from sdk/test/singleton/BUILD rename to api/test/singleton/BUILD index e8caca538f..eae9f6b8c0 100644 --- a/sdk/test/singleton/BUILD +++ b/api/test/singleton/BUILD @@ -159,15 +159,15 @@ cc_binary( # # To build this test alone: -# - bazel build //sdk/test/singleton:singleton_test -# - bazel build //sdk/test/singleton:component_g -# - bazel build //sdk/test/singleton:component_h +# - bazel build //api/test/singleton:singleton_test +# - bazel build //api/test/singleton:component_g +# - bazel build //api/test/singleton:component_h # # Note that singleton_test does not depend on # component_g and component_h, on purpose. # # To run this test: -# bazel test //sdk/test/singleton:singleton_test +# bazel test //api/test/singleton:singleton_test # cc_test( @@ -196,8 +196,6 @@ cc_test( "component_e", "component_f", "//api", - "//sdk/src/common:disabled", - "//sdk/src/trace", "@com_google_googletest//:gtest_main", ], ) diff --git a/sdk/test/singleton/CMakeLists.txt b/api/test/singleton/CMakeLists.txt similarity index 97% rename from sdk/test/singleton/CMakeLists.txt rename to api/test/singleton/CMakeLists.txt index 09e6ae19f9..7c30d6e571 100644 --- a/sdk/test/singleton/CMakeLists.txt +++ b/api/test/singleton/CMakeLists.txt @@ -47,8 +47,7 @@ target_link_libraries( ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${CMAKE_DL_LIBS} - opentelemetry_api - opentelemetry_trace) + opentelemetry_api) gtest_add_tests( TARGET singleton_test diff --git a/sdk/test/singleton/component_a.cc b/api/test/singleton/component_a.cc similarity index 100% rename from sdk/test/singleton/component_a.cc rename to api/test/singleton/component_a.cc diff --git a/sdk/test/singleton/component_a.h b/api/test/singleton/component_a.h similarity index 100% rename from sdk/test/singleton/component_a.h rename to api/test/singleton/component_a.h diff --git a/sdk/test/singleton/component_b.cc b/api/test/singleton/component_b.cc similarity index 100% rename from sdk/test/singleton/component_b.cc rename to api/test/singleton/component_b.cc diff --git a/sdk/test/singleton/component_b.h b/api/test/singleton/component_b.h similarity index 100% rename from sdk/test/singleton/component_b.h rename to api/test/singleton/component_b.h diff --git a/sdk/test/singleton/component_c.cc b/api/test/singleton/component_c.cc similarity index 100% rename from sdk/test/singleton/component_c.cc rename to api/test/singleton/component_c.cc diff --git a/sdk/test/singleton/component_c.h b/api/test/singleton/component_c.h similarity index 100% rename from sdk/test/singleton/component_c.h rename to api/test/singleton/component_c.h diff --git a/sdk/test/singleton/component_d.cc b/api/test/singleton/component_d.cc similarity index 100% rename from sdk/test/singleton/component_d.cc rename to api/test/singleton/component_d.cc diff --git a/sdk/test/singleton/component_d.h b/api/test/singleton/component_d.h similarity index 100% rename from sdk/test/singleton/component_d.h rename to api/test/singleton/component_d.h diff --git a/sdk/test/singleton/component_e.cc b/api/test/singleton/component_e.cc similarity index 100% rename from sdk/test/singleton/component_e.cc rename to api/test/singleton/component_e.cc diff --git a/sdk/test/singleton/component_e.h b/api/test/singleton/component_e.h similarity index 100% rename from sdk/test/singleton/component_e.h rename to api/test/singleton/component_e.h diff --git a/sdk/test/singleton/component_f.cc b/api/test/singleton/component_f.cc similarity index 100% rename from sdk/test/singleton/component_f.cc rename to api/test/singleton/component_f.cc diff --git a/sdk/test/singleton/component_f.h b/api/test/singleton/component_f.h similarity index 100% rename from sdk/test/singleton/component_f.h rename to api/test/singleton/component_f.h diff --git a/sdk/test/singleton/component_g.cc b/api/test/singleton/component_g.cc similarity index 100% rename from sdk/test/singleton/component_g.cc rename to api/test/singleton/component_g.cc diff --git a/sdk/test/singleton/component_h.cc b/api/test/singleton/component_h.cc similarity index 100% rename from sdk/test/singleton/component_h.cc rename to api/test/singleton/component_h.cc diff --git a/sdk/test/singleton/singleton_test.cc b/api/test/singleton/singleton_test.cc similarity index 97% rename from sdk/test/singleton/singleton_test.cc rename to api/test/singleton/singleton_test.cc index bf11f7f994..456ca4d37f 100644 --- a/sdk/test/singleton/singleton_test.cc +++ b/api/test/singleton/singleton_test.cc @@ -20,9 +20,9 @@ #include "opentelemetry/common/key_value_iterable.h" #include "opentelemetry/nostd/shared_ptr.h" #include "opentelemetry/nostd/string_view.h" -#include "opentelemetry/sdk/trace/provider.h" #include "opentelemetry/trace/default_span.h" #include "opentelemetry/trace/noop.h" +#include "opentelemetry/trace/provider.h" #include "opentelemetry/trace/span.h" #include "opentelemetry/trace/span_context.h" #include "opentelemetry/trace/span_context_kv_iterable.h" @@ -325,11 +325,11 @@ void setup_otel() std::shared_ptr provider = MyTracerProvider::Create(); // The whole point of this test is to make sure - // that the API singleton behind GetTracerProvider() + // that the API singleton behind SetTracerProvider() // works for all components, static and dynamic. // Set the global tracer provider - opentelemetry::sdk::trace::Provider::SetTracerProvider(provider); + trace_api::Provider::SetTracerProvider(provider); } void cleanup_otel() @@ -338,7 +338,7 @@ void cleanup_otel() new opentelemetry::trace::NoopTracerProvider()); // Set the global tracer provider - opentelemetry::sdk::trace::Provider::SetTracerProvider(provider); + trace_api::Provider::SetTracerProvider(provider); } // TODO: Remove once windows api singletons are supported. From 89c91ab59aa338292f109e9636737b530311954d Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Tue, 4 Feb 2025 18:05:36 +0100 Subject: [PATCH 14/17] cleanup --- sdk/test/CMakeLists.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/sdk/test/CMakeLists.txt b/sdk/test/CMakeLists.txt index ad8f8429fa..33dd07f81a 100644 --- a/sdk/test/CMakeLists.txt +++ b/sdk/test/CMakeLists.txt @@ -7,7 +7,3 @@ add_subdirectory(metrics) add_subdirectory(logs) add_subdirectory(resource) add_subdirectory(instrumentationscope) - -if(NOT OPENTELEMETRY_SKIP_DYNAMIC_LOADING_TESTS) - add_subdirectory(singleton) -endif() From 5e6411c09b026ad443cce80ac9595cbf88f10445 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Tue, 4 Feb 2025 20:44:43 +0100 Subject: [PATCH 15/17] include-what-you-use cleanup --- api/include/opentelemetry/metrics/provider.h | 4 +--- sdk/test/metrics/meter_provider_set_test.cc | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) 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/sdk/test/metrics/meter_provider_set_test.cc b/sdk/test/metrics/meter_provider_set_test.cc index bd8aae8cff..926ddc3eaf 100644 --- a/sdk/test/metrics/meter_provider_set_test.cc +++ b/sdk/test/metrics/meter_provider_set_test.cc @@ -4,7 +4,6 @@ #include #include -#include "opentelemetry/metrics/meter_provider.h" #include "opentelemetry/metrics/noop.h" #include "opentelemetry/metrics/provider.h" #include "opentelemetry/nostd/shared_ptr.h" From 680813922371501f2cdb44221d5c6affdf224b3f Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Tue, 4 Feb 2025 22:18:40 +0100 Subject: [PATCH 16/17] iwyu --- api/test/metrics/meter_provider_test.cc | 1 + sdk/test/metrics/meter_provider_set_test.cc | 1 + 2 files changed, 2 insertions(+) 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/sdk/test/metrics/meter_provider_set_test.cc b/sdk/test/metrics/meter_provider_set_test.cc index 926ddc3eaf..bd8aae8cff 100644 --- a/sdk/test/metrics/meter_provider_set_test.cc +++ b/sdk/test/metrics/meter_provider_set_test.cc @@ -4,6 +4,7 @@ #include #include +#include "opentelemetry/metrics/meter_provider.h" #include "opentelemetry/metrics/noop.h" #include "opentelemetry/metrics/provider.h" #include "opentelemetry/nostd/shared_ptr.h" From ef727710d6c1e8572062c64489751473009c8750 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Tue, 4 Feb 2025 22:49:43 +0100 Subject: [PATCH 17/17] test cleanup --- sdk/test/logs/logger_sdk_test.cc | 49 -------------------------------- 1 file changed, 49 deletions(-) diff --git a/sdk/test/logs/logger_sdk_test.cc b/sdk/test/logs/logger_sdk_test.cc index 7971c837ee..6ec5e616dd 100644 --- a/sdk/test/logs/logger_sdk_test.cc +++ b/sdk/test/logs/logger_sdk_test.cc @@ -9,26 +9,21 @@ #include #include "opentelemetry/common/attribute_value.h" -#include "opentelemetry/common/key_value_iterable.h" #include "opentelemetry/common/timestamp.h" #include "opentelemetry/logs/event_logger.h" #include "opentelemetry/logs/event_logger_provider.h" -#include "opentelemetry/logs/log_record.h" #include "opentelemetry/logs/logger.h" #include "opentelemetry/logs/logger_provider.h" -#include "opentelemetry/logs/provider.h" #include "opentelemetry/logs/severity.h" #include "opentelemetry/nostd/shared_ptr.h" #include "opentelemetry/nostd/span.h" #include "opentelemetry/nostd/string_view.h" -#include "opentelemetry/nostd/unique_ptr.h" #include "opentelemetry/nostd/variant.h" #include "opentelemetry/sdk/instrumentationscope/instrumentation_scope.h" #include "opentelemetry/sdk/logs/event_logger_provider.h" #include "opentelemetry/sdk/logs/logger.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/resource/resource.h" #include "opentelemetry/sdk/trace/processor.h" @@ -44,7 +39,6 @@ using namespace opentelemetry::sdk::logs; namespace logs_api = opentelemetry::logs; -namespace logs_sdk = opentelemetry::sdk::logs; namespace nostd = opentelemetry::nostd; TEST(LoggerSDK, LogToNullProcessor) @@ -309,46 +303,3 @@ TEST(LoggerSDK, EventLog) ASSERT_EQ(shared_recordable->GetEventName(), "otel-cpp.event_name"); ASSERT_EQ(shared_recordable->GetEventDomain(), "otel-cpp.event_domain"); } - -// Define a basic Logger class -class TestLogger : public opentelemetry::logs::Logger -{ - const nostd::string_view GetName() noexcept override { return "test logger"; } - - nostd::unique_ptr CreateLogRecord() noexcept override - { - return nullptr; - } - - using Logger::EmitLogRecord; - - void EmitLogRecord(nostd::unique_ptr &&) noexcept override {} -}; - -// Define a basic LoggerProvider class that returns an instance of the logger class defined above -class TestProvider : public opentelemetry::logs::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 nostd::shared_ptr(new TestLogger()); - } -}; - -TEST(Logger, PushLoggerImplementation) -{ - // Push the new loggerprovider class into the global singleton - auto test_provider = nostd::shared_ptr(new TestProvider()); - logs_sdk::Provider::SetLoggerProvider(test_provider); - - auto lp = logs_api::Provider::GetLoggerProvider(); - - // Check that the implementation was pushed by calling TestLogger's GetName() - nostd::string_view schema_url{"https://opentelemetry.io/schemas/1.11.0"}; - auto logger = lp->GetLogger("TestLogger", "opentelelemtry_library", "", schema_url); - ASSERT_EQ("test logger", logger->GetName()); -}