diff options
author | robot-piglet <robot-piglet@yandex-team.com> | 2025-01-28 11:43:22 +0300 |
---|---|---|
committer | robot-piglet <robot-piglet@yandex-team.com> | 2025-01-28 11:56:03 +0300 |
commit | a46cdb4e0519df2ffae8712bc7dc228c7e375389 (patch) | |
tree | e11d7362a4da1dddb97de911e21b5b2050c3338b /library/cpp/monlib/encode | |
parent | d49b3ea5582c225cd9889592c0b2bce210c142e6 (diff) | |
download | ydb-a46cdb4e0519df2ffae8712bc7dc228c7e375389.tar.gz |
Intermediate changes
commit_hash:93f812fd528231c67adb63e20e083855d68bfe8d
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); + } } |