Skip to content

Commit a00efa7

Browse files
committed
Rename OTP feature
1 parent de08e99 commit a00efa7

File tree

10 files changed

+62
-53
lines changed

10 files changed

+62
-53
lines changed

application/src/ext-test/java/org/opentripplanner/ext/clientrequestmetrics/ClientRequestMetricsFilterTest.java renamed to application/src/ext-test/java/org/opentripplanner/ext/httpresponsetimemetrics/HttpResponseTimeMetricsFilterTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.opentripplanner.ext.clientrequestmetrics;
1+
package org.opentripplanner.ext.httpresponsetimemetrics;
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
44
import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -16,7 +16,7 @@
1616
import org.junit.jupiter.api.BeforeEach;
1717
import org.junit.jupiter.api.Test;
1818

19-
class ClientRequestMetricsFilterTest {
19+
class HttpResponseTimeMetricsFilterTest {
2020

2121
private static final String CLIENT_HEADER = "et-client-name";
2222
private static final String MONITORED_ENDPOINT = "/transmodel/v3";
@@ -26,12 +26,12 @@ class ClientRequestMetricsFilterTest {
2626
private static final Duration MIN_EXPECTED_RESPONSE_TIME = Duration.ofMillis(10);
2727
private static final Duration MAX_EXPECTED_RESPONSE_TIME = Duration.ofMillis(10000);
2828
private SimpleMeterRegistry registry;
29-
private ClientRequestMetricsFilter filter;
29+
private HttpResponseTimeMetricsFilter filter;
3030

3131
@BeforeEach
3232
void setUp() {
3333
registry = new SimpleMeterRegistry();
34-
filter = new ClientRequestMetricsFilter(
34+
filter = new HttpResponseTimeMetricsFilter(
3535
CLIENT_HEADER,
3636
Set.of("app1", "app2", "web-client"),
3737
MONITORED_ENDPOINTS,

application/src/ext/java/org/opentripplanner/ext/clientrequestmetrics/ClientMetricsConfig.java renamed to application/src/ext/java/org/opentripplanner/ext/httpresponsetimemetrics/HttpResponseTimeMetricsConfig.java

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.opentripplanner.ext.clientrequestmetrics;
1+
package org.opentripplanner.ext.httpresponsetimemetrics;
22

33
import static org.opentripplanner.standalone.config.framework.json.OtpVersion.V2_7;
44

@@ -7,17 +7,20 @@
77
import org.opentripplanner.standalone.config.framework.json.NodeAdapter;
88

99
/**
10-
* This class is responsible for mapping client metrics JSON configuration into parameters.
10+
* This class is responsible for mapping HTTP response time metrics JSON configuration into parameters.
1111
*/
12-
public class ClientMetricsConfig {
12+
public class HttpResponseTimeMetricsConfig {
1313

14-
private ClientMetricsConfig() {}
14+
private HttpResponseTimeMetricsConfig() {}
1515

16-
public static ClientMetricsParameters mapClientMetrics(String parameterName, NodeAdapter root) {
16+
public static HttpResponseTimeMetricsParameters mapHttpResponseTimeMetrics(
17+
String parameterName,
18+
NodeAdapter root
19+
) {
1720
var c = root
1821
.of(parameterName)
1922
.since(V2_7)
20-
.summary("Configuration for HTTP client request metrics.")
23+
.summary("Configuration for HTTP response time metrics.")
2124
.description(
2225
"""
2326
When enabled, records response time metrics per client. The client is identified by a
@@ -27,12 +30,12 @@ configurable HTTP header (`clientHeader`). Only clients in the `monitoredClients
2730
"""
2831
)
2932
.asObject();
30-
return new ClientMetricsParameters(
33+
return new HttpResponseTimeMetricsParameters(
3134
c
3235
.of("clientHeader")
3336
.since(V2_7)
3437
.summary("HTTP header name used to identify the client.")
35-
.asString(ClientMetricsParameters.DEFAULT_CLIENT_HEADER),
38+
.asString(HttpResponseTimeMetricsParameters.DEFAULT_CLIENT_HEADER),
3639
Set.copyOf(
3740
c
3841
.of("monitoredClients")
@@ -57,13 +60,15 @@ configurable HTTP header (`clientHeader`). Only clients in the `monitoredClients
5760
suffix matching (request path must end with one of these values).
5861
"""
5962
)
60-
.asStringList(ClientMetricsParameters.DEFAULT_MONITORED_ENDPOINTS.stream().toList())
63+
.asStringList(
64+
HttpResponseTimeMetricsParameters.DEFAULT_MONITORED_ENDPOINTS.stream().toList()
65+
)
6166
),
6267
c
6368
.of("metricName")
6469
.since(V2_7)
6570
.summary("Name of the metric to record.")
66-
.asString(ClientMetricsParameters.DEFAULT_METRIC_NAME),
71+
.asString(HttpResponseTimeMetricsParameters.DEFAULT_METRIC_NAME),
6772
c
6873
.of("minExpectedResponseTime")
6974
.since(V2_7)
@@ -74,7 +79,7 @@ suffix matching (request path must end with one of these values).
7479
For milliseconds, use fractional seconds (e.g., `0.01s` for 10ms, `0.05s` for 50ms).
7580
"""
7681
)
77-
.asDuration(ClientMetricsParameters.DEFAULT_MIN_EXPECTED_RESPONSE_TIME),
82+
.asDuration(HttpResponseTimeMetricsParameters.DEFAULT_MIN_EXPECTED_RESPONSE_TIME),
7883
c
7984
.of("maxExpectedResponseTime")
8085
.since(V2_7)
@@ -85,7 +90,7 @@ For milliseconds, use fractional seconds (e.g., `0.01s` for 10ms, `0.05s` for 50
8590
For milliseconds, use fractional seconds (e.g., `0.01s` for 10ms, `0.05s` for 50ms).
8691
"""
8792
)
88-
.asDuration(ClientMetricsParameters.DEFAULT_MAX_EXPECTED_RESPONSE_TIME)
93+
.asDuration(HttpResponseTimeMetricsParameters.DEFAULT_MAX_EXPECTED_RESPONSE_TIME)
8994
);
9095
}
9196
}

application/src/ext/java/org/opentripplanner/ext/clientrequestmetrics/ClientRequestMetricsFilter.java renamed to application/src/ext/java/org/opentripplanner/ext/httpresponsetimemetrics/HttpResponseTimeMetricsFilter.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.opentripplanner.ext.clientrequestmetrics;
1+
package org.opentripplanner.ext.httpresponsetimemetrics;
22

33
import io.micrometer.core.instrument.MeterRegistry;
44
import io.micrometer.core.instrument.Metrics;
@@ -22,7 +22,7 @@
2222
* A Jersey filter that records HTTP request response times with client identification.
2323
* <p>
2424
* The client is identified by a configurable HTTP header. Only monitored clients
25-
* (configured via {@code server.clientMetrics.monitoredClients}) are tracked individually;
25+
* (configured via {@code server.httpResponseTimeMetrics.monitoredClients}) are tracked individually;
2626
* unknown or missing client names are grouped under the "other" tag to prevent cardinality explosion.
2727
* <p>
2828
* The metric {@code http.client.requests} is recorded as a Timer with percentile histograms,
@@ -31,7 +31,8 @@
3131
* All timers are pre-created at startup for each combination of monitored client and endpoint
3232
* to ensure predictable metric cardinality.
3333
*/
34-
public class ClientRequestMetricsFilter implements ContainerRequestFilter, ContainerResponseFilter {
34+
public class HttpResponseTimeMetricsFilter
35+
implements ContainerRequestFilter, ContainerResponseFilter {
3536

3637
private static final String START_TIME_PROPERTY = "metrics.startTime";
3738
private static final String ENDPOINT_PROPERTY = "metrics.endpoint";
@@ -47,7 +48,7 @@ public class ClientRequestMetricsFilter implements ContainerRequestFilter, Conta
4748
private record TimerKey(String client, String endpoint) {}
4849

4950
/**
50-
* Creates a filter for recording client request metrics.
51+
* Creates a filter for recording HTTP response time metrics.
5152
*
5253
* @param clientHeader the HTTP header name used to identify the client
5354
* @param monitoredClients the set of client names to track individually (case-insensitive)
@@ -57,7 +58,7 @@ private record TimerKey(String client, String endpoint) {}
5758
* @param maxExpectedResponseTime maximum expected response time for histogram buckets
5859
* @param registry the meter registry to record metrics to
5960
*/
60-
public ClientRequestMetricsFilter(
61+
public HttpResponseTimeMetricsFilter(
6162
String clientHeader,
6263
Set<String> monitoredClients,
6364
Set<String> monitoredEndpoints,
@@ -90,7 +91,7 @@ public ClientRequestMetricsFilter(
9091
* @param minExpectedResponseTime minimum expected response time for histogram buckets
9192
* @param maxExpectedResponseTime maximum expected response time for histogram buckets
9293
*/
93-
public ClientRequestMetricsFilter(
94+
public HttpResponseTimeMetricsFilter(
9495
String clientHeader,
9596
Set<String> monitoredClients,
9697
Set<String> monitoredEndpoints,

application/src/ext/java/org/opentripplanner/ext/clientrequestmetrics/ClientMetricsParameters.java renamed to application/src/ext/java/org/opentripplanner/ext/httpresponsetimemetrics/HttpResponseTimeMetricsParameters.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
package org.opentripplanner.ext.clientrequestmetrics;
1+
package org.opentripplanner.ext.httpresponsetimemetrics;
22

33
import java.time.Duration;
44
import java.util.Set;
55

66
/**
7-
* Parameters for HTTP client request metrics.
7+
* Parameters for HTTP response time metrics.
88
*
99
* @param clientHeader the HTTP header name used to identify the client
1010
* @param monitoredClients the set of client names to track individually
@@ -13,7 +13,7 @@
1313
* @param minExpectedResponseTime minimum expected response time for histogram buckets
1414
* @param maxExpectedResponseTime maximum expected response time for histogram buckets
1515
*/
16-
public record ClientMetricsParameters(
16+
public record HttpResponseTimeMetricsParameters(
1717
String clientHeader,
1818
Set<String> monitoredClients,
1919
Set<String> monitoredEndpoints,
@@ -30,7 +30,7 @@ public record ClientMetricsParameters(
3030
public static final Duration DEFAULT_MIN_EXPECTED_RESPONSE_TIME = Duration.ofMillis(10);
3131
public static final Duration DEFAULT_MAX_EXPECTED_RESPONSE_TIME = Duration.ofMillis(10000);
3232

33-
public ClientMetricsParameters {
33+
public HttpResponseTimeMetricsParameters {
3434
monitoredClients = Set.copyOf(monitoredClients);
3535
monitoredEndpoints = Set.copyOf(monitoredEndpoints);
3636
}

application/src/main/java/org/opentripplanner/framework/application/OTPFeature.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public enum OTPFeature {
106106
/* Sandbox extension features - Must be turned OFF by default */
107107

108108
ActuatorAPI(false, true, "Endpoint for actuators (service health status)."),
109-
ClientRequestMetrics(
109+
HttpResponseTimeMetrics(
110110
false,
111111
true,
112112
"Record HTTP response time metrics per client. Requires ActuatorAPI to be enabled."

application/src/main/java/org/opentripplanner/standalone/config/routerconfig/ServerConfig.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
import java.time.Duration;
88
import java.util.List;
99
import org.opentripplanner.apis.support.graphql.injectdoc.ApiDocumentationProfile;
10-
import org.opentripplanner.ext.clientrequestmetrics.ClientMetricsConfig;
11-
import org.opentripplanner.ext.clientrequestmetrics.ClientMetricsParameters;
10+
import org.opentripplanner.ext.httpresponsetimemetrics.HttpResponseTimeMetricsConfig;
11+
import org.opentripplanner.ext.httpresponsetimemetrics.HttpResponseTimeMetricsParameters;
1212
import org.opentripplanner.framework.application.OtpAppException;
1313
import org.opentripplanner.standalone.config.framework.json.NodeAdapter;
1414
import org.opentripplanner.standalone.server.OTPWebApplicationParameters;
@@ -19,7 +19,7 @@ public class ServerConfig implements OTPWebApplicationParameters {
1919
private final Duration apiProcessingTimeout;
2020
private final List<RequestTraceParameter> traceParameters;
2121
private final ApiDocumentationProfile apiDocumentationProfile;
22-
private final ClientMetricsParameters clientMetrics;
22+
private final HttpResponseTimeMetricsParameters httpResponseTimeMetrics;
2323

2424
public ServerConfig(String parameterName, NodeAdapter root) {
2525
NodeAdapter c = root
@@ -110,7 +110,10 @@ messages across multiple (micro-)services from the same user. This is done by se
110110
)
111111
);
112112

113-
this.clientMetrics = ClientMetricsConfig.mapClientMetrics("clientMetrics", c);
113+
this.httpResponseTimeMetrics = HttpResponseTimeMetricsConfig.mapHttpResponseTimeMetrics(
114+
"httpResponseTimeMetrics",
115+
c
116+
);
114117
}
115118

116119
public Duration apiProcessingTimeout() {
@@ -127,8 +130,8 @@ public ApiDocumentationProfile apiDocumentationProfile() {
127130
}
128131

129132
@Override
130-
public ClientMetricsParameters clientMetricsParameters() {
131-
return clientMetrics;
133+
public HttpResponseTimeMetricsParameters httpResponseTimeMetricsParameters() {
134+
return httpResponseTimeMetrics;
132135
}
133136

134137
public void validate(Duration streetRoutingTimeout) {

application/src/main/java/org/opentripplanner/standalone/server/OTPWebApplication.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJsonProvider;
1919
import org.opentripplanner.api.common.OTPExceptionMapper;
2020
import org.opentripplanner.apis.APIEndpoints;
21-
import org.opentripplanner.ext.clientrequestmetrics.ClientMetricsParameters;
22-
import org.opentripplanner.ext.clientrequestmetrics.ClientRequestMetricsFilter;
21+
import org.opentripplanner.ext.httpresponsetimemetrics.HttpResponseTimeMetricsFilter;
22+
import org.opentripplanner.ext.httpresponsetimemetrics.HttpResponseTimeMetricsParameters;
2323
import org.opentripplanner.framework.application.OTPFeature;
2424
import org.opentripplanner.standalone.api.OtpServerRequestContext;
2525
import org.slf4j.bridge.SLF4JBridgeHandler;
@@ -38,7 +38,7 @@ public class OTPWebApplication extends Application {
3838
private final Supplier<OtpServerRequestContext> contextProvider;
3939

4040
private final List<Class<? extends ContainerResponseFilter>> customFilters;
41-
private final ClientMetricsParameters clientMetricsParameters;
41+
private final HttpResponseTimeMetricsParameters httpResponseTimeMetricsParameters;
4242

4343
static {
4444
// Remove existing handlers attached to the j.u.l root logger
@@ -54,7 +54,7 @@ public OTPWebApplication(
5454
) {
5555
this.contextProvider = contextProvider;
5656
this.customFilters = createCustomFilters(parameters.traceParameters());
57-
this.clientMetricsParameters = parameters.clientMetricsParameters();
57+
this.httpResponseTimeMetricsParameters = parameters.httpResponseTimeMetricsParameters();
5858
}
5959

6060
/**
@@ -113,16 +113,16 @@ public Set<Object> getSingletons() {
113113
if (OTPFeature.ActuatorAPI.isOn()) {
114114
singletons.add(getBoundPrometheusRegistry());
115115

116-
// Add client request metrics filter if enabled
117-
if (OTPFeature.ClientRequestMetrics.isOn()) {
116+
// Add HTTP response time metrics filter if enabled
117+
if (OTPFeature.HttpResponseTimeMetrics.isOn()) {
118118
singletons.add(
119-
new ClientRequestMetricsFilter(
120-
clientMetricsParameters.clientHeader(),
121-
clientMetricsParameters.monitoredClients(),
122-
clientMetricsParameters.monitoredEndpoints(),
123-
clientMetricsParameters.metricName(),
124-
clientMetricsParameters.minExpectedResponseTime(),
125-
clientMetricsParameters.maxExpectedResponseTime()
119+
new HttpResponseTimeMetricsFilter(
120+
httpResponseTimeMetricsParameters.clientHeader(),
121+
httpResponseTimeMetricsParameters.monitoredClients(),
122+
httpResponseTimeMetricsParameters.monitoredEndpoints(),
123+
httpResponseTimeMetricsParameters.metricName(),
124+
httpResponseTimeMetricsParameters.minExpectedResponseTime(),
125+
httpResponseTimeMetricsParameters.maxExpectedResponseTime()
126126
)
127127
);
128128
}

application/src/main/java/org/opentripplanner/standalone/server/OTPWebApplicationParameters.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package org.opentripplanner.standalone.server;
22

33
import java.util.List;
4-
import org.opentripplanner.ext.clientrequestmetrics.ClientMetricsParameters;
4+
import org.opentripplanner.ext.httpresponsetimemetrics.HttpResponseTimeMetricsParameters;
55

66
/**
77
* Parameters used to configure the {@link OTPWebApplication}.
@@ -17,7 +17,7 @@ default boolean requestTraceLoggingEnabled() {
1717
}
1818

1919
/**
20-
* Configuration for client request metrics.
20+
* Configuration for HTTP response time metrics.
2121
*/
22-
ClientMetricsParameters clientMetricsParameters();
22+
HttpResponseTimeMetricsParameters httpResponseTimeMetricsParameters();
2323
}

0 commit comments

Comments
 (0)