@Test public void spanShouldNotStart() { when(requestAdapter.startClientSpan()).thenReturn(false); SpanImpl result = interceptor.handleAsyncRequest(requestAdapter); assertThat(result, is(nullValue())); verify(requestAdapter).startClientSpan(); verifyNoMoreInteractions(requestAdapter); verifyZeroInteractions(tracer); }
@Test public void spanNull() throws Exception { // ids long methodId = 7l; long sensorId = 13l; // interceptor Object[] parameters = new String[] { "blah", "bla" }; doReturn(requestAdapter).when(adapterProvider).getAsyncClientRequestAdapter(object, parameters, rsc); when(clientInterceptor.handleAsyncRequest(requestAdapter)).thenReturn(null); // execute calls hook.beforeBody(methodId, sensorId, object, parameters, rsc); hook.firstAfterBody(methodId, sensorId, object, parameters, result, false, rsc); hook.secondAfterBody(coreService, methodId, sensorId, object, parameters, result, false, rsc); // verify timer, interceptor and adapters verify(clientInterceptor).handleAsyncRequest(requestAdapter); verify(adapterProvider).getAsyncClientRequestAdapter(object, parameters, rsc); verifyNoMoreInteractions(adapterProvider, clientInterceptor); verifyZeroInteractions(coreService, asyncContextListener); }
/** * {@inheritDoc} */ @Override public void beforeBody(long methodId, long sensorTypeId, Object object, Object[] parameters, RegisteredSensorConfig rsc) { if (!REF_MARKER.isMarkerSet()) { // get requestAdapter and handle AsyncClientRequestAdapter<?> adapter = asyncClientAdapterProvider.getAsyncClientRequestAdapter(object, parameters, rsc); if (null != adapter) { SpanImpl span = clientInterceptor.handleAsyncRequest(adapter); if (null != span) { span.setTag(ExtraTags.INSPECTT_METHOD_ID, methodId); span.setTag(ExtraTags.INSPECTT_SENSOR_ID, sensorTypeId); asyncSpanContextListener.asyncSpanContextCreated(span.context()); if (LOG.isDebugEnabled()) { LOG.debug("Remote async client hook before body span " + span); } } } } REF_MARKER.markCall(); }
@Test public void propagationNull() { when(requestAdapter.startClientSpan()).thenReturn(true); when(requestAdapter.getPropagationType()).thenReturn(null); when(requestAdapter.getReferenceType()).thenReturn(References.FOLLOWS_FROM); SpanImpl result = interceptor.handleAsyncRequest(requestAdapter); assertThat(result, is(span)); verify(tracer).buildSpan(null, References.FOLLOWS_FROM, true); verify(tracer).inject(context, Format.Builtin.TEXT_MAP, carrier); verify(spanBuilder).withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_CLIENT); verify(spanBuilder).build(); verify(span).context(); ArgumentCaptor<SpanStore> spanStoreCaptor = ArgumentCaptor.forClass(SpanStore.class); verify(spanStoreAdapter).setSpanStore(spanStoreCaptor.capture()); assertThat(spanStoreCaptor.getValue().getSpan(), is(span)); verifyNoMoreInteractions(tracer, spanBuilder, span); verifyZeroInteractions(context); } }
@Test public void tagsNull() { when(requestAdapter.startClientSpan()).thenReturn(true); when(requestAdapter.getTags()).thenReturn(null); when(requestAdapter.getPropagationType()).thenReturn(PropagationType.HTTP); when(requestAdapter.getReferenceType()).thenReturn(References.FOLLOWS_FROM); SpanImpl result = interceptor.handleAsyncRequest(requestAdapter); assertThat(result, is(span)); verify(tracer).buildSpan(null, References.FOLLOWS_FROM, true); verify(tracer).inject(context, Format.Builtin.TEXT_MAP, carrier); verify(spanBuilder).withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_CLIENT); verify(spanBuilder).withTag(ExtraTags.PROPAGATION_TYPE, PropagationType.HTTP.toString()); verify(spanBuilder).build(); verify(span).context(); ArgumentCaptor<SpanStore> spanStoreCaptor = ArgumentCaptor.forClass(SpanStore.class); verify(spanStoreAdapter).setSpanStore(spanStoreCaptor.capture()); assertThat(spanStoreCaptor.getValue().getSpan(), is(span)); verifyNoMoreInteractions(tracer, spanBuilder, span); verifyZeroInteractions(context); }
@Test public void happyPath() { when(requestAdapter.startClientSpan()).thenReturn(true); when(requestAdapter.getTags()).thenReturn(Collections.<String, String> singletonMap(Tags.HTTP_URL.getKey(), "value")); when(requestAdapter.getPropagationType()).thenReturn(PropagationType.HTTP); when(requestAdapter.getReferenceType()).thenReturn(References.FOLLOWS_FROM); SpanImpl result = interceptor.handleAsyncRequest(requestAdapter); assertThat(result, is(span)); verify(tracer).buildSpan(null, References.FOLLOWS_FROM, true); verify(tracer).inject(context, Format.Builtin.TEXT_MAP, carrier); verify(spanBuilder).withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_CLIENT); verify(spanBuilder).withTag(ExtraTags.PROPAGATION_TYPE, PropagationType.HTTP.toString()); verify(spanBuilder).withTag(Tags.HTTP_URL.getKey(), "value"); verify(spanBuilder).build(); verify(span).context(); ArgumentCaptor<SpanStore> spanStoreCaptor = ArgumentCaptor.forClass(SpanStore.class); verify(spanStoreAdapter).setSpanStore(spanStoreCaptor.capture()); assertThat(spanStoreCaptor.getValue().getSpan(), is(span)); verifyNoMoreInteractions(tracer, spanBuilder, span); verifyZeroInteractions(context); }
@Test public void happyPath() throws Exception { // ids boolean exception = RandomUtils.nextBoolean(); long methodId = 7l; long sensorId = 13l; long spanId = 17l; // interceptor Object[] parameters = new String[] { "blah", "bla" }; doReturn(requestAdapter).when(adapterProvider).getAsyncClientRequestAdapter(object, parameters, rsc); SpanContextImpl context = mock(SpanContextImpl.class); when(context.getId()).thenReturn(spanId); SpanImpl spanImpl = mock(SpanImpl.class); when(spanImpl.context()).thenReturn(context); when(spanImpl.isClient()).thenReturn(true); when(clientInterceptor.handleAsyncRequest(requestAdapter)).thenReturn(spanImpl); // execute calls hook.beforeBody(methodId, sensorId, object, parameters, rsc); hook.firstAfterBody(methodId, sensorId, object, parameters, result, exception, rsc); hook.secondAfterBody(coreService, methodId, sensorId, object, parameters, result, exception, rsc); verify(asyncContextListener).asyncSpanContextCreated(context); verify(spanImpl).setTag(ExtraTags.INSPECTT_METHOD_ID, methodId); verify(spanImpl).setTag(ExtraTags.INSPECTT_SENSOR_ID, sensorId); // verify timer, interceptor and adapters verify(clientInterceptor).handleAsyncRequest(requestAdapter); verify(adapterProvider).getAsyncClientRequestAdapter(object, parameters, rsc); verifyNoMoreInteractions(adapterProvider, clientInterceptor, coreService, asyncContextListener); }
when(spanImpl.context()).thenReturn(context); when(spanImpl.isClient()).thenReturn(true); when(clientInterceptor.handleAsyncRequest(requestAdapter)).thenReturn(spanImpl); verify(clientInterceptor).handleAsyncRequest(requestAdapter); verify(adapterProvider).getAsyncClientRequestAdapter(object, parameters, rsc); verifyNoMoreInteractions(adapterProvider, clientInterceptor, coreService, asyncContextListener);