diff options
| author | ydynnikov <[email protected]> | 2026-02-27 11:19:31 +0300 |
|---|---|---|
| committer | ydynnikov <[email protected]> | 2026-02-27 11:46:39 +0300 |
| commit | dd6207e99ab45fa85073d60ca22fdd9c7527f8ff (patch) | |
| tree | ac65137f797eec8d29a0d8db4c889164ce3e2cee /library/cpp/monlib/dynamic_counters/encode_ut.cpp | |
| parent | 46878746325da24b281589e6f63bc256be0652d7 (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.cpp | 31 |
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'" + ); + } + } } } |
