Skip to content

Commit a64dda8

Browse files
committed
Make statics in PrometheusNaming final
Signed-off-by: Federico Torres <[email protected]>
1 parent f9ce942 commit a64dda8

File tree

17 files changed

+84
-125
lines changed

17 files changed

+84
-125
lines changed

benchmarks/src/main/java/io/prometheus/metrics/benchmarks/TextFormatUtilBenchmark.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.prometheus.metrics.expositionformats.ExpositionFormatWriter;
44
import io.prometheus.metrics.expositionformats.OpenMetricsTextFormatWriter;
55
import io.prometheus.metrics.expositionformats.PrometheusTextFormatWriter;
6+
import io.prometheus.metrics.model.snapshots.EscapingScheme;
67
import io.prometheus.metrics.model.snapshots.GaugeSnapshot;
78
import io.prometheus.metrics.model.snapshots.GaugeSnapshot.GaugeDataPointSnapshot;
89
import io.prometheus.metrics.model.snapshots.Labels;
@@ -69,14 +70,14 @@ public OutputStream openMetricsWriteToByteArray(WriterState writerState) throws
6970
// avoid growing the array
7071
ByteArrayOutputStream byteArrayOutputStream = writerState.byteArrayOutputStream;
7172
byteArrayOutputStream.reset();
72-
OPEN_METRICS_TEXT_FORMAT_WRITER.write(byteArrayOutputStream, SNAPSHOTS);
73+
OPEN_METRICS_TEXT_FORMAT_WRITER.write(byteArrayOutputStream, SNAPSHOTS, EscapingScheme.NO_ESCAPING);
7374
return byteArrayOutputStream;
7475
}
7576

7677
@Benchmark
7778
public OutputStream openMetricsWriteToNull() throws IOException {
7879
OutputStream nullOutputStream = NullOutputStream.INSTANCE;
79-
OPEN_METRICS_TEXT_FORMAT_WRITER.write(nullOutputStream, SNAPSHOTS);
80+
OPEN_METRICS_TEXT_FORMAT_WRITER.write(nullOutputStream, SNAPSHOTS, EscapingScheme.NO_ESCAPING);
8081
return nullOutputStream;
8182
}
8283

@@ -85,14 +86,14 @@ public OutputStream prometheusWriteToByteArray(WriterState writerState) throws I
8586
// avoid growing the array
8687
ByteArrayOutputStream byteArrayOutputStream = writerState.byteArrayOutputStream;
8788
byteArrayOutputStream.reset();
88-
PROMETHEUS_TEXT_FORMAT_WRITER.write(byteArrayOutputStream, SNAPSHOTS);
89+
PROMETHEUS_TEXT_FORMAT_WRITER.write(byteArrayOutputStream, SNAPSHOTS, EscapingScheme.NO_ESCAPING);
8990
return byteArrayOutputStream;
9091
}
9192

9293
@Benchmark
9394
public OutputStream prometheusWriteToNull() throws IOException {
9495
OutputStream nullOutputStream = NullOutputStream.INSTANCE;
95-
PROMETHEUS_TEXT_FORMAT_WRITER.write(nullOutputStream, SNAPSHOTS);
96+
PROMETHEUS_TEXT_FORMAT_WRITER.write(nullOutputStream, SNAPSHOTS, EscapingScheme.NO_ESCAPING);
9697
return nullOutputStream;
9798
}
9899

prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package io.prometheus.metrics.core.metrics;
22

33
import static io.prometheus.metrics.core.metrics.TestUtil.assertExemplarEquals;
4-
import static io.prometheus.metrics.model.snapshots.PrometheusNaming.nameEscapingScheme;
54
import static org.assertj.core.api.Assertions.assertThat;
65
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
76
import static org.assertj.core.data.Offset.offset;
@@ -946,8 +945,7 @@ public void testDefaults() throws IOException {
946945
// text
947946
ByteArrayOutputStream out = new ByteArrayOutputStream();
948947
OpenMetricsTextFormatWriter writer = new OpenMetricsTextFormatWriter(false, true);
949-
nameEscapingScheme = EscapingScheme.NO_ESCAPING;
950-
writer.write(out, MetricSnapshots.of(snapshot));
948+
writer.write(out, MetricSnapshots.of(snapshot), EscapingScheme.NO_ESCAPING);
951949
assertThat(out).hasToString(expectedTextFormat);
952950
}
953951

prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/InfoTest.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package io.prometheus.metrics.core.metrics;
22

