logger_provider_set_test.cc 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. // Copyright The OpenTelemetry Authors
  2. // SPDX-License-Identifier: Apache-2.0
  3. #include <gtest/gtest.h>
  4. #include <stdlib.h>
  5. #include "opentelemetry/common/key_value_iterable.h"
  6. #include "opentelemetry/logs/event_logger.h" // IWYU pragma: keep
  7. #include "opentelemetry/logs/event_logger_provider.h"
  8. #include "opentelemetry/logs/logger.h" // IWYU pragma: keep
  9. #include "opentelemetry/logs/logger_provider.h"
  10. #include "opentelemetry/logs/provider.h"
  11. #include "opentelemetry/nostd/shared_ptr.h"
  12. #include "opentelemetry/nostd/string_view.h"
  13. #include "opentelemetry/sdk/logs/provider.h"
  14. #if defined(_MSC_VER)
  15. # include "opentelemetry/sdk/common/env_variables.h"
  16. using opentelemetry::sdk::common::setenv;
  17. using opentelemetry::sdk::common::unsetenv;
  18. #endif
  19. #if OPENTELEMETRY_ABI_VERSION_NO < 2
  20. using opentelemetry::logs::EventLogger;
  21. using opentelemetry::logs::EventLoggerProvider;
  22. #endif
  23. using opentelemetry::logs::Logger;
  24. using opentelemetry::logs::LoggerProvider;
  25. using opentelemetry::logs::Provider;
  26. using opentelemetry::nostd::shared_ptr;
  27. namespace nostd = opentelemetry::nostd;
  28. namespace logs_api = opentelemetry::logs;
  29. namespace logs_sdk = opentelemetry::sdk::logs;
  30. class TestProvider : public LoggerProvider
  31. {
  32. nostd::shared_ptr<Logger> GetLogger(
  33. nostd::string_view /* logger_name */,
  34. nostd::string_view /* library_name */,
  35. nostd::string_view /* library_version */,
  36. nostd::string_view /* schema_url */,
  37. const opentelemetry::common::KeyValueIterable & /* attributes */) override
  38. {
  39. return shared_ptr<Logger>(nullptr);
  40. }
  41. };
  42. TEST(Provider, SetLoggerProviderDefault)
  43. {
  44. #ifndef NO_GETENV
  45. unsetenv("OTEL_SDK_DISABLED");
  46. #endif
  47. auto tf = shared_ptr<LoggerProvider>(new TestProvider());
  48. logs_sdk::Provider::SetLoggerProvider(tf);
  49. ASSERT_EQ(tf, logs_api::Provider::GetLoggerProvider());
  50. }
  51. #ifndef NO_GETENV
  52. TEST(Provider, SetLoggerProviderEnabled)
  53. {
  54. setenv("OTEL_SDK_DISABLED", "false", 1);
  55. auto tf = shared_ptr<LoggerProvider>(new TestProvider());
  56. logs_sdk::Provider::SetLoggerProvider(tf);
  57. ASSERT_EQ(tf, logs_api::Provider::GetLoggerProvider());
  58. unsetenv("OTEL_SDK_DISABLED");
  59. }
  60. TEST(Provider, SetLoggerProviderDisabled)
  61. {
  62. setenv("OTEL_SDK_DISABLED", "true", 1);
  63. auto tf = shared_ptr<LoggerProvider>(new TestProvider());
  64. logs_sdk::Provider::SetLoggerProvider(tf);
  65. ASSERT_NE(tf, logs_api::Provider::GetLoggerProvider());
  66. unsetenv("OTEL_SDK_DISABLED");
  67. }
  68. #endif
  69. TEST(Provider, MultipleLoggerProviders)
  70. {
  71. auto tf = shared_ptr<LoggerProvider>(new TestProvider());
  72. logs_sdk::Provider::SetLoggerProvider(tf);
  73. auto tf2 = shared_ptr<LoggerProvider>(new TestProvider());
  74. logs_sdk::Provider::SetLoggerProvider(tf2);
  75. ASSERT_NE(logs_api::Provider::GetLoggerProvider(), tf);
  76. }