Skip to content

Commit 001ab86

Browse files
committed
extract snapshot escaper
Signed-off-by: Gregor Zeitlinger <[email protected]>
1 parent ccef1a8 commit 001ab86

File tree

6 files changed

+43
-35
lines changed

6 files changed

+43
-35
lines changed

prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/PushGateway.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package io.prometheus.metrics.exporter.pushgateway;
22

33
import static io.prometheus.metrics.exporter.pushgateway.Scheme.HTTP;
4-
import static io.prometheus.metrics.model.snapshots.PrometheusNaming.escapeName;
4+
import static io.prometheus.metrics.model.snapshots.SnapshotEscaper.escapeName;
55

66
import io.prometheus.metrics.config.ExporterPushgatewayProperties;
77
import io.prometheus.metrics.config.PrometheusProperties;

prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import io.prometheus.metrics.model.snapshots.NativeHistogramBuckets;
2222
import io.prometheus.metrics.model.snapshots.PrometheusNaming;
2323
import io.prometheus.metrics.model.snapshots.Quantiles;
24+
import io.prometheus.metrics.model.snapshots.SnapshotEscaper;
2425
import io.prometheus.metrics.model.snapshots.StateSetSnapshot;
2526
import io.prometheus.metrics.model.snapshots.SummarySnapshot;
2627
import io.prometheus.metrics.model.snapshots.UnknownSnapshot;
@@ -43,7 +44,7 @@ public String getContentType() {
4344
public String toDebugString(MetricSnapshots metricSnapshots, EscapingScheme escapingScheme) {
4445
StringBuilder stringBuilder = new StringBuilder();
4546
for (MetricSnapshot s : metricSnapshots) {
46-
MetricSnapshot snapshot = PrometheusNaming.escapeMetricSnapshot(s, escapingScheme);
47+
MetricSnapshot snapshot = SnapshotEscaper.escapeMetricSnapshot(s, escapingScheme);
4748
if (!snapshot.getDataPoints().isEmpty()) {
4849
stringBuilder.append(TextFormat.printer().printToString(convert(snapshot)));
4950
}
@@ -56,7 +57,7 @@ public void write(
5657
OutputStream out, MetricSnapshots metricSnapshots, EscapingScheme escapingScheme)
5758
throws IOException {
5859
for (MetricSnapshot s : metricSnapshots) {
59-
MetricSnapshot snapshot = PrometheusNaming.escapeMetricSnapshot(s, escapingScheme);
60+
MetricSnapshot snapshot = SnapshotEscaper.escapeMetricSnapshot(s, escapingScheme);
6061
if (!snapshot.getDataPoints().isEmpty()) {
6162
convert(snapshot).writeDelimitedTo(out);
6263
}

prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/ProtobufExpositionFormatsTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.prometheus.metrics.model.snapshots.EscapingScheme;
99
import io.prometheus.metrics.model.snapshots.MetricSnapshot;
1010
import io.prometheus.metrics.model.snapshots.PrometheusNaming;
11+
import io.prometheus.metrics.model.snapshots.SnapshotEscaper;
1112

1213
class ProtobufExpositionFormatsTest extends ExpositionFormatsTest {
1314

@@ -16,7 +17,7 @@ protected void assertPrometheusProtobuf(String expected, MetricSnapshot snapshot
1617
PrometheusProtobufWriterImpl writer = new PrometheusProtobufWriterImpl();
1718
Metrics.MetricFamily protobufData =
1819
writer.convert(
19-
PrometheusNaming.escapeMetricSnapshot(snapshot, EscapingScheme.UNDERSCORE_ESCAPING));
20+
SnapshotEscaper.escapeMetricSnapshot(snapshot, EscapingScheme.UNDERSCORE_ESCAPING));
2021
String actual = ProtobufUtil.shortDebugString(protobufData);
2122
assertThat(actual).isEqualTo(expected);
2223
}

prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/OpenMetricsTextFormatWriter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import io.prometheus.metrics.model.snapshots.MetricSnapshots;
2424
import io.prometheus.metrics.model.snapshots.PrometheusNaming;
2525
import io.prometheus.metrics.model.snapshots.Quantile;
26+
import io.prometheus.metrics.model.snapshots.SnapshotEscaper;
2627
import io.prometheus.metrics.model.snapshots.StateSetSnapshot;
2728
import io.prometheus.metrics.model.snapshots.SummarySnapshot;
2829
import io.prometheus.metrics.model.snapshots.UnknownSnapshot;
@@ -111,7 +112,7 @@ public void write(
111112
throws IOException {
112113
Writer writer = new BufferedWriter(new OutputStreamWriter(out, StandardCharsets.UTF_8));
113114
for (MetricSnapshot s : metricSnapshots) {
114-
MetricSnapshot snapshot = PrometheusNaming.escapeMetricSnapshot(s, escapingScheme);
115+
MetricSnapshot snapshot = SnapshotEscaper.escapeMetricSnapshot(s, escapingScheme);
115116
if (!snapshot.getDataPoints().isEmpty()) {
116117
if (snapshot instanceof CounterSnapshot) {
117118
writeCounter(writer, (CounterSnapshot) snapshot);

prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/PrometheusTextFormatWriter.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import io.prometheus.metrics.model.snapshots.MetricSnapshots;
2121
import io.prometheus.metrics.model.snapshots.PrometheusNaming;
2222
import io.prometheus.metrics.model.snapshots.Quantile;
23+
import io.prometheus.metrics.model.snapshots.SnapshotEscaper;
2324
import io.prometheus.metrics.model.snapshots.StateSetSnapshot;
2425
import io.prometheus.metrics.model.snapshots.SummarySnapshot;
2526
import io.prometheus.metrics.model.snapshots.UnknownSnapshot;
@@ -113,7 +114,7 @@ public void write(
113114
// "summary".
114115
Writer writer = new BufferedWriter(new OutputStreamWriter(out, StandardCharsets.UTF_8));
115116
for (MetricSnapshot s : metricSnapshots) {
116-
MetricSnapshot snapshot = PrometheusNaming.escapeMetricSnapshot(s, escapingScheme);
117+
MetricSnapshot snapshot = SnapshotEscaper.escapeMetricSnapshot(s, escapingScheme);
117118
if (!snapshot.getDataPoints().isEmpty()) {
118119
if (snapshot instanceof CounterSnapshot) {
119120
writeCounter(writer, (CounterSnapshot) snapshot);
@@ -134,7 +135,7 @@ public void write(
134135
}
135136
if (writeCreatedTimestamps) {
136137
for (MetricSnapshot s : metricSnapshots) {
137-
MetricSnapshot snapshot = PrometheusNaming.escapeMetricSnapshot(s, escapingScheme);
138+
MetricSnapshot snapshot = SnapshotEscaper.escapeMetricSnapshot(s, escapingScheme);
138139
if (!snapshot.getDataPoints().isEmpty()) {
139140
if (snapshot instanceof CounterSnapshot) {
140141
writeCreated(writer, snapshot);

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

Lines changed: 32 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,38 @@
1010
import java.util.regex.Pattern;
1111
import javax.annotation.Nullable;
1212

13-
class SnapshotEscaper {
13+
public class SnapshotEscaper {
14+
15+
private SnapshotEscaper() {
16+
}
17+
18+
/** Escapes the given metric names and labels with the given escaping scheme. */
19+
public static MetricSnapshot escapeMetricSnapshot(MetricSnapshot v, EscapingScheme scheme) {
20+
if (v == null) {
21+
return null;
22+
}
23+
24+
if (scheme == EscapingScheme.NO_ESCAPING) {
25+
return v;
26+
}
27+
28+
List<DataPointSnapshot> outDataPoints = new ArrayList<>();
29+
30+
for (DataPointSnapshot d : v.getDataPoints()) {
31+
if (!snapshotNeedsEscaping(d, scheme)) {
32+
outDataPoints.add(d);
33+
continue;
34+
}
35+
36+
DataPointSnapshot outDataPointSnapshot =
37+
createEscapedDataPointSnapshot(v, d, escapeLabels(d.getLabels(), scheme), scheme);
38+
outDataPoints.add(outDataPointSnapshot);
39+
}
40+
41+
return createEscapedMetricSnapshot(
42+
v, escapeName(v.getMetadata().getName(), scheme), outDataPoints);
43+
}
44+
1445
static MetricSnapshot createEscapedMetricSnapshot(
1546
MetricSnapshot v, String outName, List<DataPointSnapshot> outDataPoints) {
1647
if (v instanceof CounterSnapshot) {
@@ -83,33 +114,6 @@ static MetricSnapshot createEscapedMetricSnapshot(
83114
}
84115
}
85116

86-
/** Escapes the given metric names and labels with the given escaping scheme. */
87-
public static MetricSnapshot escapeMetricSnapshot(MetricSnapshot v, EscapingScheme scheme) {
88-
if (v == null) {
89-
return null;
90-
}
91-
92-
if (scheme == EscapingScheme.NO_ESCAPING) {
93-
return v;
94-
}
95-
96-
List<DataPointSnapshot> outDataPoints = new ArrayList<>();
97-
98-
for (DataPointSnapshot d : v.getDataPoints()) {
99-
if (!snapshotNeedsEscaping(d, scheme)) {
100-
outDataPoints.add(d);
101-
continue;
102-
}
103-
104-
DataPointSnapshot outDataPointSnapshot =
105-
createEscapedDataPointSnapshot(v, d, escapeLabels(d.getLabels(), scheme), scheme);
106-
outDataPoints.add(outDataPointSnapshot);
107-
}
108-
109-
return createEscapedMetricSnapshot(
110-
v, escapeName(v.getMetadata().getName(), scheme), outDataPoints);
111-
}
112-
113117
private static Labels escapeLabels(Labels labels, EscapingScheme scheme) {
114118
Labels.Builder outLabelsBuilder = Labels.builder();
115119

0 commit comments

Comments
 (0)