SpanContext context = tracer.extract(requestAdapter.getFormat(), requestAdapter.getCarrier()); builder.addReference(requestAdapter.getReferenceType(), context); SpanContextStore store = requestAdapter.getSpanContextStore(); context = store.getSpanContext(); builder.addReference(References.FOLLOWS_FROM, context); if (null != requestAdapter.getPropagationType()) { builder.withTag(ExtraTags.PROPAGATION_TYPE, requestAdapter.getPropagationType().toString()); Map<String, String> tags = requestAdapter.getTags(); if (MapUtils.isNotEmpty(tags)) { for (Map.Entry<String, String> e : tags.entrySet()) {
@Test public void properties() { ServerRequestAdapter<TextMap> adapter = sensor.getServerRequestAdapter(object, new Object[] { message }, rsc); assertThat(adapter.getPropagationType(), is(PropagationType.JMS)); assertThat(adapter.getFormat(), is(Format.Builtin.TEXT_MAP)); verifyZeroInteractions(object, rsc); }
@Test public void empty() { ServerRequestAdapter<?> adapter = sensor.getServerRequestAdapter(object, null, rsc); assertThat(adapter.getPropagationType(), is(nullValue())); assertThat(adapter.getTags().size(), is(0)); verifyZeroInteractions(object, rsc); }
@Test public void baggageExtraction() { ServerRequestAdapter<?> adapter = sensor.getServerRequestAdapter(object, null, rsc); assertThat(adapter.getCarrier(), is(nullValue())); assertThat(adapter.getFormat(), is(nullValue())); verifyZeroInteractions(object, rsc); }
@Test public void tagsNull() { when(requestAdapter.getTags()).thenReturn(null); when(requestAdapter.getReferenceType()).thenReturn("reference"); when(requestAdapter.getPropagationType()).thenReturn(PropagationType.HTTP); when(tracer.extract(Format.Builtin.TEXT_MAP, carrier)).thenReturn(context); when(spanContextStore.getSpanContext()).thenReturn(null); SpanImpl result = interceptor.handleRequest(requestAdapter); assertThat(result, is(span)); verify(tracer).buildSpan(); verify(tracer).extract(Format.Builtin.TEXT_MAP, carrier); verify(spanBuilder).addReference("reference", context); verify(spanBuilder).addReference(References.FOLLOWS_FROM, null); verify(spanBuilder).doNotReport(); verify(spanBuilder).withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_SERVER); verify(spanBuilder).withTag(ExtraTags.PROPAGATION_TYPE, PropagationType.HTTP.toString()); verify(spanBuilder).start(); verify(spanContextStore).setSpanContext(result.context()); verify(spanContextStore).getSpanContext(); verify(span, times(2)).context(); // one in test itself verifyNoMoreInteractions(tracer, spanBuilder, span, spanContextStore); verifyZeroInteractions(context, context2); }
@BeforeMethod public void setup() { when(requestAdapter.getFormat()).thenReturn(Format.Builtin.TEXT_MAP); when(requestAdapter.getCarrier()).thenReturn(carrier); when(requestAdapter.getSpanContextStore()).thenReturn(spanContextStore); when(tracer.buildSpan()).thenReturn(spanBuilder); when(spanBuilder.start()).thenReturn(span); }
@Test public void uriNull() { when(httpRequest.getRequestURI()).thenReturn(null); ServerRequestAdapter<TextMap> adapter = sensor.getServerRequestAdapter(object, new Object[] { httpRequest, httpResponse }, rsc); Map<String, String> tags = adapter.getTags(); assertThat(tags.size(), is(0)); verifyZeroInteractions(object, httpResponse, rsc); }
@Test public void baggageExtractionEnumerationEmpty() throws Exception { doReturn(Collections.enumeration(Collections.emptyList())).when(httpRequest).getHeaderNames(); ServerRequestAdapter<TextMap> adapter = sensor.getServerRequestAdapter(object, new Object[] { httpRequest, httpResponse }, rsc); assertThat(adapter.getCarrier().iterator().hasNext(), is(false)); verifyZeroInteractions(object, httpResponse, rsc); }
@Test public void propagationNull() { when(requestAdapter.getReferenceType()).thenReturn("reference"); when(requestAdapter.getPropagationType()).thenReturn(null); when(tracer.extract(Format.Builtin.TEXT_MAP, carrier)).thenReturn(context); when(spanContextStore.getSpanContext()).thenReturn(null); SpanImpl result = interceptor.handleRequest(requestAdapter); assertThat(result, is(span)); verify(tracer).buildSpan(); verify(tracer).extract(Format.Builtin.TEXT_MAP, carrier); verify(spanBuilder).addReference("reference", context); verify(spanBuilder).addReference(References.FOLLOWS_FROM, null); verify(spanBuilder).doNotReport(); verify(spanBuilder).withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_SERVER); verify(spanBuilder).start(); verify(spanContextStore).setSpanContext(result.context()); verify(spanContextStore).getSpanContext(); verify(span, times(2)).context(); // one in test itself verifyNoMoreInteractions(tracer, spanBuilder, span, spanContextStore); verifyZeroInteractions(context, context2); }
@Test public void contextStore() { ServerRequestAdapter<?> adapter = sensor.getServerRequestAdapter(object, null, rsc); SpanContextStore spanContextStore = adapter.getSpanContextStore(); assertThat(spanContextStore, is(not(nullValue()))); assertThat(spanContextStore, is(instanceOf(NoopSpanContextStore.class))); verifyZeroInteractions(object, rsc); }
@Test public void noTracePassed() { when(requestAdapter.getReferenceType()).thenReturn("reference"); when(tracer.extract(Format.Builtin.TEXT_MAP, carrier)).thenReturn(null); when(spanContextStore.getSpanContext()).thenReturn(null); SpanImpl result = interceptor.handleRequest(requestAdapter); assertThat(result, is(span)); verify(tracer).buildSpan(); verify(tracer).extract(Format.Builtin.TEXT_MAP, carrier); verify(spanBuilder).addReference("reference", (SpanContextImpl) null); verify(spanBuilder).addReference(References.FOLLOWS_FROM, null); verify(spanBuilder).doNotReport(); verify(spanBuilder).withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_SERVER); verify(spanBuilder).start(); verify(spanContextStore).setSpanContext(result.context()); verify(spanContextStore).getSpanContext(); verify(span, times(2)).context(); // one in test itself verifyNoMoreInteractions(tracer, spanBuilder, span, spanContextStore); verifyZeroInteractions(context, context2); }
@Test public void properties() { ServerRequestAdapter<TextMap> adapter = sensor.getServerRequestAdapter(object, new Object[] { httpRequest, httpResponse }, rsc); assertThat(adapter.getPropagationType(), is(PropagationType.HTTP)); verifyZeroInteractions(object, httpResponse, rsc); }
@Test public void happyPath() { when(requestAdapter.getReferenceType()).thenReturn("reference"); when(requestAdapter.getPropagationType()).thenReturn(PropagationType.HTTP); when(requestAdapter.getTags()).thenReturn(Collections.<String, String> singletonMap(Tags.HTTP_URL.getKey(), "value")); when(tracer.extract(Format.Builtin.TEXT_MAP, carrier)).thenReturn(context); when(spanContextStore.getSpanContext()).thenReturn(context2); SpanImpl result = interceptor.handleRequest(requestAdapter); assertThat(result, is(span)); verify(tracer).buildSpan(); verify(tracer).extract(Format.Builtin.TEXT_MAP, carrier); verify(spanBuilder).addReference("reference", context); verify(spanBuilder).addReference(References.FOLLOWS_FROM, context2); verify(spanBuilder).doNotReport(); verify(spanBuilder).withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_SERVER); verify(spanBuilder).withTag(ExtraTags.PROPAGATION_TYPE, PropagationType.HTTP.toString()); verify(spanBuilder).withTag(Tags.HTTP_URL.getKey(), "value"); verify(spanBuilder).start(); verify(spanContextStore).setSpanContext(result.context()); verify(spanContextStore).getSpanContext(); verify(span, times(2)).context(); // one in test itself verifyNoMoreInteractions(tracer, spanBuilder, span, spanContextStore); verifyZeroInteractions(context, context2); }
@Test public void methodNull() { when(httpRequest.getMethod()).thenReturn(null); ServerRequestAdapter<TextMap> adapter = sensor.getServerRequestAdapter(object, new Object[] { httpRequest, httpResponse }, rsc); Map<String, String> tags = adapter.getTags(); assertThat(tags.size(), is(0)); verifyZeroInteractions(object, httpResponse, rsc); }
@Test public void baggageExtraction() { String key = "key"; String value = "value"; when(httpRequest.getHeader(key)).thenReturn(value); doReturn(Collections.enumeration(Collections.singleton(key))).when(httpRequest).getHeaderNames(); ServerRequestAdapter<TextMap> adapter = sensor.getServerRequestAdapter(object, new Object[] { httpRequest, httpResponse }, rsc); Entry<String, String> next = adapter.getCarrier().iterator().next(); assertThat(next.getKey(), is(key)); assertThat(next.getValue(), is(value)); assertThat(adapter.getCarrier().iterator().hasNext(), is(false)); verifyZeroInteractions(object, httpResponse, rsc); }
@Test public void contextStore() { ServerRequestAdapter<TextMap> adapter = sensor.getServerRequestAdapter(object, new Object[] { message }, rsc); SpanContextStore spanContextStore = adapter.getSpanContextStore(); assertThat(spanContextStore, is(not(nullValue()))); assertThat(spanContextStore, is(instanceOf(NoopSpanContextStore.class))); verifyZeroInteractions(object, rsc); } }
@Test public void contextFromStoreReferred() { when(requestAdapter.getReferenceType()).thenReturn("reference"); when(tracer.extract(Format.Builtin.TEXT_MAP, carrier)).thenReturn(null); when(tracer.extract(Format.Builtin.TEXT_MAP, carrier)).thenReturn(null); when(spanContextStore.getSpanContext()).thenReturn(context2); SpanImpl result = interceptor.handleRequest(requestAdapter); assertThat(result, is(span)); verify(tracer).buildSpan(); verify(tracer).extract(Format.Builtin.TEXT_MAP, carrier); verify(spanBuilder).addReference("reference", (SpanContextImpl) null); verify(spanBuilder).addReference(References.FOLLOWS_FROM, context2); verify(spanBuilder).doNotReport(); verify(spanBuilder).withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_SERVER); verify(spanBuilder).start(); verify(spanContextStore).setSpanContext(result.context()); verify(spanContextStore).getSpanContext(); verify(span, times(2)).context(); // one in test itself verifyNoMoreInteractions(tracer, spanBuilder, span, spanContextStore); verifyZeroInteractions(context, context2); } }
@Test public void destinationException() throws Exception { when(message.getJMSDestination()).thenThrow(new Exception()); ServerRequestAdapter<TextMap> adapter = sensor.getServerRequestAdapter(object, new Object[] { message }, rsc); Map<String, String> tags = adapter.getTags(); assertThat(tags.size(), is(0)); verifyZeroInteractions(object, rsc); }
@Test public void baggageExtractionEnumerationNull() throws Exception { doReturn(null).when(httpRequest).getHeaderNames(); ServerRequestAdapter<TextMap> adapter = sensor.getServerRequestAdapter(object, new Object[] { httpRequest, httpResponse }, rsc); assertThat(adapter.getCarrier().iterator().hasNext(), is(false)); verifyZeroInteractions(object, httpResponse, rsc); }
@Test public void contextStore() { SpanContext spanContext = mock(SpanContext.class); when(httpRequest.getAttribute(SpanContextStore.Constants.ID)).thenReturn(spanContext); ServerRequestAdapter<TextMap> adapter = sensor.getServerRequestAdapter(object, new Object[] { httpRequest, httpResponse }, rsc); SpanContextStore spanContextStore = adapter.getSpanContextStore(); SpanContext result = spanContextStore.getSpanContext(); assertThat(result, is(spanContext)); spanContextStore.setSpanContext(spanContext); verify(httpRequest).setAttribute(SpanContextStore.Constants.ID, spanContext); verifyZeroInteractions(object, httpResponse, rsc); } }