/** * Adds any extra tags that Wingtips wants to add that aren't normally a part of specific tag strategies like * Zipkin or OpenTracing. * * <p>By default this will add the {@link WingtipsTags#SPAN_HANDLER} tag with the value that comes from * {@link HttpTagAndSpanNamingAdapter#getSpanHandlerTagValue(Object, Object)}. * * <p>This method does the actual extra-wingtips-tagging work for the public-facing {@link * #handleResponseTaggingAndFinalSpanName(Span, Object, Object, Throwable, HttpTagAndSpanNamingAdapter)}. * * @param span The span to tag - will never be null. * @param request The request object - this may be null. * @param response The response object - this may be null. * @param error The error that prevented the request/response from completing normally, or null if no such error * occurred. * @param adapter The adapter to handle the request and response - will never be null. */ @SuppressWarnings("unused") protected void doExtraWingtipsTagging( @NotNull Span span, @Nullable REQ request, @Nullable RES response, @Nullable Throwable error, @NotNull HttpTagAndSpanNamingAdapter<REQ, RES> adapter ) { putTagIfValueIsNotBlank(span, WingtipsTags.SPAN_HANDLER, adapter.getSpanHandlerTagValue(request, response)); }
@Test public void doExtraWingtipsTagging_adds_SPAN_HANDLER_tag_if_adapter_getSpanHandlerTagValue_is_not_blank() { // given String adapterSpanHandlerTagValue = UUID.randomUUID().toString(); doReturn(adapterSpanHandlerTagValue).when(adapterMock).getSpanHandlerTagValue(anyObject(), anyObject()); // when implSpy.doExtraWingtipsTagging(spanMock, requestObjectMock, responseObjectMock, errorMock, adapterMock); // then verify(implSpy).putTagIfValueIsNotBlank(spanMock, WingtipsTags.SPAN_HANDLER, adapterSpanHandlerTagValue); verify(spanMock).putTag(WingtipsTags.SPAN_HANDLER, adapterSpanHandlerTagValue); verifyNoMoreInteractions(spanMock); }
@DataProvider(value = { "null", "", "[whitespace]" }, splitBy = "\\|") @Test public void doExtraWingtipsTagging_does_NOT_add_SPAN_HANDLER_tag_if_adapter_getSpanHandlerTagValue_IS_blank( String blankAdapterResult ) { // given if ("[whitespace]".equals(blankAdapterResult)) { blankAdapterResult = " \n\r\t "; } doReturn(blankAdapterResult).when(adapterMock).getSpanHandlerTagValue(anyObject(), anyObject()); // when implSpy.doExtraWingtipsTagging(spanMock, requestObjectMock, responseObjectMock, errorMock, adapterMock); // then verify(implSpy).putTagIfValueIsNotBlank(spanMock, WingtipsTags.SPAN_HANDLER, blankAdapterResult); verifyZeroInteractions(spanMock); }