summaryrefslogtreecommitdiffstats
path: root/library/cpp/monlib/dynamic_counters/encode_ut.cpp
diff options
context:
space:
mode:
authorydynnikov <[email protected]>2026-02-27 11:19:31 +0300
committerydynnikov <[email protected]>2026-02-27 11:46:39 +0300
commitdd6207e99ab45fa85073d60ca22fdd9c7527f8ff (patch)
treeac65137f797eec8d29a0d8db4c889164ce3e2cee /library/cpp/monlib/dynamic_counters/encode_ut.cpp
parent46878746325da24b281589e6f63bc256be0652d7 (diff)
Enhance library/cpp/monlib exception verbosity for debugging
Этот эксепшн ронял YDB RU PRESTABLE минимум дважды: \- 2025-09-10 <https://nda.ya.ru/t/VerKgHXk7VTLyV> \- 2026-02-19 <https://nda.ya.ru/t/uhTY2yqK7UtBen> Патч призван упростить отладку падений и поиски руткоза commit_hash:72d859bae3ab265a2807e566c763bfb70a92a61a
Diffstat (limited to 'library/cpp/monlib/dynamic_counters/encode_ut.cpp')
-rw-r--r--library/cpp/monlib/dynamic_counters/encode_ut.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/library/cpp/monlib/dynamic_counters/encode_ut.cpp b/library/cpp/monlib/dynamic_counters/encode_ut.cpp
index 52d77b6b413..b1ef7df93a8 100644
--- a/library/cpp/monlib/dynamic_counters/encode_ut.cpp
+++ b/library/cpp/monlib/dynamic_counters/encode_ut.cpp
@@ -8,6 +8,7 @@
#include <library/cpp/testing/unittest/registar.h>
#include <util/generic/buffer.h>
+#include <util/generic/yexception.h>
#include <util/stream/buffer.h>
namespace NMonitoring {
@@ -221,6 +222,36 @@ namespace NMonitoring {
AssertResult(samples);
}
+
+ Y_UNIT_TEST(InvalidUtf8) {
+ TDynamicCounterPtr rootGroup1(new TDynamicCounters());
+ rootGroup1->GetNamedCounter("invalid\x80Utf8Name", "validUtf8");
+
+ {
+ TString result;
+ TStringOutput out(result);
+ auto encoder = CreateEncoder(&out, EFormat::JSON);
+ UNIT_ASSERT_EXCEPTION_CONTAINS(
+ rootGroup1->Accept(TString(), TString(), *encoder),
+ yexception,
+ "label name is not valid UTF-8 string: 'invalid\\x80Utf8Name'"
+ );
+ }
+
+ TDynamicCounterPtr rootGroup2(new TDynamicCounters());
+ rootGroup2->GetNamedCounter("validUtf8Name", "invalid\x80Utf8");
+
+ {
+ TString result;
+ TStringOutput out(result);
+ auto encoder = CreateEncoder(&out, EFormat::JSON);
+ UNIT_ASSERT_EXCEPTION_CONTAINS(
+ rootGroup2->Accept(TString(), TString(), *encoder),
+ yexception,
+ "label value is not valid UTF-8 string, name: 'validUtf8Name', value: 'invalid\\x80Utf8'"
+ );
+ }
+ }
}
}