Skip to content

Commit d2747a0

Browse files
committed
Add unit tests
1 parent 66c9c73 commit d2747a0

File tree

1 file changed

+92
-2
lines changed

1 file changed

+92
-2
lines changed

exporters/prometheus/test/exporter_utils_test.cc

Lines changed: 92 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,12 @@ class SanitizeNameTester
5454
}
5555
static std::string mapToPrometheusName(const std::string &name,
5656
const std::string &unit,
57-
prometheus_client::MetricType prometheus_type)
57+
prometheus_client::MetricType prometheus_type,
58+
bool without_units = false,
59+
bool without_type_suffix = false)
5860
{
59-
return PrometheusExporterUtils::MapToPrometheusName(name, unit, prometheus_type, false, false);
61+
return PrometheusExporterUtils::MapToPrometheusName(name, unit, prometheus_type, without_units,
62+
without_type_suffix);
6063
}
6164
};
6265
} // namespace metrics
@@ -419,6 +422,93 @@ TEST(PrometheusExporterUtils, ConvertRateExpressedToPrometheusUnit)
419422
"_per_minute");
420423
}
421424

425+
TEST(PromentheusExporterUtils, PrometheusNameMapping)
426+
{
427+
// General test cases on unit expansions and name sanitization
428+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
429+
"sample_metric___name", "g", prometheus::MetricType::Counter),
430+
"sample_metric_name_grams_total");
431+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
432+
"sample_metric_name", "s", prometheus::MetricType::Counter),
433+
"sample_metric_name_seconds_total");
434+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
435+
"sample_metric_name", "s", prometheus::MetricType::Gauge),
436+
"sample_metric_name_seconds");
437+
// Test without_units & without_type_suffix with Counters and unit = 1
438+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
439+
"sample_metric_name", "1", prometheus::MetricType::Counter),
440+
"sample_metric_name_total");
441+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
442+
"sample_metric_name", "1", prometheus::MetricType::Counter, true, false),
443+
"sample_metric_name_total");
444+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
445+
"sample_metric_name", "1", prometheus::MetricType::Counter, false, true),
446+
"sample_metric_name");
447+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
448+
"sample_metric_name", "1", prometheus::MetricType::Counter, true, true),
449+
"sample_metric_name");
450+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
451+
"sample_metric_name", "1", prometheus::MetricType::Counter, true, true),
452+
"sample_metric_name");
453+
// Test without_units & without_type_suffix with Counters and non-special units
454+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
455+
"sample_metric_name", "%", prometheus::MetricType::Counter),
456+
"sample_metric_name_percent_total");
457+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
458+
"sample_metric_name", "m", prometheus::MetricType::Counter, true, false),
459+
"sample_metric_name_total");
460+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
461+
"sample_metric_name", "By", prometheus::MetricType::Counter, false, true),
462+
"sample_metric_name_bytes");
463+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
464+
"sample_metric_name", "s", prometheus::MetricType::Counter, true, true),
465+
"sample_metric_name");
466+
// Special case Gauges & ratio
467+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
468+
"sample_metric_name", "1", prometheus::MetricType::Gauge),
469+
"sample_metric_name_ratio");
470+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
471+
"sample_metric_name", "1", prometheus::MetricType::Gauge, false, true),
472+
"sample_metric_name_ratio");
473+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
474+
"sample_metric_name", "1", prometheus::MetricType::Gauge, true, false),
475+
"sample_metric_name");
476+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
477+
"sample_metric_name", "1", prometheus::MetricType::Gauge, true, true),
478+
"sample_metric_name");
479+
// Test without_type_suffix affects only counters
480+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
481+
"sample_metric_name", "Hz", prometheus::MetricType::Counter),
482+
"sample_metric_name_hertz_total");
483+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
484+
"sample_metric_name", "Hz", prometheus::MetricType::Counter, false, true),
485+
"sample_metric_name_hertz");
486+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
487+
"sample_metric_name", "Hz", prometheus::MetricType::Gauge),
488+
"sample_metric_name_hertz");
489+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
490+
"sample_metric_name", "Hz", prometheus::MetricType::Gauge, false, true),
491+
"sample_metric_name_hertz");
492+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
493+
"sample_metric_name", "Hz", prometheus::MetricType::Histogram),
494+
"sample_metric_name_hertz");
495+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
496+
"sample_metric_name", "Hz", prometheus::MetricType::Histogram, false, true),
497+
"sample_metric_name_hertz");
498+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
499+
"sample_metric_name", "Hz", prometheus::MetricType::Summary),
500+
"sample_metric_name_hertz");
501+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
502+
"sample_metric_name", "Hz", prometheus::MetricType::Summary, false, true),
503+
"sample_metric_name_hertz");
504+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
505+
"sample_metric_name", "Hz", prometheus::MetricType::Info),
506+
"sample_metric_name_hertz");
507+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
508+
"sample_metric_name", "Hz", prometheus::MetricType::Info, false, true),
509+
"sample_metric_name_hertz");
510+
}
511+
422512
TEST_F(AttributeCollisionTest, JoinsCollidingKeys)
423513
{
424514
CheckTranslation({{"foo.a", "value1"}, {"foo_a", "value2"}}, {{"foo_a", "value1;value2"},

0 commit comments

Comments
 (0)