view_registry_test.cc 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. // Copyright The OpenTelemetry Authors
  2. // SPDX-License-Identifier: Apache-2.0
  3. #include <gtest/gtest.h>
  4. #include <string>
  5. #include <utility>
  6. #include "opentelemetry/common/macros.h"
  7. #include "opentelemetry/nostd/function_ref.h"
  8. #include "opentelemetry/nostd/unique_ptr.h"
  9. #include "opentelemetry/sdk/instrumentationscope/instrumentation_scope.h"
  10. #include "opentelemetry/sdk/metrics/instruments.h"
  11. #include "opentelemetry/sdk/metrics/view/instrument_selector.h"
  12. #include "opentelemetry/sdk/metrics/view/meter_selector.h"
  13. #include "opentelemetry/sdk/metrics/view/view.h"
  14. #include "opentelemetry/sdk/metrics/view/view_registry.h"
  15. using namespace opentelemetry::sdk::metrics;
  16. using namespace opentelemetry::sdk::instrumentationscope;
  17. TEST(ViewRegistry, FindViewsEmptyRegistry)
  18. {
  19. InstrumentDescriptor default_instrument_descriptor = {
  20. "test_name", // name
  21. "test_descr", // description
  22. "1", // unit
  23. InstrumentType::kCounter, // instrument type
  24. InstrumentValueType::kLong};
  25. auto default_instrumentation_scope =
  26. InstrumentationScope::Create("default", "1.0.0", "https://opentelemetry.io/schemas/1.7.0");
  27. int count = 0;
  28. ViewRegistry registry;
  29. auto status =
  30. registry.FindViews(default_instrument_descriptor, *default_instrumentation_scope.get(),
  31. [&count](const View &view) {
  32. count++;
  33. #if OPENTELEMETRY_HAVE_WORKING_REGEX
  34. EXPECT_EQ(view.GetName(), "");
  35. EXPECT_EQ(view.GetDescription(), "");
  36. #endif
  37. EXPECT_EQ(view.GetAggregationType(), AggregationType::kDefault);
  38. return true;
  39. });
  40. #if OPENTELEMETRY_HAVE_WORKING_REGEX
  41. EXPECT_EQ(count, 1);
  42. EXPECT_EQ(status, true);
  43. #endif
  44. }
  45. TEST(ViewRegistry, FindNonExistingView)
  46. {
  47. // Add view
  48. const std::string view_name = "test_view";
  49. const std::string view_description = "test description";
  50. const std::string instrumentation_name = "name1";
  51. const std::string instrumentation_version = "version1";
  52. const std::string instrumentation_schema = "schema1";
  53. const std::string instrument_name = "testname";
  54. const InstrumentType instrument_type = InstrumentType::kCounter;
  55. const std::string instrument_unit = "ms";
  56. std::unique_ptr<InstrumentSelector> instrument_selector{
  57. new InstrumentSelector(instrument_type, instrument_name, instrument_unit)};
  58. std::unique_ptr<MeterSelector> meter_selector{
  59. new MeterSelector(instrumentation_name, instrumentation_version, instrumentation_schema)};
  60. std::unique_ptr<View> view = std::unique_ptr<View>(new View(view_name, view_description));
  61. ViewRegistry registry;
  62. registry.AddView(std::move(instrument_selector), std::move(meter_selector), std::move(view));
  63. InstrumentDescriptor default_instrument_descriptor = {instrument_name, // name
  64. "test_descr", // description
  65. instrument_unit, // unit
  66. instrument_type, // instrument type
  67. InstrumentValueType::kLong};
  68. auto default_instrumentation_scope = InstrumentationScope::Create(
  69. instrumentation_name, instrumentation_version, instrumentation_schema);
  70. int count = 0;
  71. auto status =
  72. registry.FindViews(default_instrument_descriptor, *default_instrumentation_scope.get(),
  73. [&count, &view_name, &view_description](const View &view) {
  74. count++;
  75. #if OPENTELEMETRY_HAVE_WORKING_REGEX
  76. EXPECT_EQ(view.GetName(), view_name);
  77. EXPECT_EQ(view.GetDescription(), view_description);
  78. #endif
  79. return true;
  80. });
  81. #if OPENTELEMETRY_HAVE_WORKING_REGEX
  82. EXPECT_EQ(count, 1);
  83. EXPECT_EQ(status, true);
  84. #endif
  85. }