Skip to content

Commit 7204288

Browse files
committed
Extract common logic in escaping tests
Signed-off-by: Federico Torres <[email protected]>
1 parent e2aacd5 commit 7204288

File tree

1 file changed

+84
-151
lines changed

1 file changed

+84
-151
lines changed

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

Lines changed: 84 additions & 151 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@
99
import org.junit.jupiter.api.Test;
1010
import org.mockito.MockedStatic;
1111

12-
import java.net.InetAddress;
13-
import java.util.Optional;
14-
1512
class PrometheusNamingTest {
1613

1714
@Test
@@ -153,19 +150,19 @@ public void testLabelNameIsValid() {
153150
public void testEscapeName() {
154151
// empty string
155152
String got = escapeName("", EscapingScheme.UNDERSCORE_ESCAPING);
156-
assertThat(got).isEqualTo("");
153+
assertThat(got).isEmpty();
157154
got = unescapeName(got, EscapingScheme.UNDERSCORE_ESCAPING);
158-
assertThat(got).isEqualTo("");
155+
assertThat(got).isEmpty();
159156

160157
got = escapeName("", EscapingScheme.DOTS_ESCAPING);
161-
assertThat(got).isEqualTo("");
158+
assertThat(got).isEmpty();
162159
got = unescapeName(got, EscapingScheme.DOTS_ESCAPING);
163-
assertThat(got).isEqualTo("");
160+
assertThat(got).isEmpty();
164161

165162
got = escapeName("", EscapingScheme.VALUE_ENCODING_ESCAPING);
166-
assertThat(got).isEqualTo("");
163+
assertThat(got).isEmpty();
167164
got = unescapeName(got, EscapingScheme.VALUE_ENCODING_ESCAPING);
168-
assertThat(got).isEqualTo("");
165+
assertThat(got).isEmpty();
169166

170167
// legacy valid name
171168
got = escapeName("no:escaping_required", EscapingScheme.UNDERSCORE_ESCAPING);
@@ -322,7 +319,7 @@ public void testValueUnescapeErrors() {
322319

323320
// empty string
324321
got = unescapeName("", EscapingScheme.VALUE_ENCODING_ESCAPING);
325-
assertThat(got).isEqualTo("");
322+
assertThat(got).isEmpty();
326323

327324
// basic case, no error
328325
got = unescapeName("U__no:unescapingrequired", EscapingScheme.VALUE_ENCODING_ESCAPING);
@@ -374,165 +371,101 @@ public void testEscapeMetricSnapshotEmpty() {
374371

375372
@Test
376373
public void testEscapeMetricSnapshotSimpleNoEscapingNeeded() {
377-
try (MockedStatic<PrometheusNaming> mock = mockStatic(PrometheusNaming.class, CALLS_REAL_METHODS)) {
378-
mock.when(PrometheusNaming::getValidationScheme)
379-
.thenReturn(ValidationScheme.UTF_8_VALIDATION);
380-
381-
MetricSnapshot original = CounterSnapshot.builder()
382-
.name("my_metric")
383-
.help("some help text")
384-
.dataPoint(CounterSnapshot.CounterDataPointSnapshot.builder()
385-
.value(34.2)
386-
.labels(Labels.builder()
387-
.label("__name__", "my_metric")
388-
.label("some_label", "labelvalue")
389-
.build())
390-
.build()
391-
)
392-
.build();
393-
MetricSnapshot got = escapeMetricSnapshot(original, EscapingScheme.VALUE_ENCODING_ESCAPING);
394-
395-
assertThat(got.getMetadata().getName()).isEqualTo("my_metric");
396-
assertThat(got.getMetadata().getHelp()).isEqualTo("some help text");
397-
assertThat(got.getDataPoints().size()).isEqualTo(1);
398-
CounterSnapshot.CounterDataPointSnapshot data = (CounterSnapshot.CounterDataPointSnapshot) got.getDataPoints().get(0);
399-
assertThat(data.getValue()).isEqualTo(34.2);
400-
assertThat((Iterable<? extends Label>) data.getLabels()).isEqualTo(Labels.builder()
401-
.label("__name__", "my_metric")
402-
.label("some_label", "labelvalue")
403-
.build());
404-
assertThat(original.getMetadata().getName()).isEqualTo("my_metric");
405-
assertThat(original.getMetadata().getHelp()).isEqualTo("some help text");
406-
assertThat(original.getDataPoints().size()).isEqualTo(1);
407-
data = (CounterSnapshot.CounterDataPointSnapshot) original.getDataPoints().get(0);
408-
assertThat(data.getValue()).isEqualTo(34.2);
409-
assertThat((Iterable<? extends Label>) data.getLabels()).isEqualTo(Labels.builder()
410-
.label("__name__", "my_metric")
411-
.label("some_label", "labelvalue")
412-
.build());
413-
}
374+
testEscapeMetricSnapshot(
375+
"my_metric", "some_label", "labelvalue", "some help text",
376+
"my_metric", "some_label", "labelvalue", "some help text",
377+
EscapingScheme.VALUE_ENCODING_ESCAPING,
378+
CounterSnapshot.class);
414379
}
415380

416381
@Test
417382
public void testEscapeMetricSnapshotLabelNameEscapingNeeded() {
418-
try (MockedStatic<PrometheusNaming> mock = mockStatic(PrometheusNaming.class, CALLS_REAL_METHODS)) {
419-
mock.when(PrometheusNaming::getValidationScheme)
420-
.thenReturn(ValidationScheme.UTF_8_VALIDATION);
421-
422-
MetricSnapshot original = CounterSnapshot.builder()
423-
.name("my_metric")
424-
.help("some help text")
425-
.dataPoint(CounterSnapshot.CounterDataPointSnapshot.builder()
426-
.value(34.2)
427-
.labels(Labels.builder()
428-
.label("__name__", "my_metric")
429-
.label("some.label", "labelvalue")
430-
.build())
431-
.build()
432-
)
433-
.build();
434-
MetricSnapshot got = escapeMetricSnapshot(original, EscapingScheme.VALUE_ENCODING_ESCAPING);
435-
436-
assertThat(got.getMetadata().getName()).isEqualTo("my_metric");
437-
assertThat(got.getMetadata().getHelp()).isEqualTo("some help text");
438-
assertThat(got.getDataPoints().size()).isEqualTo(1);
439-
CounterSnapshot.CounterDataPointSnapshot data = (CounterSnapshot.CounterDataPointSnapshot) got.getDataPoints().get(0);
440-
assertThat(data.getValue()).isEqualTo(34.2);
441-
assertThat((Iterable<? extends Label>) data.getLabels()).isEqualTo(Labels.builder()
442-
.label("__name__", "my_metric")
443-
.label("U__some_2e_label", "labelvalue")
444-
.build());
445-
assertThat(original.getMetadata().getName()).isEqualTo("my_metric");
446-
assertThat(original.getMetadata().getHelp()).isEqualTo("some help text");
447-
assertThat(original.getDataPoints().size()).isEqualTo(1);
448-
data = (CounterSnapshot.CounterDataPointSnapshot) original.getDataPoints().get(0);
449-
assertThat(data.getValue()).isEqualTo(34.2);
450-
assertThat((Iterable<? extends Label>) data.getLabels()).isEqualTo(Labels.builder()
451-
.label("__name__", "my_metric")
452-
.label("some.label", "labelvalue")
453-
.build());
454-
}
383+
testEscapeMetricSnapshot(
384+
"my_metric", "some.label", "labelvalue", "some help text",
385+
"my_metric", "U__some_2e_label", "labelvalue", "some help text",
386+
EscapingScheme.VALUE_ENCODING_ESCAPING,
387+
CounterSnapshot.class);
455388
}
456389

457390
@Test
458391
public void testEscapeMetricSnapshotCounterEscapingNeeded() {
392+
testEscapeMetricSnapshot(
393+
"my.metric", "some?label", "label??value", "some help text",
394+
"U__my_2e_metric", "U__some_3f_label", "label??value", "some help text",
395+
EscapingScheme.VALUE_ENCODING_ESCAPING,
396+
CounterSnapshot.class);
397+
}
398+
399+
@Test
400+
public void testEscapeMetricSnapshotGaugeEscapingNeeded() {
401+
testEscapeMetricSnapshot(
402+
"unicode.and.dots.花火", "some_label", "label??value", "some help text",
403+
"unicode_dot_and_dot_dots_dot_____", "some_label", "label??value", "some help text",
404+
EscapingScheme.DOTS_ESCAPING,
405+
GaugeSnapshot.class);
406+
}
407+
408+
private void testEscapeMetricSnapshot(
409+
String name, String labelName, String labelValue, String help,
410+
String expectedName, String expectedLabelName, String expectedLabelValue, String expectedHelp,
411+
EscapingScheme escapingScheme,
412+
Class<? extends MetricSnapshot> snapshotType) {
413+
459414
try (MockedStatic<PrometheusNaming> mock = mockStatic(PrometheusNaming.class, CALLS_REAL_METHODS)) {
460415
mock.when(PrometheusNaming::getValidationScheme)
461-
.thenReturn(ValidationScheme.UTF_8_VALIDATION);
462-
463-
MetricSnapshot original = CounterSnapshot.builder()
464-
.name("my.metric")
465-
.help("some help text")
466-
.dataPoint(CounterSnapshot.CounterDataPointSnapshot.builder()
467-
.value(34.2)
468-
.labels(Labels.builder()
469-
.label("__name__", "my.metric")
470-
.label("some?label", "label??value")
471-
.build())
472-
.build()
473-
)
474-
.build();
475-
MetricSnapshot got = escapeMetricSnapshot(original, EscapingScheme.VALUE_ENCODING_ESCAPING);
416+
.thenReturn(ValidationScheme.UTF_8_VALIDATION);
476417

477-
assertThat(got.getMetadata().getName()).isEqualTo("U__my_2e_metric");
478-
assertThat(got.getMetadata().getHelp()).isEqualTo("some help text");
418+
MetricSnapshot original = createTestSnapshot(name, labelName, labelValue, help, 34.2, snapshotType);
419+
MetricSnapshot got = escapeMetricSnapshot(original, escapingScheme);
420+
421+
assertThat(got.getMetadata().getName()).isEqualTo(expectedName);
422+
assertThat(got.getMetadata().getHelp()).isEqualTo(expectedHelp);
479423
assertThat(got.getDataPoints().size()).isEqualTo(1);
480-
CounterSnapshot.CounterDataPointSnapshot data = (CounterSnapshot.CounterDataPointSnapshot) got.getDataPoints().get(0);
481-
assertThat(data.getValue()).isEqualTo(34.2);
482-
assertThat((Iterable<? extends Label>) data.getLabels()).isEqualTo(Labels.builder()
483-
.label("__name__", "U__my_2e_metric")
484-
.label("U__some_3f_label", "label??value")
485-
.build());
486-
assertThat(original.getMetadata().getName()).isEqualTo("my.metric");
487-
assertThat(original.getMetadata().getHelp()).isEqualTo("some help text");
424+
425+
DataPointSnapshot escapedData = got.getDataPoints().get(0);
426+
assertThat((Iterable<? extends Label>) escapedData.getLabels()).isEqualTo(Labels.builder()
427+
.label("__name__", expectedName)
428+
.label(expectedLabelName, expectedLabelValue)
429+
.build());
430+
431+
assertThat(original.getMetadata().getName()).isEqualTo(name);
432+
assertThat(original.getMetadata().getHelp()).isEqualTo(help);
488433
assertThat(original.getDataPoints().size()).isEqualTo(1);
489-
data = (CounterSnapshot.CounterDataPointSnapshot) original.getDataPoints().get(0);
490-
assertThat(data.getValue()).isEqualTo(34.2);
491-
assertThat((Iterable<? extends Label>) data.getLabels()).isEqualTo(Labels.builder()
492-
.label("__name__", "my.metric")
493-
.label("some?label", "label??value")
494-
.build());
434+
435+
DataPointSnapshot originalData = original.getDataPoints().get(0);
436+
assertThat((Iterable<? extends Label>) originalData.getLabels()).isEqualTo(Labels.builder()
437+
.label("__name__", name)
438+
.label(labelName, labelValue)
439+
.build());
495440
}
496441
}
497442

498-
@Test
499-
public void testEscapeMetricSnapshotGaugeEscapingNeeded() {
500-
try (MockedStatic<PrometheusNaming> mock = mockStatic(PrometheusNaming.class, CALLS_REAL_METHODS)) {
501-
mock.when(PrometheusNaming::getValidationScheme)
502-
.thenReturn(ValidationScheme.UTF_8_VALIDATION);
503-
504-
MetricSnapshot original = GaugeSnapshot.builder()
505-
.name("unicode.and.dots.花火")
506-
.help("some help text")
507-
.dataPoint(GaugeSnapshot.GaugeDataPointSnapshot.builder()
508-
.value(34.2)
509-
.labels(Labels.builder()
510-
.label("__name__", "unicode.and.dots.花火")
511-
.label("some_label", "label??value")
512-
.build())
513-
.build()
514-
)
443+
private MetricSnapshot createTestSnapshot(String name, String labelName, String labelValue, String help, double value, Class<? extends MetricSnapshot> snapshotType) {
444+
Labels labels = Labels.builder()
445+
.label("__name__", name)
446+
.label(labelName, labelValue)
515447
.build();
516-
MetricSnapshot got = escapeMetricSnapshot(original, EscapingScheme.DOTS_ESCAPING);
517448

518-
assertThat(got.getMetadata().getName()).isEqualTo("unicode_dot_and_dot_dots_dot_____");
519-
assertThat(got.getMetadata().getHelp()).isEqualTo("some help text");
520-
assertThat(got.getDataPoints().size()).isEqualTo(1);
521-
GaugeSnapshot.GaugeDataPointSnapshot data = (GaugeSnapshot.GaugeDataPointSnapshot) got.getDataPoints().get(0);
522-
assertThat(data.getValue()).isEqualTo(34.2);
523-
assertThat((Iterable<? extends Label>) data.getLabels()).isEqualTo(Labels.builder()
524-
.label("__name__", "unicode_dot_and_dot_dots_dot_____")
525-
.label("some_label", "label??value")
526-
.build());
527-
assertThat(original.getMetadata().getName()).isEqualTo("unicode.and.dots.花火");
528-
assertThat(original.getMetadata().getHelp()).isEqualTo("some help text");
529-
assertThat(original.getDataPoints().size()).isEqualTo(1);
530-
data = (GaugeSnapshot.GaugeDataPointSnapshot) original.getDataPoints().get(0);
531-
assertThat(data.getValue()).isEqualTo(34.2);
532-
assertThat((Iterable<? extends Label>) data.getLabels()).isEqualTo(Labels.builder()
533-
.label("__name__", "unicode.and.dots.花火")
534-
.label("some_label", "label??value")
535-
.build());
449+
if (snapshotType.equals(CounterSnapshot.class)) {
450+
return CounterSnapshot.builder()
451+
.name(name)
452+
.help(help)
453+
.dataPoint(CounterSnapshot.CounterDataPointSnapshot.builder()
454+
.value(value)
455+
.labels(labels)
456+
.build())
457+
.build();
458+
} else if (snapshotType.equals(GaugeSnapshot.class)) {
459+
return GaugeSnapshot.builder()
460+
.name(name)
461+
.help(help)
462+
.dataPoint(GaugeSnapshot.GaugeDataPointSnapshot.builder()
463+
.value(value)
464+
.labels(labels)
465+
.build())
466+
.build();
536467
}
468+
469+
throw new IllegalArgumentException("Unsupported snapshot type: " + snapshotType);
537470
}
538471
}

0 commit comments

Comments
 (0)