@Test public void methodNull() { when(httpExchange.getMethod()).thenReturn(null); AsyncClientRequestAdapter<TextMap> adapter = sensor.getAsyncClientRequestAdapter(object, new Object[] { httpExchange }, rsc); Map<String, String> tags = adapter.getTags(); assertThat(tags.size(), is(0)); verifyZeroInteractions(object, rsc); }
@Test public void mustNotHaveAnyTagWhenRequestLineIsNull() { when(httpRequest.getRequestLine()).thenReturn(null); AsyncClientRequestAdapter<TextMap> adapter = sensor.getAsyncClientRequestAdapter(object, new Object[] { null, httpRequest, httpContext, null }, rsc); Map<String, String> tags = adapter.getTags(); assertThat("Tags map size must be 0.", tags.size(), is(0)); verifyZeroInteractions(object, rsc); }
@Test public void urlAllNull() { when(httpExchange.getScheme()).thenReturn(null); when(httpExchange.getAddress()).thenReturn(null); when(httpExchange.getRequestURI()).thenReturn(null); AsyncClientRequestAdapter<TextMap> adapter = sensor.getAsyncClientRequestAdapter(object, new Object[] { httpExchange }, rsc); Map<String, String> tags = adapter.getTags(); assertThat(tags.size(), is(0)); verifyZeroInteractions(object, rsc); }
@Test public void mustHaveOneTagWithTheExpectedMethod() { String methodName = "get"; when(requestLine.getMethod()).thenReturn(methodName); AsyncClientRequestAdapter<TextMap> adapter = sensor.getAsyncClientRequestAdapter(object, new Object[] { null, httpRequest, httpContext, null }, rsc); Map<String, String> tags = adapter.getTags(); assertThat("Tags map size must be 1.", tags.size(), is(1)); assertThat("Tags map must have the expected method name.", tags, hasEntry(Tags.HTTP_METHOD.getKey(), methodName)); verifyZeroInteractions(object, rsc); }
@Test public void mustHaveOneTagWithTheExpectedUri() { String uri = "uri"; when(requestLine.getUri()).thenReturn(uri); AsyncClientRequestAdapter<TextMap> adapter = sensor.getAsyncClientRequestAdapter(object, new Object[] { null, httpRequest, httpContext, null }, rsc); Map<String, String> tags = adapter.getTags(); assertThat("Tags map size must be 1.", tags.size(), is(1)); assertThat("Tags map must have the expected uri.", tags, hasEntry(Tags.HTTP_URL.getKey(), uri)); verifyZeroInteractions(object, rsc); }
@Test public void method() { String method = "get"; when(httpExchange.getMethod()).thenReturn(method); AsyncClientRequestAdapter<TextMap> adapter = sensor.getAsyncClientRequestAdapter(object, new Object[] { httpExchange }, rsc); Map<String, String> tags = adapter.getTags(); assertThat(tags.size(), is(1)); assertThat(tags, hasEntry(Tags.HTTP_METHOD.getKey(), method)); verifyZeroInteractions(object, rsc); }
@Test public void urlSchemeNull() { String uri = "/test"; String address = "localhost:8080"; when(httpExchange.getScheme()).thenReturn(null); when(httpExchange.getAddress()).thenReturn(address); when(httpExchange.getRequestURI()).thenReturn(uri); AsyncClientRequestAdapter<TextMap> adapter = sensor.getAsyncClientRequestAdapter(object, new Object[] { httpExchange }, rsc); Map<String, String> tags = adapter.getTags(); assertThat(tags.size(), is(1)); assertThat(tags, hasEntry(Tags.HTTP_URL.getKey(), address + uri)); verifyZeroInteractions(object, rsc); }
@Test public void url() { String uri = "/test"; String schemeString = "http"; String address = "localhost:8080"; when(scheme.array()).thenReturn(schemeString.getBytes()); when(httpExchange.getScheme()).thenReturn(scheme); when(httpExchange.getAddress()).thenReturn(address); when(httpExchange.getRequestURI()).thenReturn(uri); AsyncClientRequestAdapter<TextMap> adapter = sensor.getAsyncClientRequestAdapter(object, new Object[] { httpExchange }, rsc); Map<String, String> tags = adapter.getTags(); assertThat(tags.size(), is(1)); assertThat(tags, hasEntry(Tags.HTTP_URL.getKey(), schemeString + "://" + address + uri)); verifyZeroInteractions(object, rsc); }
@Test public void urlAddressNull() { String uri = "/test"; String schemeString = "http"; when(scheme.array()).thenReturn(schemeString.getBytes()); when(httpExchange.getScheme()).thenReturn(scheme); when(httpExchange.getAddress()).thenReturn(null); when(httpExchange.getRequestURI()).thenReturn(uri); AsyncClientRequestAdapter<TextMap> adapter = sensor.getAsyncClientRequestAdapter(object, new Object[] { httpExchange }, rsc); Map<String, String> tags = adapter.getTags(); assertThat(tags.size(), is(1)); assertThat(tags, hasEntry(Tags.HTTP_URL.getKey(), schemeString + "://" + uri)); verifyZeroInteractions(object, rsc); }
@Test public void urlUriNull() { String schemeString = "http"; String address = "localhost:8080"; when(scheme.array()).thenReturn(schemeString.getBytes()); when(httpExchange.getScheme()).thenReturn(scheme); when(httpExchange.getAddress()).thenReturn(address); when(httpExchange.getRequestURI()).thenReturn(null); AsyncClientRequestAdapter<TextMap> adapter = sensor.getAsyncClientRequestAdapter(object, new Object[] { httpExchange }, rsc); Map<String, String> tags = adapter.getTags(); assertThat(tags, hasEntry(Tags.HTTP_URL.getKey(), schemeString + "://" + address)); verifyZeroInteractions(object, rsc); }
@Test public void urlSchemeBytesNull() { String uri = "/test"; String address = "localhost:8080"; when(scheme.array()).thenReturn(null); when(httpExchange.getScheme()).thenReturn(scheme); when(httpExchange.getAddress()).thenReturn(address); when(httpExchange.getRequestURI()).thenReturn(uri); AsyncClientRequestAdapter<TextMap> adapter = sensor.getAsyncClientRequestAdapter(object, new Object[] { httpExchange }, rsc); Map<String, String> tags = adapter.getTags(); assertThat(tags.size(), is(1)); assertThat(tags, hasEntry(Tags.HTTP_URL.getKey(), address + uri)); verifyZeroInteractions(object, rsc); }
@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); }