aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/monlib/encode/prometheus/prometheus_encoder_ut.cpp
diff options
context:
space:
mode:
authorDmitry Razumov <dvrazumov@yandex-team.com>2024-05-03 15:30:56 +0200
committerGitHub <noreply@github.com>2024-05-03 15:30:56 +0200
commit6c226327540aef472fd8878dfe36ace8b3811726 (patch)
tree9db3e87a89f20d8bf129e46bc2c966e9a7750661 /library/cpp/monlib/encode/prometheus/prometheus_encoder_ut.cpp
parente1880f1134c52055e98b08a265c3ffef20ca6944 (diff)
downloadydb-6c226327540aef472fd8878dfe36ace8b3811726.tar.gz
Don't erase first numerical character in sensor name in prometheus format (#4226)
Co-authored-by: Dmitry Razumov <dvrazumov@yandex-team.ru>
Diffstat (limited to 'library/cpp/monlib/encode/prometheus/prometheus_encoder_ut.cpp')
-rw-r--r--library/cpp/monlib/encode/prometheus/prometheus_encoder_ut.cpp83
1 files changed, 83 insertions, 0 deletions
diff --git a/library/cpp/monlib/encode/prometheus/prometheus_encoder_ut.cpp b/library/cpp/monlib/encode/prometheus/prometheus_encoder_ut.cpp
index fd9debb060..55a610b841 100644
--- a/library/cpp/monlib/encode/prometheus/prometheus_encoder_ut.cpp
+++ b/library/cpp/monlib/encode/prometheus/prometheus_encoder_ut.cpp
@@ -411,4 +411,87 @@ two{labels="l2", project="solomon", } 42 1500000000000
)");
}
+
+ Y_UNIT_TEST(FirstCharacterShouldNotBeReplaced) {
+ auto result = EncodeToString([](IMetricEncoder* e) {
+ e->OnStreamBegin();
+ const TVector<std::pair<TString, double>> sensors = {
+ {"0", 0.0},
+ {"50", 50.0},
+ {"90", 90.0},
+ {"99", 99.0},
+ {"100", 100},
+ {"012345", 123.45},
+ {"abc0123", 123.0},
+ {"0123abc", 123.0},
+ };
+
+ for (const auto& [name, value]: sensors) {
+ e->OnMetricBegin(EMetricType::COUNTER);
+ {
+ e->OnLabelsBegin();
+ e->OnLabel("sensor", name);
+ e->OnLabelsEnd();
+ }
+ e->OnDouble(TInstant::Zero(), value);
+ e->OnMetricEnd();
+ }
+ e->OnStreamEnd();
+ });
+
+ UNIT_ASSERT_STRINGS_EQUAL(result,
+R"(# TYPE _0 counter
+_0 0
+# TYPE _50 counter
+_50 50
+# TYPE _90 counter
+_90 90
+# TYPE _99 counter
+_99 99
+# TYPE _100 counter
+_100 100
+# TYPE _012345 counter
+_012345 123.45
+# TYPE abc0123 counter
+abc0123 123
+# TYPE _0123abc counter
+_0123abc 123
+
+)");
+ }
+
+ Y_UNIT_TEST(InvalidCharactersShouldBeReplaced) {
+ auto result = EncodeToString([](IMetricEncoder* e) {
+ e->OnStreamBegin();
+ const TVector<std::pair<TString, double>> sensors = {
+ {"abc/def", 1.0},
+ {"a+-*/=&{}()|bc", 0.1},
+ {"0.0", 0.0},
+ {"99.9", 99.9}};
+
+ for (const auto& [name, value]: sensors) {
+ e->OnMetricBegin(EMetricType::COUNTER);
+ {
+ e->OnLabelsBegin();
+ e->OnLabel("sensor", name);
+ e->OnLabelsEnd();
+ }
+ e->OnDouble(TInstant::Zero(), value);
+ e->OnMetricEnd();
+ }
+ e->OnStreamEnd();
+ });
+
+ UNIT_ASSERT_STRINGS_EQUAL(result,
+R"(# TYPE abc_def counter
+abc_def 1
+# TYPE a___________bc counter
+a___________bc 0.1
+# TYPE _0_0 counter
+_0_0 0
+# TYPE _99_9 counter
+_99_9 99.9
+
+)");
+ }
}