static InstrumentedInterceptor create( TaggedMetricRegistry registry, HostEventsSink hostEventsSink, Class<?> serviceClass) { return new InstrumentedInterceptor(registry, hostEventsSink, serviceClass.getSimpleName()); }
InstrumentedInterceptor(TaggedMetricRegistry registry, HostEventsSink hostEventsSink, String serviceName) { this.hostEventsSink = hostEventsSink; this.serviceName = serviceName; this.responseTimer = registry.timer(name()); }
client.addInterceptor(InstrumentedInterceptor.create(registry, hostEventsSink, serviceClass)); client.addInterceptor(OkhttpTraceInterceptor.INSTANCE); client.addInterceptor(UserAgentInterceptor.of(augmentUserAgent(userAgent, serviceClass)));
@Test public void testIoExceptionRecorded() throws IOException { when(chain.request()).thenReturn(REQUEST_A); when(chain.proceed(any())).thenThrow(IOException.class); assertThat(hostMetrics.getMetrics()).isEmpty(); assertThatExceptionOfType(IOException.class) .isThrownBy(() -> interceptor.intercept(chain)); HostMetrics metrics = Iterables.getOnlyElement(hostMetrics.getMetrics()); assertThat(metrics.getIoExceptions().getCount()).isEqualTo(1); }
client.addInterceptor(InstrumentedInterceptor.create(registry, hostEventsSink, serviceClass)); client.addInterceptor(OkhttpTraceInterceptor.INSTANCE); client.addInterceptor(UserAgentInterceptor.of(augmentUserAgent(userAgent, serviceClass)));
@Test public void testResponseFamilyMetrics() throws IOException { successfulRequest(REQUEST_A); interceptor.intercept(chain); HostMetrics hostA = hostMetrics("hosta", PORT); assertThat(hostA.get2xx().getCount()).isEqualTo(1); successfulRequest(REQUEST_B); interceptor.intercept(chain); HostMetrics hostB = hostMetrics("hostb", PORT); assertThat(hostB.get2xx().getCount()).isEqualTo(1); }
static InstrumentedInterceptor create( TaggedMetricRegistry registry, HostEventsSink hostEventsSink, Class<?> serviceClass) { return new InstrumentedInterceptor(registry, hostEventsSink, serviceClass.getSimpleName()); }
InstrumentedInterceptor(TaggedMetricRegistry registry, HostEventsSink hostEventsSink, String serviceName) { this.hostEventsSink = hostEventsSink; this.serviceName = serviceName; this.responseTimer = registry.timer(name()); }
@Test public void testResponseMetricRegistered() throws IOException { MetricName name = MetricName.builder() .safeName(InstrumentedInterceptor.CLIENT_RESPONSE_METRIC_NAME) .putSafeTags(InstrumentedInterceptor.SERVICE_NAME_TAG, "client") .build(); Timer timer = registry.timer(name); assertThat(timer.getCount()).isEqualTo(0); successfulRequest(REQUEST_A); interceptor.intercept(chain); assertThat(timer.getCount()).isEqualTo(1); }
@Before public void before() { registry = new DefaultTaggedMetricRegistry(); hostMetrics = new HostMetricsRegistry(); interceptor = new InstrumentedInterceptor(registry, hostMetrics, "client"); }