Skip to content

Commit 940fed8

Browse files
committed
unit test
1 parent 049a165 commit 940fed8

File tree

2 files changed

+160
-1
lines changed

2 files changed

+160
-1
lines changed

exporters/prometheus/src/exporter_utils.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ std::string PrometheusExporterUtils::MapToPrometheusName(
314314
sanitized_name += "_ratio";
315315
}
316316

317-
return sanitized_name;
317+
return CleanUpString(SanitizeNames(sanitized_name));
318318
}
319319

320320
metric_sdk::AggregationType PrometheusExporterUtils::getAggregationType(

exporters/prometheus/test/exporter_utils_test.cc

+159
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,36 @@ class SanitizeNameTester
2626
{
2727
return PrometheusExporterUtils::SanitizeNames(name);
2828
}
29+
static std::string getPrometheusUnit(const std::string &unit_abbreviation)
30+
{
31+
return PrometheusExporterUtils::GetPrometheusUnit(unit_abbreviation);
32+
}
33+
static std::string getPrometheusPerUnit(const std::string &per_unit_abbreviation)
34+
{
35+
return PrometheusExporterUtils::GetPrometheusPerUnit(per_unit_abbreviation);
36+
}
37+
static std::string removeUnitPortionInBraces(const std::string &unit)
38+
{
39+
return PrometheusExporterUtils::RemoveUnitPortionInBraces(unit);
40+
}
41+
static std::string convertRateExpressedToPrometheusUnit(const std::string &rate_expressed_unit)
42+
{
43+
return PrometheusExporterUtils::ConvertRateExpressedToPrometheusUnit(rate_expressed_unit);
44+
}
45+
static std::string cleanUpString(const std::string &str)
46+
{
47+
return PrometheusExporterUtils::CleanUpString(str);
48+
}
49+
static std::string getEquivalentPrometheusUnit(const std::string &raw_metric_unit_name)
50+
{
51+
return PrometheusExporterUtils::GetEquivalentPrometheusUnit(raw_metric_unit_name);
52+
}
53+
static std::string mapToPrometheusName(const std::string &name,
54+
const std::string &unit,
55+
prometheus_client::MetricType prometheus_type)
56+
{
57+
return PrometheusExporterUtils::MapToPrometheusName(name, unit, prometheus_type);
58+
}
2959
};
3060
} // namespace metrics
3161
} // namespace exporter
@@ -155,4 +185,133 @@ TEST(PrometheusExporterUtils, SanitizeName)
155185
ASSERT_EQ(exporter::metrics::SanitizeNameTester::sanitize("name?__name:"), "name_name:");
156186
}
157187

