/** * Handling exceptional situations. * * @param throwable * Throwable */ private void handleThrowable(Throwable throwable) { spanStore.finishSpan(new ThrowableAwareResponseAdapter(throwable.getClass().getSimpleName())); }
/** * Request committed event. This is earliest place we can start a span. * * @throws IOException * IOException */ @ProxyMethod() public void onRequestCommitted() throws IOException { spanStore.startSpan(); if (null != originalListener) { WHttpEventListenerWrapper.ON_REQUEST_COMMITED.call(originalListener); } }
@Test public void spanIsNull() { spanStore.storeSpan(null); boolean result = spanStore.finishSpan(); assertThat(result, is(false)); verifyZeroInteractions(span); }
/** * Response complete event. We can finish span here. * * @throws IOException * IOException */ @ProxyMethod public void onResponseComplete() throws IOException { spanStore.finishSpan(new HttpResponseAdapter(this)); if (null != originalListener) { WHttpEventListenerWrapper.ON_RESPONSE_COMPLETE.call(originalListener); } }
@Test public void tagsSpanIsNull() { when(adapter.getTags()).thenReturn(Collections.singletonMap("key", "value")); spanStore.storeSpan(null); boolean result = spanStore.finishSpan(adapter); assertThat(result, is(false)); verifyZeroInteractions(span); } }
/** * {@inheritDoc} */ @Override public void beforeBody(long methodId, long sensorTypeId, Object object, Object[] parameters, RegisteredSensorConfig rsc) { Object httpContext = REFLECTION_CACHE.getField(object.getClass(), "localContext", object, null); if (httpContext != null) { SpanStoreAdapter spanStoreAdapter = new ApacheHttpContextSpanStoreAdapter(httpContext); SpanStore spanStore = spanStoreAdapter.getSpanStore(); if (spanStore != null) { spanStore.startSpan(); } } }
/** * Cancelled method for FutureCallback. */ @ProxyMethod() public void cancelled() { try { SpanStore spanStore = spanStoreAdapter.getSpanStore(); if (spanStore != null) { spanStore.finishSpan(new TagsProvidingAdapter() { @Override public Map<String, String> getTags() { return ImmutableMap.of(SpanStoreAdapter.Constants.CANCEL, "true"); } }); } } finally { if (originalCallback != null) { WFutureCallback.cancelled.callSafe(originalCallback); } } }
@Test public void happyPath() throws IOException { proxy.onRequestCommitted(); verify(spanStore).startSpan(); } }
@Test public void alreadyFinished() { when(span.isFinished()).thenReturn(true); boolean result = spanStore.finishSpan(); assertThat(result, is(false)); verify(span).isFinished(); verifyNoMoreInteractions(span); }
@Test public void successful() { SpanStore spanStore = mock(SpanStore.class); HttpContext context = mock(HttpContext.class); when(context.getAttribute(SpanStoreAdapter.Constants.ID)).thenReturn(spanStore); handler.localContext = context; hook.beforeBody(5L, 10L, handler, null, rsc); verify(context).getAttribute(SpanStoreAdapter.Constants.ID); verify(spanStore).startSpan(); verifyNoMoreInteractions(spanStore, context); verifyZeroInteractions(rsc); }
@Test public void successful() { when(span.isFinished()).thenReturn(false); boolean result = spanStore.finishSpan(); assertThat(result, is(true)); verify(span).finish(); verify(span).isFinished(); verifyNoMoreInteractions(span); }
@Test public void alreadyStarted() { when(span.isStarted()).thenReturn(true); boolean result = spanStore.startSpan(); assertThat(result, is(false)); verify(span).isStarted(); verifyNoMoreInteractions(span); }
@Test public void tagsAlreadyFinished() { when(adapter.getTags()).thenReturn(Collections.singletonMap("key", "value")); when(span.isFinished()).thenReturn(true); boolean result = spanStore.finishSpan(adapter); assertThat(result, is(false)); verify(span).isFinished(); verifyNoMoreInteractions(span); }
@Test public void successful() { when(span.isStarted()).thenReturn(false); boolean result = spanStore.startSpan(); assertThat(result, is(true)); verify(span).start(); verify(span).isStarted(); verifyNoMoreInteractions(span); }
@Test public void tagsNullSuccessful() { when(adapter.getTags()).thenReturn(null); when(span.isFinished()).thenReturn(false); boolean result = spanStore.finishSpan(adapter); assertThat(result, is(true)); verify(span).finish(); verify(span).isFinished(); verifyNoMoreInteractions(span); }
@Test public void successful() throws Exception { Exception exception = new Exception(); when(spanStoreAdapter.getSpanStore()).thenReturn(spanStore); proxy.failed(exception); verify(spanStoreAdapter).getSpanStore(); verify(spanStore).finishSpan((TagsProvidingAdapter) any()); verify(originalCallback).failed(exception); verifyNoMoreInteractions(spanStore, spanStoreAdapter, originalCallback); }
@Test public void successful() { Object response = new Object(); when(spanStoreAdapter.getSpanStore()).thenReturn(spanStore); proxy.completed(response); verify(spanStoreAdapter).getSpanStore(); verify(spanStore).finishSpan((HttpResponseAdapter) any()); verify(originalCallback).completed(response); verifyNoMoreInteractions(spanStore, spanStoreAdapter, originalCallback); }
@Test public void tagsSuccessful() { when(adapter.getTags()).thenReturn(Collections.singletonMap("key", "value")); when(span.isFinished()).thenReturn(false); boolean result = spanStore.finishSpan(adapter); assertThat(result, is(true)); verify(span).finish(); verify(span).isFinished(); verify(span).setTag("key", "value"); verifyNoMoreInteractions(span); }
/** * Completed method for FutureCallback. * * @param response * Response of the request. */ @ProxyMethod(parameterTypes = { "java.lang.Object" }) public void completed(Object response) { try { SpanStore spanStore = spanStoreAdapter.getSpanStore(); if (spanStore != null) { spanStore.finishSpan(new HttpResponseAdapter(new ApacheHttpClientV40HttpResponse(response, CACHE))); } } finally { if (originalCallback != null) { WFutureCallback.completed.callSafe(originalCallback, response); } } }