3-
import static io.prometheus.metrics.model.snapshots.PrometheusNaming.nameEscapingScheme;
43
import static org.assertj.core.api.Assertions.assertThat;
54
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
65

@@ -128,8 +127,7 @@ public void testConstLabelsDuplicate2() {
128127
private void assertTextFormat(String expected, Info info) throws IOException {
129128
OpenMetricsTextFormatWriter writer = new OpenMetricsTextFormatWriter(true, true);
130129
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
131-
nameEscapingScheme = EscapingScheme.NO_ESCAPING;
132-
writer.write(outputStream, MetricSnapshots.of(info.collect()));
130+
writer.write(outputStream, MetricSnapshots.of(info.collect()), EscapingScheme.NO_ESCAPING);
133131
String result = outputStream.toString(StandardCharsets.UTF_8.name());
134132
if (!result.contains(expected)) {
135133
throw new AssertionError(expected + " is not contained in the following output:\n" + result);

prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusScrapeHandler.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import java.util.function.Predicate;
2121
import java.util.zip.GZIPOutputStream;
2222

23-
import static io.prometheus.metrics.model.snapshots.PrometheusNaming.nameEscapingScheme;
2423

2524
/** Prometheus scrape endpoint. */
2625
public class PrometheusScrapeHandler {
@@ -58,14 +57,14 @@ public void handleRequest(PrometheusHttpExchange exchange) throws IOException {
5857
PrometheusHttpRequest request = exchange.getRequest();
5958
MetricSnapshots snapshots = scrape(request);
6059
String acceptHeader = request.getHeader("Accept");
61-
nameEscapingScheme = EscapingScheme.fromAcceptHeader(acceptHeader);
62-
if (writeDebugResponse(snapshots, exchange)) {
60+
EscapingScheme escapingScheme = EscapingScheme.fromAcceptHeader(acceptHeader);
61+
if (writeDebugResponse(snapshots, escapingScheme, exchange)) {
6362
return;
6463
}
6564
ByteArrayOutputStream responseBuffer =
6665
new ByteArrayOutputStream(lastResponseSize.get() + 1024);
6766
ExpositionFormatWriter writer = expositionFormats.findWriter(acceptHeader);
68-
writer.write(responseBuffer, snapshots);
67+
writer.write(responseBuffer, snapshots, escapingScheme);
6968
lastResponseSize.set(responseBuffer.size());
7069
PrometheusHttpResponse response = exchange.getResponse();
7170
response.setHeader("Content-Type", writer.getContentType());
@@ -140,7 +139,7 @@ private MetricSnapshots scrape(PrometheusHttpRequest request) {
140139
}
141140
}
142141

143-
private boolean writeDebugResponse(MetricSnapshots snapshots, PrometheusHttpExchange exchange)
142+
private boolean writeDebugResponse(MetricSnapshots snapshots, EscapingScheme escapingScheme, PrometheusHttpExchange exchange)
144143
throws IOException {
145144
String debugParam = exchange.getRequest().getParameter("debug");
146145
PrometheusHttpResponse response = exchange.getResponse();
@@ -152,14 +151,14 @@ private boolean writeDebugResponse(MetricSnapshots snapshots, PrometheusHttpExch
152151
OutputStream body = response.sendHeadersAndGetBody(responseStatus, 0);
153152
switch (debugParam) {
154153
case "openmetrics":
155-
expositionFormats.getOpenMetricsTextFormatWriter().write(body, snapshots);
154+
expositionFormats.getOpenMetricsTextFormatWriter().write(body, snapshots, escapingScheme);
156155
break;
157156
case "text":
158-
expositionFormats.getPrometheusTextFormatWriter().write(body, snapshots);
157+
expositionFormats.getPrometheusTextFormatWriter().write(body, snapshots, escapingScheme);
159158
break;
160159
case "prometheus-protobuf":
161160
String debugString =
162-
expositionFormats.getPrometheusProtobufWriter().toDebugString(snapshots);
161+
expositionFormats.getPrometheusProtobufWriter().toDebugString(snapshots, escapingScheme);
163162
body.write(debugString.getBytes(StandardCharsets.UTF_8));
164163
break;
165164
default:

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,7 @@ private void doRequest(PrometheusRegistry registry, String method) throws IOExce
209209
try {
210210
if (!method.equals("DELETE")) {
211211
OutputStream outputStream = connection.getOutputStream();
212-
nameEscapingScheme = EscapingScheme.NO_ESCAPING;
213-
writer.write(outputStream, registry.scrape());
212+
writer.write(outputStream, registry.scrape(), EscapingScheme.NO_ESCAPING);
214213
outputStream.flush();
215214
outputStream.close();
216215
}

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

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import io.prometheus.metrics.model.snapshots.CounterSnapshot;
1010
import io.prometheus.metrics.model.snapshots.CounterSnapshot.CounterDataPointSnapshot;
1111
import io.prometheus.metrics.model.snapshots.DataPointSnapshot;
12+
import io.prometheus.metrics.model.snapshots.EscapingScheme;
1213
import io.prometheus.metrics.model.snapshots.Exemplar;
1314
import io.prometheus.metrics.model.snapshots.GaugeSnapshot;
1415
import io.prometheus.metrics.model.snapshots.HistogramSnapshot;
@@ -18,6 +19,7 @@
1819
import io.prometheus.metrics.model.snapshots.MetricSnapshot;
1920
import io.prometheus.metrics.model.snapshots.MetricSnapshots;
2021
import io.prometheus.metrics.model.snapshots.NativeHistogramBuckets;
22+
import io.prometheus.metrics.model.snapshots.PrometheusNaming;
2123
import io.prometheus.metrics.model.snapshots.Quantiles;
2224
import io.prometheus.metrics.model.snapshots.StateSetSnapshot;
2325
import io.prometheus.metrics.model.snapshots.SummarySnapshot;
@@ -38,9 +40,10 @@ public String getContentType() {
3840
}
3941

4042
@Override
41-
public String toDebugString(MetricSnapshots metricSnapshots) {
43+
public String toDebugString(MetricSnapshots metricSnapshots, EscapingScheme escapingScheme) {
4244
StringBuilder stringBuilder = new StringBuilder();
43-
for (MetricSnapshot snapshot : metricSnapshots) {
45+
for (MetricSnapshot s : metricSnapshots) {
46+
MetricSnapshot snapshot = PrometheusNaming.escapeMetricSnapshot(s, escapingScheme);
4447
if (!snapshot.getDataPoints().isEmpty()) {
4548
stringBuilder.append(TextFormat.printer().printToString(convert(snapshot)));
4649
}
@@ -49,8 +52,9 @@ public String toDebugString(MetricSnapshots metricSnapshots) {
4952
}
5053

5154
@Override
52-
public void write(OutputStream out, MetricSnapshots metricSnapshots) throws IOException {
53-
for (MetricSnapshot snapshot : metricSnapshots) {
55+
public void write(OutputStream out, MetricSnapshots metricSnapshots, EscapingScheme escapingScheme) throws IOException {
56+
for (MetricSnapshot s : metricSnapshots) {
57+
MetricSnapshot snapshot = PrometheusNaming.escapeMetricSnapshot(s, escapingScheme);
5458
if (!snapshot.getDataPoints().isEmpty()) {
5559
convert(snapshot).writeDelimitedTo(out);
5660
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.prometheus.metrics.expositionformats;
22

3+
import io.prometheus.metrics.model.snapshots.EscapingScheme;
34
import io.prometheus.metrics.model.snapshots.MetricSnapshots;
45
import java.io.ByteArrayOutputStream;
56
import java.io.IOException;
@@ -9,12 +10,12 @@ public interface ExpositionFormatWriter {
910
boolean accepts(String acceptHeader);
1011

1112
/** Text formats use UTF-8 encoding. */
12-
void write(OutputStream out, MetricSnapshots metricSnapshots) throws IOException;
13+
void write(OutputStream out, MetricSnapshots metricSnapshots, EscapingScheme escapingScheme) throws IOException;
1314

14-
default String toDebugString(MetricSnapshots metricSnapshots) {
15+
default String toDebugString(MetricSnapshots metricSnapshots, EscapingScheme escapingScheme) {
1516
ByteArrayOutputStream out = new ByteArrayOutputStream();
1617
try {
17-
write(out, metricSnapshots);
18+
write(out, metricSnapshots, escapingScheme);
1819
return out.toString("UTF-8");
1920
} catch (IOException e) {
2021
throw new RuntimeException(e);

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import java.util.List;
2929

3030
import static io.prometheus.metrics.expositionformats.TextFormatUtil.*;
31-
import static io.prometheus.metrics.model.snapshots.PrometheusNaming.nameEscapingScheme;
3231

3332
/**
3433
* Write the OpenMetrics text format as defined on <a
@@ -102,10 +101,10 @@ public String getContentType() {
102101
}
103102

104103
@Override
105-
public void write(OutputStream out, MetricSnapshots metricSnapshots) throws IOException {
104+
public void write(OutputStream out, MetricSnapshots metricSnapshots, EscapingScheme escapingScheme) throws IOException {
106105
Writer writer = new BufferedWriter(new OutputStreamWriter(out, StandardCharsets.UTF_8));
107106
for (MetricSnapshot s : metricSnapshots) {
108-
MetricSnapshot snapshot = PrometheusNaming.escapeMetricSnapshot(s, nameEscapingScheme);
107+
MetricSnapshot snapshot = PrometheusNaming.escapeMetricSnapshot(s, escapingScheme);
109108
if (!snapshot.getDataPoints().isEmpty()) {
110109
if (snapshot instanceof CounterSnapshot) {
111110
writeCounter(writer, (CounterSnapshot) snapshot);

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.prometheus.metrics.expositionformats;
22

3+
import io.prometheus.metrics.model.snapshots.EscapingScheme;
34
import io.prometheus.metrics.model.snapshots.MetricSnapshots;
45
import java.io.IOException;
56
import java.io.OutputStream;
@@ -54,15 +55,15 @@ public boolean isAvailable() {
5455
}
5556

5657
@Override
57-
public String toDebugString(MetricSnapshots metricSnapshots) {
58+
public String toDebugString(MetricSnapshots metricSnapshots, EscapingScheme escapingScheme) {
5859
checkAvailable();
59-
return DELEGATE.toDebugString(metricSnapshots);
60+
return DELEGATE.toDebugString(metricSnapshots, escapingScheme);
6061
}
6162

6263
@Override
63-
public void write(OutputStream out, MetricSnapshots metricSnapshots) throws IOException {
64+
public void write(OutputStream out, MetricSnapshots metricSnapshots, EscapingScheme escapingScheme) throws IOException {
6465
checkAvailable();
65-
DELEGATE.write(out, metricSnapshots);
66+
DELEGATE.write(out, metricSnapshots, escapingScheme);
6667
}
6768

6869
private void checkAvailable() {

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import java.nio.charset.StandardCharsets;
2525

2626
import static io.prometheus.metrics.expositionformats.TextFormatUtil.*;
27-
import static io.prometheus.metrics.model.snapshots.PrometheusNaming.nameEscapingScheme;
2827

2928
/**
3029
* Write the Prometheus text format. This is the default if you view a Prometheus endpoint with your
@@ -101,13 +100,13 @@ public String getContentType() {
101100
}
102101

103102
@Override
104-
public void write(OutputStream out, MetricSnapshots metricSnapshots) throws IOException {
103+
public void write(OutputStream out, MetricSnapshots metricSnapshots, EscapingScheme escapingScheme) throws IOException {
105104
// See https://prometheus.io/docs/instrumenting/exposition_formats/
106105
// "unknown", "gauge", "counter", "stateset", "info", "histogram", "gaugehistogram", and
107106
// "summary".
108107
Writer writer = new BufferedWriter(new OutputStreamWriter(out, StandardCharsets.UTF_8));
109108
for (MetricSnapshot s : metricSnapshots) {
110-
MetricSnapshot snapshot = PrometheusNaming.escapeMetricSnapshot(s, nameEscapingScheme);
109+
MetricSnapshot snapshot = PrometheusNaming.escapeMetricSnapshot(s, escapingScheme);
111110
if (!snapshot.getDataPoints().isEmpty()) {
112111
if (snapshot instanceof CounterSnapshot) {
113112
writeCounter(writer, (CounterSnapshot) snapshot);
@@ -128,7 +127,7 @@ public void write(OutputStream out, MetricSnapshots metricSnapshots) throws IOEx
128127
}
129128
if (writeCreatedTimestamps) {
130129
for (MetricSnapshot s : metricSnapshots) {
131-
MetricSnapshot snapshot = PrometheusNaming.escapeMetricSnapshot(s, nameEscapingScheme);
130+
MetricSnapshot snapshot = PrometheusNaming.escapeMetricSnapshot(s, escapingScheme);
132131
if (!snapshot.getDataPoints().isEmpty()) {
133132
if (snapshot instanceof CounterSnapshot) {
134133
writeCreated(writer, snapshot);

0 commit comments

Comments
 (0)