188+
TEST(PrometheusExporterUtils, PrometheusUnit)
189+
{
190+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("d"), "days");
191+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("h"), "hours");
192+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("min"), "minutes");
193+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("s"), "seconds");
194+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("ms"), "milliseconds");
195+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("us"), "microseconds");
196+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("ns"), "nanoseconds");
197+
198+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("By"), "bytes");
199+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("KiBy"), "kibibytes");
200+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("MiBy"), "mebibytes");
201+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("GiBy"), "gibibytes");
202+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("TiBy"), "tibibytes");
203+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("KBy"), "kilobytes");
204+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("MBy"), "megabytes");
205+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("GBy"), "gigabytes");
206+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("TBy"), "terabytes");
207+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("B"), "bytes");
208+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("KB"), "kilobytes");
209+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("MB"), "megabytes");
210+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("GB"), "gigabytes");
211+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("TB"), "terabytes");
212+
213+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("m"), "meters");
214+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("V"), "volts");
215+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("A"), "amperes");
216+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("J"), "joules");
217+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("W"), "watts");
218+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("g"), "grams");
219+
220+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("Cel"), "celsius");
221+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("Hz"), "hertz");
222+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("1"), "");
223+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("%"), "percent");
224+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusUnit("$"), "dollars");
225+
}
226+
227+
TEST(PrometheusExporterUtils, PrometheusPerUnit)
228+
{
229+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusPerUnit("s"), "second");
230+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusPerUnit("m"), "minute");
231+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusPerUnit("h"), "hour");
232+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusPerUnit("d"), "day");
233+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusPerUnit("w"), "week");
234+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusPerUnit("mo"), "month");
235+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getPrometheusPerUnit("y"), "year");
236+
}
237+
238+
TEST(PrometheusExporterUtils, RemoveUnitPortionInBraces)
239+
{
240+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::removeUnitPortionInBraces("{unit}"), "");
241+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::removeUnitPortionInBraces("unit{unit}"), "unit");
242+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::removeUnitPortionInBraces("unit_{unit}"),
243+
"unit_");
244+
}
245+
246+
TEST(PrometheusExporterUtils, ConvertRateExpressedToPrometheusUnit)
247+
{
248+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::convertRateExpressedToPrometheusUnit("unit/d"),
249+
"unit_per_day");
250+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::convertRateExpressedToPrometheusUnit("unit/s"),
251+
"unit_per_second");
252+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::convertRateExpressedToPrometheusUnit("unit/"),
253+
"unit/");
254+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::convertRateExpressedToPrometheusUnit("unit"),
255+
"unit");
256+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::convertRateExpressedToPrometheusUnit("unit/m"),
257+
"unit_per_minute");
258+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::convertRateExpressedToPrometheusUnit("/m"),
259+
"_per_minute");
260+
}
261+
262+
TEST(PrometheusExporterUtils, CleanUpString)
263+
{
264+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::cleanUpString("unit/d"), "unit_d");
265+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::cleanUpString("unit/d_"), "unit_d");
266+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::cleanUpString("unit_/d_"), "unit_d");
267+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::cleanUpString("_unit_/d_"), "unit_d");
268+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::cleanUpString("_unit_d_"), "unit_d");
269+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::cleanUpString("_unit[]_d_"), "unit_d");
270+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::cleanUpString("_unit[67]_d_"), "unit_67_d");
271+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::cleanUpString("_unit[67_]_d_"), "unit_67_d");
272+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::cleanUpString("_unit[_67_]_d_"), "unit_67_d");
273+
}
274+
275+
TEST(PrometheusExporterUtils, GetEquivalentPrometheusUnit)
276+
{
277+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getEquivalentPrometheusUnit("unit/d"),
278+
"unit_per_day");
279+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getEquivalentPrometheusUnit("unit/m"),
280+
"unit_per_minute");
281+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getEquivalentPrometheusUnit("unit"), "unit");
282+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getEquivalentPrometheusUnit("unit_"), "unit");
283+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getEquivalentPrometheusUnit("_unit_"), "unit");
284+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::getEquivalentPrometheusUnit(""), "");
285+
}
286+
287+
TEST(PrometheusExporterUtils, MapToPrometheusName)
288+
{
289+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
290+
"name", "unit", prometheus_client::MetricType::Counter),
291+
"name_unit_total");
292+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
293+
"name", "unit", prometheus_client::MetricType::Gauge),
294+
"name_unit");
295+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
296+
"name", "1", prometheus_client::MetricType::Gauge),
297+
"name_ratio");
298+
299+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
300+
"_name_", "unit/s", prometheus_client::MetricType::Counter),
301+
"name_unit_per_second_total");
302+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
303+
"_name_", "unit/s", prometheus_client::MetricType::Gauge),
304+
"name_unit_per_second");
305+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
306+
"_name_", "1", prometheus_client::MetricType::Gauge),
307+
"name_ratio");
308+
309+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
310+
"_name_", "unit/s", prometheus_client::MetricType::Histogram),
311+
"name_unit_per_second");
312+
ASSERT_EQ(exporter::metrics::SanitizeNameTester::mapToPrometheusName(
313+
"_name_", "unit/s", prometheus_client::MetricType::Untyped),
314+
"name_unit_per_second");
315+
}
316+
158317
OPENTELEMETRY_END_NAMESPACE

0 commit comments

Comments
 (0)