From a83fd1d3fec8a4e5fb863f6fca4fc8d421789b23 Mon Sep 17 00:00:00 2001 From: Jon Chambers Date: Tue, 9 May 2023 11:54:10 -0400 Subject: [PATCH] Include request method as a request counter dimension --- .../metrics/MetricsRequestEventListener.java | 6 +++++- .../metrics/MetricsRequestEventListenerTest.java | 11 ++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsRequestEventListener.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsRequestEventListener.java index f98ebe707..d0b9cab25 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsRequestEventListener.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsRequestEventListener.java @@ -29,6 +29,9 @@ public class MetricsRequestEventListener implements RequestEventListener { @VisibleForTesting static final String PATH_TAG = "path"; + @VisibleForTesting + static final String METHOD_TAG = "method"; + @VisibleForTesting static final String STATUS_CODE_TAG = "status"; @@ -52,8 +55,9 @@ public class MetricsRequestEventListener implements RequestEventListener { public void onEvent(final RequestEvent event) { if (event.getType() == RequestEvent.Type.FINISHED) { if (!event.getUriInfo().getMatchedTemplates().isEmpty()) { - final List tags = new ArrayList<>(4); + final List tags = new ArrayList<>(5); tags.add(Tag.of(PATH_TAG, UriInfoUtil.getPathTemplate(event.getUriInfo()))); + tags.add(Tag.of(METHOD_TAG, event.getContainerRequest().getMethod())); tags.add(Tag.of(STATUS_CODE_TAG, String.valueOf(event.getContainerResponse().getStatus()))); tags.add(Tag.of(TRAFFIC_SOURCE_TAG, trafficSource.name().toLowerCase())); diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/metrics/MetricsRequestEventListenerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/metrics/MetricsRequestEventListenerTest.java index f3e54a0be..0e3bf7de8 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/metrics/MetricsRequestEventListenerTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/metrics/MetricsRequestEventListenerTest.java @@ -72,12 +72,14 @@ class MetricsRequestEventListenerTest { @SuppressWarnings("unchecked") void testOnEvent() { final String path = "/test"; + final String method = "GET"; final int statusCode = 200; final ExtendedUriInfo uriInfo = mock(ExtendedUriInfo.class); when(uriInfo.getMatchedTemplates()).thenReturn(Collections.singletonList(new UriTemplate(path))); final ContainerRequest request = mock(ContainerRequest.class); + when(request.getMethod()).thenReturn(method); when(request.getRequestHeader(HttpHeaders.USER_AGENT)).thenReturn( Collections.singletonList("Signal-Android/4.53.7 (Android 8.1)")); @@ -105,8 +107,9 @@ class MetricsRequestEventListenerTest { tags.add(tag); } - assertEquals(4, tags.size()); + assertEquals(5, tags.size()); assertTrue(tags.contains(Tag.of(MetricsRequestEventListener.PATH_TAG, path))); + assertTrue(tags.contains(Tag.of(MetricsRequestEventListener.METHOD_TAG, method))); assertTrue(tags.contains(Tag.of(MetricsRequestEventListener.STATUS_CODE_TAG, String.valueOf(statusCode)))); assertTrue(tags.contains(Tag.of(MetricsRequestEventListener.TRAFFIC_SOURCE_TAG, TRAFFIC_SOURCE.name().toLowerCase()))); assertTrue(tags.contains(Tag.of(UserAgentTagUtil.PLATFORM_TAG, "android"))); @@ -170,8 +173,9 @@ class MetricsRequestEventListenerTest { tags.add(tag); } - assertEquals(4, tags.size()); + assertEquals(5, tags.size()); assertTrue(tags.contains(Tag.of(MetricsRequestEventListener.PATH_TAG, "/v1/test/hello"))); + assertTrue(tags.contains(Tag.of(MetricsRequestEventListener.METHOD_TAG, "GET"))); assertTrue(tags.contains(Tag.of(MetricsRequestEventListener.STATUS_CODE_TAG, String.valueOf(200)))); assertTrue(tags.contains(Tag.of(MetricsRequestEventListener.TRAFFIC_SOURCE_TAG, TRAFFIC_SOURCE.name().toLowerCase()))); assertTrue(tags.contains(Tag.of(UserAgentTagUtil.PLATFORM_TAG, "android"))); @@ -228,8 +232,9 @@ class MetricsRequestEventListenerTest { tags.add(tag); } - assertEquals(4, tags.size()); + assertEquals(5, tags.size()); assertTrue(tags.contains(Tag.of(MetricsRequestEventListener.PATH_TAG, "/v1/test/hello"))); + assertTrue(tags.contains(Tag.of(MetricsRequestEventListener.METHOD_TAG, "GET"))); assertTrue(tags.contains(Tag.of(MetricsRequestEventListener.STATUS_CODE_TAG, String.valueOf(200)))); assertTrue(tags.contains(Tag.of(MetricsRequestEventListener.TRAFFIC_SOURCE_TAG, TRAFFIC_SOURCE.name().toLowerCase()))); assertTrue(tags.contains(Tag.of(UserAgentTagUtil.PLATFORM_TAG, "unrecognized")));