@@ -26,6 +26,36 @@ class SanitizeNameTester
26
26
{
27
27
return PrometheusExporterUtils::SanitizeNames (name);
28
28
}
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
+ }
29
59
};
30
60
} // namespace metrics
31
61
} // namespace exporter
@@ -155,4 +185,133 @@ TEST(PrometheusExporterUtils, SanitizeName)
155
185
ASSERT_EQ (exporter::metrics::SanitizeNameTester::sanitize (" name?__name:" ), " name_name:" );
156
186
}
157
187
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
+
158
317
OPENTELEMETRY_END_NAMESPACE
0 commit comments