diff options
author | Alexander Smirnov <alex@ydb.tech> | 2025-01-29 00:51:30 +0000 |
---|---|---|
committer | Alexander Smirnov <alex@ydb.tech> | 2025-01-29 00:51:30 +0000 |
commit | 8ff0f7baba855d1e4b09946cc83a74e57033a9c5 (patch) | |
tree | f6cc7c0a7521379ca66ec6a52dc79407507b3547 /library/cpp/monlib/encode | |
parent | a084e85adde4c3d5b408625be14338f47b7a23d9 (diff) | |
parent | f562d654c2fe8cfc407e8a6e596474c3975a2204 (diff) | |
download | ydb-8ff0f7baba855d1e4b09946cc83a74e57033a9c5.tar.gz |
Merge branch 'rightlib' into merge-libs-250129-0050
Diffstat (limited to 'library/cpp/monlib/encode')
-rw-r--r-- | library/cpp/monlib/encode/unistat/unistat_decoder.cpp | 7 | ||||
-rw-r--r-- | library/cpp/monlib/encode/unistat/unistat_ut.cpp | 31 |
2 files changed, 35 insertions, 3 deletions
diff --git a/library/cpp/monlib/encode/unistat/unistat_decoder.cpp b/library/cpp/monlib/encode/unistat/unistat_decoder.cpp index a2b787365c..9484e6768a 100644 --- a/library/cpp/monlib/encode/unistat/unistat_decoder.cpp +++ b/library/cpp/monlib/encode/unistat/unistat_decoder.cpp @@ -15,7 +15,7 @@ using namespace NJson; -const re2::RE2 NAME_RE{R"((?:[a-zA-Z0-9\.\-/@_]+_)+(?:[ad][vehmntx]{3}|summ|hgram|max))"}; +const re2::RE2 NAME_RE{R"((?:[a-zA-Z0-9\.\-/@_]+_)+(?:[advehmntx][vehmntx]{3}|summ|hgram|max))"}; namespace NMonitoring { namespace { @@ -144,7 +144,7 @@ namespace NMonitoring { OnHistogram(value); } } else if (IsNumber(value)) { - if (MetricContext_.Name.EndsWith("_ahhh")) { + if (MetricContext_.Name.EndsWith("hhh") && !MetricContext_.IsDeriv) { OnLogHistogram(value); } else { OnScalar(value); @@ -169,7 +169,8 @@ namespace NMonitoring { } void OnLogHistogram(const TJsonValue& value) { - Y_ENSURE(MetricContext_.Name.EndsWith("_ahhh"), "Values list is supported only for _ahhh metrics"); + Y_ENSURE(MetricContext_.Name.EndsWith("hhh") && !MetricContext_.IsDeriv, + "Values list is supported only for histogram metrics"); MetricContext_.Type = EMetricType::HIST; LogHistogramBuilder histogramBuilder; diff --git a/library/cpp/monlib/encode/unistat/unistat_ut.cpp b/library/cpp/monlib/encode/unistat/unistat_ut.cpp index f15fc7c5b7..08b4c602ee 100644 --- a/library/cpp/monlib/encode/unistat/unistat_ut.cpp +++ b/library/cpp/monlib/encode/unistat/unistat_ut.cpp @@ -338,4 +338,35 @@ Y_UNIT_TEST_SUITE(TUnistatDecoderTest) { UNIT_ASSERT_VALUES_EQUAL(label.GetName(), "sensor"); UNIT_ASSERT_VALUES_EQUAL(label.GetValue(), "something_anything_max"); } + + Y_UNIT_TEST(AllowClientAggregations) { + constexpr auto input = TStringBuf(R"( + [ + ["signal_dmmm", 1], + ["signal_ammm", 1], + ["signal_xmmm", 1], + ["signal_emmm", 1], + ["signal_tmmm", 1] + ])"); + NProto::TMultiSamplesList samples; + auto encoder = EncoderProtobuf(&samples); + DecodeUnistat(input, encoder.Get()); + + UNIT_ASSERT_EQUAL(samples.SamplesSize(), 5); + UNIT_ASSERT_EQUAL(samples.GetSamples(0).GetMetricType(), NProto::RATE); + for (size_t i = 1; i < samples.SamplesSize(); ++i) { + UNIT_ASSERT_EQUAL(samples.GetSamples(i).GetMetricType(), NProto::GAUGE); + } + } + + Y_UNIT_TEST(AllowClientHistAggregation) { + constexpr auto input = TStringBuf(R"([["something_hhhh", 1]])"); + NProto::TMultiSamplesList samples; + auto encoder = EncoderProtobuf(&samples); + DecodeUnistat(input, encoder.Get()); + + UNIT_ASSERT_EQUAL(samples.SamplesSize(), 1); + UNIT_ASSERT_EQUAL(samples.GetSamples(0).GetMetricType(), NProto::HISTOGRAM); + UNIT_ASSERT_EQUAL(samples.GetSamples(0).PointsSize(), 1); + } } |