@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); } }
@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 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 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); }
@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 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); }
context = store.getSpanContext(); builder.addReference(References.FOLLOWS_FROM, context); store.setSpanContext(span.context());