From 4c85cf7006d5a13a1fd39f632874e729c79f6c98 Mon Sep 17 00:00:00 2001 From: Jochen Schalanda Date: Sat, 30 Dec 2023 01:13:58 +0100 Subject: [PATCH] Add support for OkHttp 4.x --- .../okhttp/InstrumentedOkHttpClient.java | 271 ++++-------------- .../okhttp/InstrumentedOkHttpClients.java | 8 +- .../okhttp/InstrumentedOkHttpClientTest.java | 171 ++++++++--- .../java/okhttp3/RecordingEventListener.java | 4 +- pom.xml | 4 +- sample/pom.xml | 5 + .../raskasa/metrics/okhttp/sample/App.java | 29 +- 7 files changed, 212 insertions(+), 280 deletions(-) diff --git a/metrics-okhttp/src/main/java/com/raskasa/metrics/okhttp/InstrumentedOkHttpClient.java b/metrics-okhttp/src/main/java/com/raskasa/metrics/okhttp/InstrumentedOkHttpClient.java index 4eadec4..4d0bd37 100644 --- a/metrics-okhttp/src/main/java/com/raskasa/metrics/okhttp/InstrumentedOkHttpClient.java +++ b/metrics-okhttp/src/main/java/com/raskasa/metrics/okhttp/InstrumentedOkHttpClient.java @@ -21,46 +21,28 @@ import com.codahale.metrics.MetricRegistry; import com.codahale.metrics.RatioGauge; import java.io.IOException; -import java.net.Proxy; -import java.net.ProxySelector; -import java.util.List; -import javax.net.SocketFactory; -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.SSLSocketFactory; -import okhttp3.Authenticator; -import okhttp3.Cache; -import okhttp3.Call; -import okhttp3.CertificatePinner; -import okhttp3.ConnectionPool; -import okhttp3.ConnectionSpec; -import okhttp3.CookieJar; -import okhttp3.Dispatcher; -import okhttp3.Dns; import okhttp3.EventListener; -import okhttp3.Interceptor; import okhttp3.OkHttpClient; -import okhttp3.Protocol; -import okhttp3.Request; -import okhttp3.WebSocket; -import okhttp3.WebSocketListener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** Wraps an {@link OkHttpClient} in order to provide data about its internals. */ final class InstrumentedOkHttpClient extends OkHttpClient { private static final Logger LOG = LoggerFactory.getLogger(InstrumentedOkHttpClient.class); - private final MetricRegistry registry; - private OkHttpClient rawClient; - private final String name; - InstrumentedOkHttpClient(MetricRegistry registry, OkHttpClient rawClient, String name) { - this.rawClient = rawClient; - this.registry = registry; - this.name = name; - instrumentHttpCache(); - instrumentConnectionPool(); - instrumentNetworkRequests(); - instrumentEventListener(); + public static OkHttpClient build(MetricRegistry registry, OkHttpClient rawClient, String name) { + Builder builder = rawClient.newBuilder(); + EventListener.Factory eventListenerFactory = rawClient.eventListenerFactory(); + instrumentNetworkRequests(builder, registry, name); + instrumentEventListener(builder, eventListenerFactory, registry, name); + + OkHttpClient client = builder.build(); + if (rawClient.cache() != null) { + instrumentHttpCache(client, registry, name); + } + instrumentConnectionPool(client, registry, name); + + return client; } /** @@ -75,54 +57,53 @@ final class InstrumentedOkHttpClient extends OkHttpClient { *
  • the given {@code metric} * */ - String metricId(String metric) { + static String metricId(String name, String metric) { return name(OkHttpClient.class, name, metric); } - private void instrumentHttpCache() { - if (cache() == null) return; - + private static void instrumentHttpCache( + OkHttpClient client, MetricRegistry registry, String name) { registry.register( - metricId("cache-request-count"), + metricId(name, "cache-request-count"), new Gauge() { @Override public Integer getValue() { // The number of HTTP requests issued since this cache was created. - return rawClient.cache().requestCount(); + return client.cache().requestCount(); } }); registry.register( - metricId("cache-hit-count"), + metricId(name, "cache-hit-count"), new Gauge() { @Override public Integer getValue() { // ... the number of those requests that required network use. - return rawClient.cache().hitCount(); + return client.cache().hitCount(); } }); registry.register( - metricId("cache-network-count"), + metricId(name, "cache-network-count"), new Gauge() { @Override public Integer getValue() { // ... the number of those requests whose responses were served by the cache. - return rawClient.cache().networkCount(); + return client.cache().networkCount(); } }); registry.register( - metricId("cache-write-success-count"), + metricId(name, "cache-write-success-count"), new Gauge() { @Override public Integer getValue() { - return rawClient.cache().writeSuccessCount(); + return client.cache().writeSuccessCount(); } }); registry.register( - metricId("cache-write-abort-count"), + metricId(name, "cache-write-abort-count"), new Gauge() { @Override public Integer getValue() { - return rawClient.cache().writeAbortCount(); + return client.cache().writeAbortCount(); } }); final Gauge currentCacheSize = @@ -130,7 +111,7 @@ public Integer getValue() { @Override public Long getValue() { try { - return rawClient.cache().size(); + return client.cache().size(); } catch (IOException ex) { LOG.error(ex.getMessage(), ex); return -1L; @@ -141,13 +122,13 @@ public Long getValue() { new Gauge() { @Override public Long getValue() { - return rawClient.cache().maxSize(); + return client.cache().maxSize(); } }; - registry.register(metricId("cache-current-size"), currentCacheSize); - registry.register(metricId("cache-max-size"), maxCacheSize); + registry.register(metricId(name, "cache-current-size"), currentCacheSize); + registry.register(metricId(name, "cache-max-size"), maxCacheSize); registry.register( - metricId("cache-size"), + metricId(name, "cache-size"), new RatioGauge() { @Override protected Ratio getRatio() { @@ -156,193 +137,39 @@ protected Ratio getRatio() { }); } - private void instrumentConnectionPool() { - if (connectionPool() == null) { - rawClient = rawClient.newBuilder().connectionPool(new ConnectionPool()).build(); - } - + private static void instrumentConnectionPool( + OkHttpClient client, MetricRegistry registry, String name) { registry.register( - metricId("connection-pool-total-count"), + metricId(name, "connection-pool-total-count"), new Gauge() { @Override public Integer getValue() { - return rawClient.connectionPool().connectionCount(); + return client.connectionPool().connectionCount(); } }); registry.register( - metricId("connection-pool-idle-count"), + metricId(name, "connection-pool-idle-count"), new Gauge() { @Override public Integer getValue() { - return rawClient.connectionPool().idleConnectionCount(); + return client.connectionPool().idleConnectionCount(); } }); } - private void instrumentNetworkRequests() { - rawClient = - rawClient - .newBuilder() - .addNetworkInterceptor( - new InstrumentedInterceptor(registry, name(OkHttpClient.class, this.name))) - .build(); - } - - private void instrumentEventListener() { - final EventListener.Factory delegate = this.rawClient.eventListenerFactory(); - this.rawClient = - this.rawClient - .newBuilder() - .eventListenerFactory( - new InstrumentedEventListener.Factory( - this.registry, delegate, name(EventListener.class, this.name))) - .build(); - } - - @Override - public Authenticator authenticator() { - return rawClient.authenticator(); - } - - @Override - public Cache cache() { - return rawClient.cache(); - } - - @Override - public CertificatePinner certificatePinner() { - return rawClient.certificatePinner(); - } - - @Override - public ConnectionPool connectionPool() { - return rawClient.connectionPool(); - } - - @Override - public List connectionSpecs() { - return rawClient.connectionSpecs(); - } - - @Override - public int connectTimeoutMillis() { - return rawClient.connectTimeoutMillis(); - } - - @Override - public CookieJar cookieJar() { - return rawClient.cookieJar(); - } - - @Override - public Dispatcher dispatcher() { - return rawClient.dispatcher(); - } - - @Override - public Dns dns() { - return rawClient.dns(); - } - - @Override - public boolean followRedirects() { - return rawClient.followRedirects(); - } - - @Override - public boolean followSslRedirects() { - return rawClient.followSslRedirects(); - } - - @Override - public HostnameVerifier hostnameVerifier() { - return rawClient.hostnameVerifier(); - } - - @Override - public List interceptors() { - return rawClient.interceptors(); - } - - @Override - public List networkInterceptors() { - return rawClient.networkInterceptors(); - } - - @Override - public OkHttpClient.Builder newBuilder() { - return rawClient.newBuilder(); - } - - @Override - public Call newCall(Request request) { - return rawClient.newCall(request); - } - - @Override - public WebSocket newWebSocket(Request request, WebSocketListener listener) { - return rawClient.newWebSocket(request, listener); - } - - @Override - public int pingIntervalMillis() { - return rawClient.pingIntervalMillis(); - } - - @Override - public List protocols() { - return rawClient.protocols(); - } - - @Override - public Proxy proxy() { - return rawClient.proxy(); - } - - @Override - public Authenticator proxyAuthenticator() { - return rawClient.proxyAuthenticator(); - } - - @Override - public ProxySelector proxySelector() { - return rawClient.proxySelector(); - } - - @Override - public int readTimeoutMillis() { - return rawClient.readTimeoutMillis(); - } - - @Override - public boolean retryOnConnectionFailure() { - return rawClient.retryOnConnectionFailure(); - } - - @Override - public SocketFactory socketFactory() { - return rawClient.socketFactory(); - } - - @Override - public SSLSocketFactory sslSocketFactory() { - return rawClient.sslSocketFactory(); - } - - @Override - public int writeTimeoutMillis() { - return rawClient.writeTimeoutMillis(); - } - - @Override - public boolean equals(Object obj) { - return (obj instanceof InstrumentedOkHttpClient - && rawClient.equals(((InstrumentedOkHttpClient) obj).rawClient)) - || rawClient.equals(obj); + private static void instrumentNetworkRequests( + Builder builder, MetricRegistry registry, String name) { + builder.addNetworkInterceptor( + new InstrumentedInterceptor(registry, name(OkHttpClient.class, name))); } - @Override - public String toString() { - return rawClient.toString(); + private static void instrumentEventListener( + Builder builder, + EventListener.Factory eventListenerFactory, + MetricRegistry registry, + String name) { + builder.eventListenerFactory( + new InstrumentedEventListener.Factory( + registry, eventListenerFactory, name(EventListener.class, name))); } } diff --git a/metrics-okhttp/src/main/java/com/raskasa/metrics/okhttp/InstrumentedOkHttpClients.java b/metrics-okhttp/src/main/java/com/raskasa/metrics/okhttp/InstrumentedOkHttpClients.java index ffa5a27..a6f4242 100644 --- a/metrics-okhttp/src/main/java/com/raskasa/metrics/okhttp/InstrumentedOkHttpClients.java +++ b/metrics-okhttp/src/main/java/com/raskasa/metrics/okhttp/InstrumentedOkHttpClients.java @@ -23,12 +23,12 @@ public final class InstrumentedOkHttpClients { /** Create and instrument an {@link OkHttpClient}. */ public static OkHttpClient create(MetricRegistry registry) { - return new InstrumentedOkHttpClient(registry, new OkHttpClient(), null); + return InstrumentedOkHttpClient.build(registry, new OkHttpClient(), null); } /** Instrument the given {@link OkHttpClient}. */ public static OkHttpClient create(MetricRegistry registry, OkHttpClient client) { - return new InstrumentedOkHttpClient(registry, client, null); + return InstrumentedOkHttpClient.build(registry, client, null); } /** @@ -38,7 +38,7 @@ public static OkHttpClient create(MetricRegistry registry, OkHttpClient client) * situations where you have more than one instrumented client in your application. */ public static OkHttpClient create(MetricRegistry registry, String name) { - return new InstrumentedOkHttpClient(registry, new OkHttpClient(), name); + return InstrumentedOkHttpClient.build(registry, new OkHttpClient(), name); } /** @@ -48,7 +48,7 @@ public static OkHttpClient create(MetricRegistry registry, String name) { * situations where you have more than one instrumented client in your application. */ public static OkHttpClient create(MetricRegistry registry, OkHttpClient client, String name) { - return new InstrumentedOkHttpClient(registry, client, name); + return InstrumentedOkHttpClient.build(registry, client, name); } private InstrumentedOkHttpClients() { diff --git a/metrics-okhttp/src/test/java/com/raskasa/metrics/okhttp/InstrumentedOkHttpClientTest.java b/metrics-okhttp/src/test/java/com/raskasa/metrics/okhttp/InstrumentedOkHttpClientTest.java index a50d21f..8872d6e 100644 --- a/metrics-okhttp/src/test/java/com/raskasa/metrics/okhttp/InstrumentedOkHttpClientTest.java +++ b/metrics-okhttp/src/test/java/com/raskasa/metrics/okhttp/InstrumentedOkHttpClientTest.java @@ -71,27 +71,59 @@ public void syncNetworkRequestsAreInstrumented() throws IOException { server.enqueue(mockResponse); HttpUrl baseUrl = server.url("/"); - InstrumentedOkHttpClient client = new InstrumentedOkHttpClient(registry, rawClient, null); + OkHttpClient client = InstrumentedOkHttpClient.build(registry, rawClient, null); - assertThat(registry.getMeters().get(client.metricId("network-requests-submitted")).getCount()) + assertThat( + registry + .getMeters() + .get(InstrumentedOkHttpClient.metricId(null, "network-requests-submitted")) + .getCount()) .isEqualTo(0); - assertThat(registry.getCounters().get(client.metricId("network-requests-running")).getCount()) + assertThat( + registry + .getCounters() + .get(InstrumentedOkHttpClient.metricId(null, "network-requests-running")) + .getCount()) .isEqualTo(0); - assertThat(registry.getMeters().get(client.metricId("network-requests-completed")).getCount()) + assertThat( + registry + .getMeters() + .get(InstrumentedOkHttpClient.metricId(null, "network-requests-completed")) + .getCount()) .isEqualTo(0); - assertThat(registry.getTimers().get(client.metricId("network-requests-duration")).getCount()) + assertThat( + registry + .getTimers() + .get(InstrumentedOkHttpClient.metricId(null, "network-requests-duration")) + .getCount()) .isEqualTo(0); Request request = new Request.Builder().url(baseUrl).build(); try (Response response = client.newCall(request).execute()) { - assertThat(registry.getMeters().get(client.metricId("network-requests-submitted")).getCount()) + assertThat( + registry + .getMeters() + .get(InstrumentedOkHttpClient.metricId(null, "network-requests-submitted")) + .getCount()) .isEqualTo(1); - assertThat(registry.getCounters().get(client.metricId("network-requests-running")).getCount()) + assertThat( + registry + .getCounters() + .get(InstrumentedOkHttpClient.metricId(null, "network-requests-running")) + .getCount()) .isEqualTo(0); - assertThat(registry.getMeters().get(client.metricId("network-requests-completed")).getCount()) + assertThat( + registry + .getMeters() + .get(InstrumentedOkHttpClient.metricId(null, "network-requests-completed")) + .getCount()) .isEqualTo(1); - assertThat(registry.getTimers().get(client.metricId("network-requests-duration")).getCount()) + assertThat( + registry + .getTimers() + .get(InstrumentedOkHttpClient.metricId(null, "network-requests-duration")) + .getCount()) .isEqualTo(1); } } @@ -107,15 +139,31 @@ public void aSyncNetworkRequestsAreInstrumented() { server.enqueue(mockResponse); HttpUrl baseUrl = server.url("/"); - final InstrumentedOkHttpClient client = new InstrumentedOkHttpClient(registry, rawClient, null); + final OkHttpClient client = InstrumentedOkHttpClient.build(registry, rawClient, null); - assertThat(registry.getMeters().get(client.metricId("network-requests-submitted")).getCount()) + assertThat( + registry + .getMeters() + .get(InstrumentedOkHttpClient.metricId(null, "network-requests-submitted")) + .getCount()) .isEqualTo(0); - assertThat(registry.getCounters().get(client.metricId("network-requests-running")).getCount()) + assertThat( + registry + .getCounters() + .get(InstrumentedOkHttpClient.metricId(null, "network-requests-running")) + .getCount()) .isEqualTo(0); - assertThat(registry.getMeters().get(client.metricId("network-requests-completed")).getCount()) + assertThat( + registry + .getMeters() + .get(InstrumentedOkHttpClient.metricId(null, "network-requests-completed")) + .getCount()) .isEqualTo(0); - assertThat(registry.getTimers().get(client.metricId("network-requests-duration")).getCount()) + assertThat( + registry + .getTimers() + .get(InstrumentedOkHttpClient.metricId(null, "network-requests-duration")) + .getCount()) .isEqualTo(0); final Request request = new Request.Builder().url(baseUrl).build(); @@ -134,25 +182,32 @@ public void onResponse(Call call, Response response) throws IOException { assertThat( registry .getMeters() - .get(client.metricId("network-requests-submitted")) + .get( + InstrumentedOkHttpClient.metricId( + null, "network-requests-submitted")) .getCount()) .isEqualTo(1); assertThat( registry .getCounters() - .get(client.metricId("network-requests-running")) + .get( + InstrumentedOkHttpClient.metricId(null, "network-requests-running")) .getCount()) .isEqualTo(0); assertThat( registry .getMeters() - .get(client.metricId("network-requests-completed")) + .get( + InstrumentedOkHttpClient.metricId( + null, "network-requests-completed")) .getCount()) .isEqualTo(1); assertThat( registry .getTimers() - .get(client.metricId("network-requests-duration")) + .get( + InstrumentedOkHttpClient.metricId( + null, "network-requests-duration")) .getCount()) .isEqualTo(1); response.body().close(); @@ -173,17 +228,29 @@ public void httpCacheIsInstrumented() throws Exception { Cache cache = new Cache(cacheRule.getRoot(), Long.MAX_VALUE); rawClient = rawClient.newBuilder().cache(cache).build(); - InstrumentedOkHttpClient client = new InstrumentedOkHttpClient(registry, rawClient, null); + OkHttpClient client = InstrumentedOkHttpClient.build(registry, rawClient, null); - assertThat(registry.getGauges().get(client.metricId("cache-max-size")).getValue()) + assertThat( + registry + .getGauges() + .get(InstrumentedOkHttpClient.metricId(null, "cache-max-size")) + .getValue()) .isEqualTo(Long.MAX_VALUE); - assertThat(registry.getGauges().get(client.metricId("cache-current-size")).getValue()) + assertThat( + registry + .getGauges() + .get(InstrumentedOkHttpClient.metricId(null, "cache-current-size")) + .getValue()) .isEqualTo(0L); Request request = new Request.Builder().url(baseUrl).build(); Response response = client.newCall(request).execute(); - assertThat(registry.getGauges().get(client.metricId("cache-current-size")).getValue()) + assertThat( + registry + .getGauges() + .get(InstrumentedOkHttpClient.metricId(null, "cache-current-size")) + .getValue()) .isEqualTo(rawClient.cache().size()); response.body().close(); @@ -195,11 +262,19 @@ public void connectionPoolIsInstrumented() throws Exception { server.enqueue(new MockResponse().setBody("two")); HttpUrl baseUrl = server.url("/"); - InstrumentedOkHttpClient client = new InstrumentedOkHttpClient(registry, rawClient, null); + OkHttpClient client = InstrumentedOkHttpClient.build(registry, rawClient, null); - assertThat(registry.getGauges().get(client.metricId("connection-pool-total-count")).getValue()) + assertThat( + registry + .getGauges() + .get(InstrumentedOkHttpClient.metricId(null, "connection-pool-total-count")) + .getValue()) .isEqualTo(0); - assertThat(registry.getGauges().get(client.metricId("connection-pool-idle-count")).getValue()) + assertThat( + registry + .getGauges() + .get(InstrumentedOkHttpClient.metricId(null, "connection-pool-idle-count")) + .getValue()) .isEqualTo(0); Request req1 = new Request.Builder().url(baseUrl).build(); @@ -207,9 +282,17 @@ public void connectionPoolIsInstrumented() throws Exception { Response resp1 = client.newCall(req1).execute(); Response resp2 = client.newCall(req2).execute(); - assertThat(registry.getGauges().get(client.metricId("connection-pool-total-count")).getValue()) + assertThat( + registry + .getGauges() + .get(InstrumentedOkHttpClient.metricId(null, "connection-pool-total-count")) + .getValue()) .isEqualTo(2); - assertThat(registry.getGauges().get(client.metricId("connection-pool-idle-count")).getValue()) + assertThat( + registry + .getGauges() + .get(InstrumentedOkHttpClient.metricId(null, "connection-pool-idle-count")) + .getValue()) .isEqualTo(0); resp1.body().close(); @@ -222,7 +305,7 @@ public void eventListenerIsInstrumented() throws Exception { server.enqueue(new MockResponse().setBody("two")); HttpUrl baseUrl = server.url("/"); - InstrumentedOkHttpClient client = new InstrumentedOkHttpClient(registry, rawClient, null); + OkHttpClient client = InstrumentedOkHttpClient.build(registry, rawClient, null); assertThat(registry.getMeters().keySet()) .doesNotContain(MetricRegistry.name(EventListener.class, "calls-start")); @@ -380,7 +463,7 @@ public void eventListenerDelegatesSuccessfully() throws Exception { RecordingEventListener delegate = new RecordingEventListener(); OkHttpClient configureClient = rawClient.newBuilder().eventListener(delegate).build(); - InstrumentedOkHttpClient client = new InstrumentedOkHttpClient(registry, configureClient, null); + OkHttpClient client = InstrumentedOkHttpClient.build(registry, configureClient, null); Request request = new Request.Builder().url(baseUrl).build(); Response response = client.newCall(request).execute(); response.close(); @@ -416,11 +499,19 @@ public void executorServiceIsInstrumented() throws Exception { .newBuilder() .dispatcher(new Dispatcher(MoreExecutors.newDirectExecutorService())) .build(); - InstrumentedOkHttpClient client = new InstrumentedOkHttpClient(registry, rawClient, null); + OkHttpClient client = InstrumentedOkHttpClient.build(registry, rawClient, null); - assertThat(registry.getMeters().get(client.metricId("network-requests-submitted")).getCount()) + assertThat( + registry + .getMeters() + .get(InstrumentedOkHttpClient.metricId(null, "network-requests-submitted")) + .getCount()) .isEqualTo(0); - assertThat(registry.getMeters().get(client.metricId("network-requests-completed")).getCount()) + assertThat( + registry + .getMeters() + .get(InstrumentedOkHttpClient.metricId(null, "network-requests-completed")) + .getCount()) .isEqualTo(0); Request req1 = new Request.Builder().url(baseUrl).build(); @@ -428,9 +519,17 @@ public void executorServiceIsInstrumented() throws Exception { client.newCall(req1).enqueue(new TestCallback()); client.newCall(req2).enqueue(new TestCallback()); - assertThat(registry.getMeters().get(client.metricId("network-requests-submitted")).getCount()) + assertThat( + registry + .getMeters() + .get(InstrumentedOkHttpClient.metricId(null, "network-requests-submitted")) + .getCount()) .isEqualTo(2); - assertThat(registry.getMeters().get(client.metricId("network-requests-completed")).getCount()) + assertThat( + registry + .getMeters() + .get(InstrumentedOkHttpClient.metricId(null, "network-requests-completed")) + .getCount()) .isEqualTo(2); } @@ -441,8 +540,8 @@ public void providedNameUsedInMetricId() { assertThat(registry.getMeters()).isEmpty(); - InstrumentedOkHttpClient client = new InstrumentedOkHttpClient(registry, rawClient, prefix); - String generatedId = client.metricId(baseId); + OkHttpClient client = InstrumentedOkHttpClient.build(registry, rawClient, prefix); + String generatedId = InstrumentedOkHttpClient.metricId(prefix, baseId); assertThat(registry.getMeters().get(generatedId)).isNotNull(); } diff --git a/metrics-okhttp/src/test/java/okhttp3/RecordingEventListener.java b/metrics-okhttp/src/test/java/okhttp3/RecordingEventListener.java index 3e57520..b186af8 100644 --- a/metrics-okhttp/src/test/java/okhttp3/RecordingEventListener.java +++ b/metrics-okhttp/src/test/java/okhttp3/RecordingEventListener.java @@ -142,7 +142,7 @@ public void requestHeadersStart(Call call) { @Override public void requestHeadersEnd(Call call, Request request) { - logEvent(new RequestHeadersEnd(call, request.headers.byteCount())); + logEvent(new RequestHeadersEnd(call, request.headers().byteCount())); } @Override @@ -167,7 +167,7 @@ public void responseHeadersStart(Call call) { @Override public void responseHeadersEnd(Call call, Response response) { - logEvent(new ResponseHeadersEnd(call, response.headers.byteCount())); + logEvent(new ResponseHeadersEnd(call, response.headers().byteCount())); } @Override diff --git a/pom.xml b/pom.xml index 0ce54dd..81382ee 100644 --- a/pom.xml +++ b/pom.xml @@ -25,9 +25,9 @@ 1.8 - 4.2.3 + 4.2.23 3.12.4 - 3.14.9 + 4.12.0 3.21.0 diff --git a/sample/pom.xml b/sample/pom.xml index d92dce3..2ec1c81 100644 --- a/sample/pom.xml +++ b/sample/pom.xml @@ -25,5 +25,10 @@ com.squareup.okhttp3 okhttp + + org.slf4j + slf4j-simple + 1.7.36 + diff --git a/sample/src/main/java/com/raskasa/metrics/okhttp/sample/App.java b/sample/src/main/java/com/raskasa/metrics/okhttp/sample/App.java index f1f470b..44076ab 100644 --- a/sample/src/main/java/com/raskasa/metrics/okhttp/sample/App.java +++ b/sample/src/main/java/com/raskasa/metrics/okhttp/sample/App.java @@ -13,26 +13,27 @@ public final class App { public static void main(String[] args) throws Exception { MetricRegistry metrics = new MetricRegistry(); - ConsoleReporter reporter = - ConsoleReporter.forRegistry(metrics) - .convertRatesTo(TimeUnit.SECONDS) - .convertDurationsTo(TimeUnit.MILLISECONDS) - .build(); - reporter.start(15, TimeUnit.SECONDS); + try (ConsoleReporter reporter = + ConsoleReporter.forRegistry(metrics) + .convertRatesTo(TimeUnit.SECONDS) + .convertDurationsTo(TimeUnit.MILLISECONDS) + .build()) { + reporter.start(15, TimeUnit.SECONDS); - OkHttpClient client = InstrumentedOkHttpClients.create(metrics); + OkHttpClient client = InstrumentedOkHttpClients.create(metrics); - // noinspection InfiniteLoopStatement - for (; ; ) { + // noinspection InfiniteLoopStatement + for (; ; ) { - Request request = + Request request = new Request.Builder().url("https://api.github.com/repos/raskasa/metrics-okhttp").build(); - try (Response response = client.newCall(request).execute()) { - System.out.println(response.body().string()); - } + try (Response response = client.newCall(request).execute()) { + System.out.println(response.body().string()); + } - Thread.sleep(15_000); // 15 seconds + Thread.sleep(15_000); // 15 seconds + } } } }