1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
#ifdef ENABLE_METRICS_EXEMPLAR_PREVIEW
# include <gtest/gtest.h>
# include <stdint.h>
# include <chrono>
# include <memory>
# include <string>
# include <vector>
# include "opentelemetry/common/timestamp.h"
# include "opentelemetry/context/context.h"
# include "opentelemetry/sdk/metrics/data/exemplar_data.h"
# include "opentelemetry/sdk/metrics/exemplar/aligned_histogram_bucket_exemplar_reservoir.h"
# include "opentelemetry/sdk/metrics/exemplar/reservoir.h"
# include "opentelemetry/sdk/metrics/exemplar/reservoir_cell.h"
# include "opentelemetry/version.h"
OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace metrics
{
class AlignedHistogramBucketExemplarReservoirTestPeer : public ::testing::Test
{
public:
};
TEST_F(AlignedHistogramBucketExemplarReservoirTestPeer, OfferMeasurement)
{
std::vector<double> boundaries{1, 5.0, 10, 15, 20};
auto histogram_exemplar_reservoir = ExemplarReservoir::GetAlignedHistogramBucketExemplarReservoir(
boundaries.size(),
AlignedHistogramBucketExemplarReservoir::GetHistogramCellSelector(boundaries), nullptr);
histogram_exemplar_reservoir->OfferMeasurement(
1.0, MetricAttributes{}, opentelemetry::context::Context{}, std::chrono::system_clock::now());
histogram_exemplar_reservoir->OfferMeasurement(static_cast<int64_t>(1), MetricAttributes{},
opentelemetry::context::Context{},
std::chrono::system_clock::now());
auto exemplar_data = histogram_exemplar_reservoir->CollectAndReset(MetricAttributes{});
ASSERT_TRUE(exemplar_data.empty());
}
TEST_F(AlignedHistogramBucketExemplarReservoirTestPeer, OfferMeasurementWithNonEmptyCollection)
{
std::vector<double> boundaries{1, 5.0, 10, 15, 20};
auto histogram_exemplar_reservoir = ExemplarReservoir::GetAlignedHistogramBucketExemplarReservoir(
boundaries.size(),
AlignedHistogramBucketExemplarReservoir::GetHistogramCellSelector(boundaries),
&ReservoirCell::GetAndResetDouble);
histogram_exemplar_reservoir->OfferMeasurement(
1.0, MetricAttributes{}, opentelemetry::context::Context{}, std::chrono::system_clock::now());
histogram_exemplar_reservoir->OfferMeasurement(static_cast<int64_t>(1), MetricAttributes{},
opentelemetry::context::Context{},
std::chrono::system_clock::now());
auto exemplar_data = histogram_exemplar_reservoir->CollectAndReset(MetricAttributes{});
ASSERT_TRUE(!exemplar_data.empty());
}
} // namespace metrics
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
#endif // ENABLE_METRICS_EXEMPLAR_PREVIEW
|