Skip to content

Commit 72b79d4

Browse files
authored
Fix PrometheusNaming.sanitizeMetricName() methods (#975)
Signed-off-by: Mickael Maison <mickael.maison@gmail.com>
1 parent 8a24bde commit 72b79d4

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/PrometheusNaming.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ public static String sanitizeMetricName(String metricName) {
157157
* as a suffix if the unit is not {@code null}.
158158
*/
159159
public static String sanitizeMetricName(String metricName, Unit unit) {
160-
String result = sanitizeLabelName(metricName);
160+
String result = sanitizeMetricName(metricName);
161161
if (unit != null) {
162162
if (!result.endsWith("_" + unit) && !result.endsWith("." + unit)) {
163163
result += "_" + unit;
@@ -224,8 +224,7 @@ private static String replaceIllegalCharsInMetricName(String name) {
224224
char[] sanitized = new char[length];
225225
for (int i = 0; i < length; i++) {
226226
char ch = name.charAt(i);
227-
if (ch == ':' ||
228-
ch == '.' ||
227+
if (ch == '.' ||
229228
(ch >= 'a' && ch <= 'z') ||
230229
(ch >= 'A' && ch <= 'Z') ||
231230
(i > 0 && ch >= '0' && ch <= '9')) {

prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/PrometheusNamingTest.java

+15-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public class PrometheusNamingTest {
1010
@Test
1111
public void testSanitizeMetricName() {
1212
Assert.assertEquals("_abc_def", prometheusName(sanitizeMetricName("0abc.def")));
13-
Assert.assertEquals("___ab_:c0", prometheusName(sanitizeMetricName("___ab.:c0")));
13+
Assert.assertEquals("___ab__c0", prometheusName(sanitizeMetricName("___ab.:c0")));
1414
Assert.assertEquals("my_prefix_my_metric", sanitizeMetricName("my_prefix/my_metric"));
1515
Assert.assertEquals("my_counter", prometheusName(sanitizeMetricName("my_counter_total")));
1616
Assert.assertEquals("jvm", sanitizeMetricName("jvm.info"));
@@ -21,6 +21,20 @@ public void testSanitizeMetricName() {
2121
Assert.assertEquals("total", sanitizeMetricName("total"));
2222
}
2323

24+
@Test
25+
public void testSanitizeMetricNameWithUnit() {
26+
Assert.assertEquals("_abc_def_" + Unit.RATIO, prometheusName(sanitizeMetricName("0abc.def", Unit.RATIO)));
27+
Assert.assertEquals("___ab__c0_" + Unit.RATIO, prometheusName(sanitizeMetricName("___ab.:c0", Unit.RATIO)));
28+
Assert.assertEquals("my_prefix_my_metric_" + Unit.RATIO, sanitizeMetricName("my_prefix/my_metric", Unit.RATIO));
29+
Assert.assertEquals("my_counter_" + Unit.RATIO, prometheusName(sanitizeMetricName("my_counter_total", Unit.RATIO)));
30+
Assert.assertEquals("jvm_" + Unit.RATIO, sanitizeMetricName("jvm.info", Unit.RATIO));
31+
Assert.assertEquals("jvm_" + Unit.RATIO, sanitizeMetricName("jvm_info", Unit.RATIO));
32+
Assert.assertEquals("jvm_" + Unit.RATIO, sanitizeMetricName("jvm.info", Unit.RATIO));
33+
Assert.assertEquals("a.b_" + Unit.RATIO, sanitizeMetricName("a.b", Unit.RATIO));
34+
Assert.assertEquals("total_" + Unit.RATIO, sanitizeMetricName("_total", Unit.RATIO));
35+
Assert.assertEquals("total_" + Unit.RATIO, sanitizeMetricName("total", Unit.RATIO));
36+
}
37+
2438
@Test
2539
public void testSanitizeLabelName() {
2640
Assert.assertEquals("_abc_def", prometheusName(sanitizeLabelName("0abc.def")));

0 commit comments

Comments
 (0)