aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/monlib/encode
diff options
context:
space:
mode:
authorrobot-piglet <robot-piglet@yandex-team.com>2025-01-28 11:43:22 +0300
committerrobot-piglet <robot-piglet@yandex-team.com>2025-01-28 11:56:03 +0300
commita46cdb4e0519df2ffae8712bc7dc228c7e375389 (patch)
treee11d7362a4da1dddb97de911e21b5b2050c3338b /library/cpp/monlib/encode
parentd49b3ea5582c225cd9889592c0b2bce210c142e6 (diff)
downloadydb-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.cpp7
-rw-r--r--library/cpp/monlib/encode/unistat/unistat_ut.cpp31
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);
+ }
}