meter_provider_set_test.cc 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // Copyright The OpenTelemetry Authors
  2. // SPDX-License-Identifier: Apache-2.0
  3. #include <gtest/gtest.h>
  4. #include <stdlib.h>
  5. #include "opentelemetry/metrics/meter_provider.h"
  6. #include "opentelemetry/metrics/noop.h"
  7. #include "opentelemetry/metrics/provider.h"
  8. #include "opentelemetry/nostd/shared_ptr.h"
  9. #include "opentelemetry/sdk/metrics/provider.h"
  10. #if defined(_MSC_VER)
  11. # include "opentelemetry/sdk/common/env_variables.h"
  12. using opentelemetry::sdk::common::setenv;
  13. using opentelemetry::sdk::common::unsetenv;
  14. #endif
  15. using opentelemetry::metrics::MeterProvider;
  16. using opentelemetry::metrics::NoopMeterProvider;
  17. using opentelemetry::metrics::Provider;
  18. namespace metrics_api = opentelemetry::metrics;
  19. namespace metrics_sdk = opentelemetry::sdk::metrics;
  20. TEST(Provider, SetMeterProviderDefault)
  21. {
  22. #ifndef NO_GETENV
  23. unsetenv("OTEL_SDK_DISABLED");
  24. #endif
  25. auto tf = opentelemetry::nostd::shared_ptr<MeterProvider>(new NoopMeterProvider());
  26. metrics_sdk::Provider::SetMeterProvider(tf);
  27. ASSERT_EQ(tf, metrics_api::Provider::GetMeterProvider());
  28. }
  29. #ifndef NO_GETENV
  30. TEST(Provider, SetMeterProviderEnabled)
  31. {
  32. setenv("OTEL_SDK_DISABLED", "false", 1);
  33. auto tf = opentelemetry::nostd::shared_ptr<MeterProvider>(new NoopMeterProvider());
  34. metrics_sdk::Provider::SetMeterProvider(tf);
  35. ASSERT_EQ(tf, metrics_api::Provider::GetMeterProvider());
  36. unsetenv("OTEL_SDK_DISABLED");
  37. }
  38. TEST(Provider, SetMeterProviderDisabled)
  39. {
  40. setenv("OTEL_SDK_DISABLED", "true", 1);
  41. auto tf = opentelemetry::nostd::shared_ptr<MeterProvider>(new NoopMeterProvider());
  42. metrics_sdk::Provider::SetMeterProvider(tf);
  43. ASSERT_NE(tf, metrics_api::Provider::GetMeterProvider());
  44. unsetenv("OTEL_SDK_DISABLED");
  45. }
  46. #endif
  47. TEST(Provider, MultipleMeterProviders)
  48. {
  49. auto tf = opentelemetry::nostd::shared_ptr<MeterProvider>(new NoopMeterProvider());
  50. metrics_sdk::Provider::SetMeterProvider(tf);
  51. auto tf2 = opentelemetry::nostd::shared_ptr<MeterProvider>(new NoopMeterProvider());
  52. metrics_sdk::Provider::SetMeterProvider(tf2);
  53. ASSERT_NE(metrics_api::Provider::GetMeterProvider(), tf);
  54. }