summaryrefslogtreecommitdiffstats
path: root/library/cpp/monlib/encode/prometheus/prometheus_decoder_ut.cpp
diff options
context:
space:
mode:
authoralexnadtochiy <[email protected]>2025-12-12 16:20:28 +0300
committeralexnadtochiy <[email protected]>2025-12-12 17:14:17 +0300
commit3d4e0b44c9bb86ca521b20e125f1625846670605 (patch)
tree49b05c34297cdf350c57a9f37c516ca5a9527021 /library/cpp/monlib/encode/prometheus/prometheus_decoder_ut.cpp
parent0f01c3cec912301670d5791b06740e6234d192e5 (diff)
Fix prometheus nan parsing
commit_hash:ea34eba995ae4c386785fe89df58c439a2e3ea63
Diffstat (limited to 'library/cpp/monlib/encode/prometheus/prometheus_decoder_ut.cpp')
-rw-r--r--library/cpp/monlib/encode/prometheus/prometheus_decoder_ut.cpp25
1 files changed, 22 insertions, 3 deletions
diff --git a/library/cpp/monlib/encode/prometheus/prometheus_decoder_ut.cpp b/library/cpp/monlib/encode/prometheus/prometheus_decoder_ut.cpp
index 72e13a39dda..4dbb4b574bb 100644
--- a/library/cpp/monlib/encode/prometheus/prometheus_decoder_ut.cpp
+++ b/library/cpp/monlib/encode/prometheus/prometheus_decoder_ut.cpp
@@ -111,12 +111,13 @@ Y_UNIT_TEST_SUITE(TPrometheusDecoderTest) {
"#\n"
"# TYPE name counter\n"
"name{labelname=\"val1\",basename=\"basevalue\"} NaN\n"
- "name {labelname=\"val2\",basename=\"basevalue\"} 2.3 1234567890\n"
+ "name{labelname=\"val2\",basename=\"basevalue\"} Nan\n"
+ "name {labelname=\"val3\",basename=\"basevalue\"} 2.3 1234567890\n"
"# HELP name two-line\\n doc str\\\\ing\n";
{
auto samples = Decode(inputMetrics);
- UNIT_ASSERT_EQUAL(samples.SamplesSize(), 2);
+ UNIT_ASSERT_EQUAL(samples.SamplesSize(), 3);
{
auto& s = samples.GetSamples(0);
@@ -134,6 +135,15 @@ Y_UNIT_TEST_SUITE(TPrometheusDecoderTest) {
ASSERT_LABEL_EQUAL(s.GetLabels(0), "sensor", "name");
ASSERT_LABEL_EQUAL(s.GetLabels(1), "basename", "basevalue");
ASSERT_LABEL_EQUAL(s.GetLabels(2), "labelname", "val2");
+ ASSERT_UINT_POINT(s, TInstant::Zero(), ui64(0));
+ }
+ {
+ auto& s = samples.GetSamples(2);
+ UNIT_ASSERT_EQUAL(s.GetMetricType(), NProto::EMetricType::RATE);
+ UNIT_ASSERT_EQUAL(s.LabelsSize(), 3);
+ ASSERT_LABEL_EQUAL(s.GetLabels(0), "sensor", "name");
+ ASSERT_LABEL_EQUAL(s.GetLabels(1), "basename", "basevalue");
+ ASSERT_LABEL_EQUAL(s.GetLabels(2), "labelname", "val3");
ASSERT_UINT_POINT(s, TInstant::MilliSeconds(1234567890), i64(2));
}
}
@@ -141,7 +151,7 @@ Y_UNIT_TEST_SUITE(TPrometheusDecoderTest) {
TPrometheusDecodeSettings settings;
settings.Mode = EPrometheusDecodeMode::RAW;
auto samples = Decode(inputMetrics, settings);
- UNIT_ASSERT_EQUAL(samples.SamplesSize(), 2);
+ UNIT_ASSERT_EQUAL(samples.SamplesSize(), 3);
{
auto& s = samples.GetSamples(0);
@@ -159,6 +169,15 @@ Y_UNIT_TEST_SUITE(TPrometheusDecoderTest) {
ASSERT_LABEL_EQUAL(s.GetLabels(0), "sensor", "name");
ASSERT_LABEL_EQUAL(s.GetLabels(1), "basename", "basevalue");
ASSERT_LABEL_EQUAL(s.GetLabels(2), "labelname", "val2");
+ ASSERT_DOUBLE_POINT(s, TInstant::MilliSeconds(0), NAN);
+ }
+ {
+ auto& s = samples.GetSamples(2);
+ UNIT_ASSERT_EQUAL(s.GetMetricType(), NProto::EMetricType::GAUGE);
+ UNIT_ASSERT_EQUAL(s.LabelsSize(), 3);
+ ASSERT_LABEL_EQUAL(s.GetLabels(0), "sensor", "name");
+ ASSERT_LABEL_EQUAL(s.GetLabels(1), "basename", "basevalue");
+ ASSERT_LABEL_EQUAL(s.GetLabels(2), "labelname", "val3");
ASSERT_DOUBLE_POINT(s, TInstant::MilliSeconds(1234567890), 2.3);
}
}