summaryrefslogtreecommitdiffstats
path: root/src/jaegertracing/opentelemetry-cpp/sdk/test/metrics/multi_metric_storage_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/jaegertracing/opentelemetry-cpp/sdk/test/metrics/multi_metric_storage_test.cc')
-rw-r--r--src/jaegertracing/opentelemetry-cpp/sdk/test/metrics/multi_metric_storage_test.cc62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/jaegertracing/opentelemetry-cpp/sdk/test/metrics/multi_metric_storage_test.cc b/src/jaegertracing/opentelemetry-cpp/sdk/test/metrics/multi_metric_storage_test.cc
new file mode 100644
index 000000000..d88946485
--- /dev/null
+++ b/src/jaegertracing/opentelemetry-cpp/sdk/test/metrics/multi_metric_storage_test.cc
@@ -0,0 +1,62 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+#ifndef ENABLE_METRICS_PREVIEW
+# include "opentelemetry/sdk/metrics/state/multi_metric_storage.h"
+# include "opentelemetry/common/key_value_iterable_view.h"
+# include "opentelemetry/sdk/metrics/exemplar/no_exemplar_reservoir.h"
+# include "opentelemetry/sdk/metrics/instruments.h"
+
+# include <gtest/gtest.h>
+
+using namespace opentelemetry;
+using namespace opentelemetry::sdk::instrumentationlibrary;
+using namespace opentelemetry::sdk::metrics;
+
+class TestMetricStorage : public WritableMetricStorage
+{
+public:
+ void RecordLong(long value, const opentelemetry::context::Context &context) noexcept override
+ {
+ num_calls_long++;
+ }
+
+ void RecordLong(long value,
+ const opentelemetry::common::KeyValueIterable &attributes,
+ const opentelemetry::context::Context &context) noexcept override
+ {
+ num_calls_long++;
+ }
+
+ void RecordDouble(double value, const opentelemetry::context::Context &context) noexcept override
+ {
+ num_calls_double++;
+ }
+
+ void RecordDouble(double value,
+ const opentelemetry::common::KeyValueIterable &attributes,
+ const opentelemetry::context::Context &context) noexcept override
+ {
+ num_calls_double++;
+ }
+
+ size_t num_calls_long;
+ size_t num_calls_double;
+};
+
+TEST(MultiMetricStorageTest, BasicTests)
+{
+ std::shared_ptr<opentelemetry::sdk::metrics::WritableMetricStorage> storage(
+ new TestMetricStorage());
+ MultiMetricStorage storages{};
+ storages.AddStorage(storage);
+ EXPECT_NO_THROW(storages.RecordLong(10l, opentelemetry::context::Context{}));
+ EXPECT_NO_THROW(storages.RecordLong(20l, opentelemetry::context::Context{}));
+
+ EXPECT_NO_THROW(storages.RecordDouble(10.0, opentelemetry::context::Context{}));
+ EXPECT_NO_THROW(storages.RecordLong(30l, opentelemetry::context::Context{}));
+
+ EXPECT_EQ(static_cast<TestMetricStorage *>(storage.get())->num_calls_long, 3);
+ EXPECT_EQ(static_cast<TestMetricStorage *>(storage.get())->num_calls_double, 1);
+}
+#endif