From 836307b0c74e01b0d52dbe59764b69bf5a2076fc Mon Sep 17 00:00:00 2001 From: Sergey Skrobotov Date: Mon, 14 Nov 2022 14:58:11 -0800 Subject: [PATCH] adding a metric for ipv4/ipv6 requests count --- .../textsecuregcm/WhisperServerService.java | 6 +- .../filters/ContentLengthFilter.java | 37 --------- .../filters/RequestStatisticsFilter.java | 78 +++++++++++++++++++ ....java => RequestStatisticsFilterTest.java} | 10 +-- 4 files changed, 86 insertions(+), 45 deletions(-) delete mode 100644 service/src/main/java/org/whispersystems/textsecuregcm/filters/ContentLengthFilter.java create mode 100644 service/src/main/java/org/whispersystems/textsecuregcm/filters/RequestStatisticsFilter.java rename service/src/test/java/org/whispersystems/textsecuregcm/filters/{ContentLengthFilterTest.java => RequestStatisticsFilterTest.java} (70%) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java index b6a5902d2..a9d8c5f8d 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java @@ -110,7 +110,7 @@ import org.whispersystems.textsecuregcm.currency.CoinMarketCapClient; import org.whispersystems.textsecuregcm.currency.CurrencyConversionManager; import org.whispersystems.textsecuregcm.currency.FixerClient; import org.whispersystems.textsecuregcm.experiment.ExperimentEnrollmentManager; -import org.whispersystems.textsecuregcm.filters.ContentLengthFilter; +import org.whispersystems.textsecuregcm.filters.RequestStatisticsFilter; import org.whispersystems.textsecuregcm.filters.RemoteDeprecationFilter; import org.whispersystems.textsecuregcm.filters.TimestampResponseFilter; import org.whispersystems.textsecuregcm.limits.DynamicRateLimiters; @@ -624,7 +624,7 @@ public class WhisperServerService extends Application { + try { + //noinspection UnstableApiUsage + final InetAddress addr = InetAddresses.forString(ipString); + if (addr instanceof Inet4Address) { + return "IPv4"; + } + if (addr instanceof Inet6Address) { + return "IPv6"; + } + } catch (IllegalArgumentException e) { + // ignore illegal argument exception + } + return null; + }) + .orElse("unresolved"); + } +} diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/filters/ContentLengthFilterTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/filters/RequestStatisticsFilterTest.java similarity index 70% rename from service/src/test/java/org/whispersystems/textsecuregcm/filters/ContentLengthFilterTest.java rename to service/src/test/java/org/whispersystems/textsecuregcm/filters/RequestStatisticsFilterTest.java index 7a9b2ca09..32038cc8d 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/filters/ContentLengthFilterTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/filters/RequestStatisticsFilterTest.java @@ -12,12 +12,12 @@ import javax.ws.rs.container.ContainerRequestContext; import org.junit.jupiter.api.Test; import org.whispersystems.textsecuregcm.metrics.TrafficSource; -class ContentLengthFilterTest { +class RequestStatisticsFilterTest { @Test void testFilter() throws Exception { - final ContentLengthFilter contentLengthFilter = new ContentLengthFilter(TrafficSource.WEBSOCKET); + final RequestStatisticsFilter requestStatisticsFilter = new RequestStatisticsFilter(TrafficSource.WEBSOCKET); final ContainerRequestContext requestContext = mock(ContainerRequestContext.class); @@ -25,8 +25,8 @@ class ContentLengthFilterTest { when(requestContext.getLength()).thenReturn(Integer.MAX_VALUE); when(requestContext.getLength()).thenThrow(RuntimeException.class); - contentLengthFilter.filter(requestContext); - contentLengthFilter.filter(requestContext); - contentLengthFilter.filter(requestContext); + requestStatisticsFilter.filter(requestContext); + requestStatisticsFilter.filter(requestContext); + requestStatisticsFilter.filter(requestContext); } }