| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- // Copyright The OpenTelemetry Authors
- // SPDX-License-Identifier: Apache-2.0
- #pragma once
- #include "opentelemetry/sdk/instrumentationscope/instrumentation_scope.h"
- #include "opentelemetry/sdk/resource/resource.h"
- #include "opentelemetry/version.h"
- namespace metric_sdk = opentelemetry::sdk::metrics;
- namespace nostd = opentelemetry::nostd;
- namespace exportermetrics = opentelemetry::exporter::metrics;
- namespace
- {
- using opentelemetry::sdk::instrumentationscope::InstrumentationScope;
- using opentelemetry::sdk::resource::Resource;
- using opentelemetry::sdk::resource::ResourceAttributes;
- struct TestDataPoints
- {
- Resource resource = Resource::Create(ResourceAttributes{});
- nostd::unique_ptr<InstrumentationScope> instrumentation_scope =
- InstrumentationScope::Create("library_name", "1.2.0");
- /**
- * Helper function to create ResourceMetrics
- */
- inline metric_sdk::ResourceMetrics CreateSumPointData()
- {
- metric_sdk::SumPointData sum_point_data{};
- sum_point_data.value_ = 10.0;
- metric_sdk::SumPointData sum_point_data2{};
- sum_point_data2.value_ = 20.0;
- metric_sdk::ResourceMetrics data;
- data.resource_ = &resource;
- metric_sdk::MetricData metric_data{
- metric_sdk::InstrumentDescriptor{"library_name", "description", "unit",
- metric_sdk::InstrumentType::kCounter,
- metric_sdk::InstrumentValueType::kDouble},
- metric_sdk::AggregationTemporality::kDelta, opentelemetry::common::SystemTimestamp{},
- opentelemetry::common::SystemTimestamp{},
- std::vector<metric_sdk::PointDataAttributes>{
- {metric_sdk::PointAttributes{{"a1", "b1"}}, sum_point_data},
- {metric_sdk::PointAttributes{{"a2", "b2"}}, sum_point_data2}}};
- data.scope_metric_data_ = std::vector<metric_sdk::ScopeMetrics>{
- {instrumentation_scope.get(), std::vector<metric_sdk::MetricData>{metric_data}}};
- return data;
- }
- inline metric_sdk::ResourceMetrics CreateHistogramPointData()
- {
- metric_sdk::HistogramPointData histogram_point_data{};
- histogram_point_data.boundaries_ = {10.1, 20.2, 30.2};
- histogram_point_data.count_ = 3;
- histogram_point_data.counts_ = {200, 300, 400, 500};
- histogram_point_data.sum_ = 900.5;
- metric_sdk::HistogramPointData histogram_point_data2{};
- histogram_point_data2.boundaries_ = {10.0, 20.0, 30.0};
- histogram_point_data2.count_ = 3;
- histogram_point_data2.counts_ = {200, 300, 400, 500};
- histogram_point_data2.sum_ = static_cast<int64_t>(900);
- metric_sdk::ResourceMetrics data;
- data.resource_ = &resource;
- metric_sdk::MetricData metric_data{
- metric_sdk::InstrumentDescriptor{"library_name", "description", "unit",
- metric_sdk::InstrumentType::kHistogram,
- metric_sdk::InstrumentValueType::kDouble},
- metric_sdk::AggregationTemporality::kDelta, opentelemetry::common::SystemTimestamp{},
- opentelemetry::common::SystemTimestamp{},
- std::vector<metric_sdk::PointDataAttributes>{
- {metric_sdk::PointAttributes{{"a1", "b1"}}, histogram_point_data},
- {metric_sdk::PointAttributes{{"a2", "b2"}}, histogram_point_data2}}};
- data.scope_metric_data_ = std::vector<metric_sdk::ScopeMetrics>{
- {instrumentation_scope.get(), std::vector<metric_sdk::MetricData>{metric_data}}};
- return data;
- }
- inline metric_sdk::ResourceMetrics CreateLastValuePointData()
- {
- metric_sdk::ResourceMetrics data;
- data.resource_ = &resource;
- metric_sdk::LastValuePointData last_value_point_data{};
- last_value_point_data.value_ = 10.0;
- last_value_point_data.is_lastvalue_valid_ = true;
- last_value_point_data.sample_ts_ = opentelemetry::common::SystemTimestamp{};
- metric_sdk::LastValuePointData last_value_point_data2{};
- last_value_point_data2.value_ = static_cast<int64_t>(20);
- last_value_point_data2.is_lastvalue_valid_ = true;
- last_value_point_data2.sample_ts_ = opentelemetry::common::SystemTimestamp{};
- metric_sdk::MetricData metric_data{
- metric_sdk::InstrumentDescriptor{"library_name", "description", "unit",
- metric_sdk::InstrumentType::kCounter,
- metric_sdk::InstrumentValueType::kDouble},
- metric_sdk::AggregationTemporality::kDelta, opentelemetry::common::SystemTimestamp{},
- opentelemetry::common::SystemTimestamp{},
- std::vector<metric_sdk::PointDataAttributes>{
- {metric_sdk::PointAttributes{{"a1", "b1"}}, last_value_point_data},
- {metric_sdk::PointAttributes{{"a2", "b2"}}, last_value_point_data2}}};
- data.scope_metric_data_ = std::vector<metric_sdk::ScopeMetrics>{
- {instrumentation_scope.get(), std::vector<metric_sdk::MetricData>{metric_data}}};
- return data;
- }
- inline metric_sdk::ResourceMetrics CreateDropPointData()
- {
- metric_sdk::ResourceMetrics data;
- data.resource_ = &resource;
- metric_sdk::DropPointData drop_point_data{};
- metric_sdk::DropPointData drop_point_data2{};
- metric_sdk::MetricData metric_data{
- metric_sdk::InstrumentDescriptor{"library_name", "description", "unit",
- metric_sdk::InstrumentType::kCounter,
- metric_sdk::InstrumentValueType::kDouble},
- metric_sdk::AggregationTemporality::kDelta, opentelemetry::common::SystemTimestamp{},
- opentelemetry::common::SystemTimestamp{},
- std::vector<metric_sdk::PointDataAttributes>{
- {metric_sdk::PointAttributes{{"a1", "b1"}}, drop_point_data},
- {metric_sdk::PointAttributes{{"a2", "b2"}}, drop_point_data2}}};
- data.scope_metric_data_ = std::vector<metric_sdk::ScopeMetrics>{
- {instrumentation_scope.get(), std::vector<metric_sdk::MetricData>{metric_data}}};
- return data;
- }
- };
- } // namespace
- OPENTELEMETRY_BEGIN_NAMESPACE
- namespace sdk
- {
- namespace metrics
- {
- inline bool operator==(const metric_sdk::MetricData &lhs, const metric_sdk::MetricData &rhs)
- {
- if (lhs.start_ts != rhs.start_ts)
- {
- return false;
- }
- if (lhs.end_ts != rhs.end_ts)
- {
- return false;
- }
- if (lhs.instrument_descriptor.description_ != rhs.instrument_descriptor.description_)
- {
- return false;
- }
- if (lhs.instrument_descriptor.name_ != rhs.instrument_descriptor.name_)
- {
- return false;
- }
- if (lhs.instrument_descriptor.type_ != rhs.instrument_descriptor.type_)
- {
- return false;
- }
- if (lhs.instrument_descriptor.unit_ != rhs.instrument_descriptor.unit_)
- {
- return false;
- }
- if (lhs.instrument_descriptor.value_type_ != rhs.instrument_descriptor.value_type_)
- {
- return false;
- }
- if (lhs.point_data_attr_.size() != rhs.point_data_attr_.size())
- {
- return false;
- }
- for (uint32_t idx = 0; idx < lhs.point_data_attr_.size(); ++idx)
- {
- if (lhs.point_data_attr_.at(idx).attributes != rhs.point_data_attr_.at(idx).attributes)
- {
- return false;
- }
- auto &lhs_point_data = lhs.point_data_attr_.at(idx).point_data;
- auto &rhs_point_data = rhs.point_data_attr_.at(idx).point_data;
- if (nostd::holds_alternative<metric_sdk::SumPointData>(lhs_point_data))
- {
- if (nostd::get<metric_sdk::SumPointData>(lhs_point_data).value_ !=
- nostd::get<metric_sdk::SumPointData>(rhs_point_data).value_)
- {
- return false;
- }
- }
- else if (nostd::holds_alternative<metric_sdk::DropPointData>(lhs_point_data))
- {
- if (!nostd::holds_alternative<metric_sdk::DropPointData>(rhs_point_data))
- {
- return false;
- }
- }
- else if (nostd::holds_alternative<metric_sdk::HistogramPointData>(lhs_point_data))
- {
- auto &lhs_histogram_d = nostd::get<metric_sdk::HistogramPointData>(lhs_point_data);
- auto &rhs_histogram_d = nostd::get<metric_sdk::HistogramPointData>(rhs_point_data);
- if (lhs_histogram_d.count_ != rhs_histogram_d.count_)
- {
- return false;
- }
- if (lhs_histogram_d.counts_ != rhs_histogram_d.counts_)
- {
- return false;
- }
- if (lhs_histogram_d.boundaries_ != rhs_histogram_d.boundaries_)
- {
- return false;
- }
- if (lhs_histogram_d.sum_ != rhs_histogram_d.sum_)
- {
- return false;
- }
- }
- else if (nostd::holds_alternative<metric_sdk::LastValuePointData>(lhs_point_data))
- {
- auto &lhs_last_value_d = nostd::get<metric_sdk::LastValuePointData>(lhs_point_data);
- auto &rhs_last_value_d = nostd::get<metric_sdk::LastValuePointData>(rhs_point_data);
- if (lhs_last_value_d.is_lastvalue_valid_ != rhs_last_value_d.is_lastvalue_valid_)
- {
- return false;
- }
- if (lhs_last_value_d.sample_ts_ != rhs_last_value_d.sample_ts_)
- {
- return false;
- }
- if (lhs_last_value_d.value_ != rhs_last_value_d.value_)
- {
- return false;
- }
- }
- }
- return true;
- }
- } // namespace metrics
- } // namespace sdk
- OPENTELEMETRY_END_NAMESPACE
|