@Before public void beforeMethod() { initialSpanNameFromStrategy = new AtomicReference<>("span-name-from-strategy-" + UUID.randomUUID().toString()); strategyInitialSpanNameMethodCalled = new AtomicBoolean(false); strategyRequestTaggingMethodCalled = new AtomicBoolean(false); strategyResponseTaggingAndFinalSpanNameMethodCalled = new AtomicBoolean(false); strategyInitialSpanNameArgs = new AtomicReference<>(null); strategyRequestTaggingArgs = new AtomicReference<>(null); strategyResponseTaggingArgs = new AtomicReference<>(null); wingtipsStrategy = new ArgCapturingHttpTagAndSpanNamingStrategy<>( initialSpanNameFromStrategy, strategyInitialSpanNameMethodCalled, strategyRequestTaggingMethodCalled, strategyResponseTaggingAndFinalSpanNameMethodCalled, strategyInitialSpanNameArgs, strategyRequestTaggingArgs, strategyResponseTaggingArgs ); wingtipsAdapterMock = mock(HttpTagAndSpanNamingAdapter.class); impl = new DefaultAsyncHttpClientHelperSpanNamingAndTaggingStrategy(wingtipsStrategy, wingtipsAdapterMock); requestMock = mock(RequestBuilderWrapper.class); responseMock = mock(Response.class); errorMock = mock(Throwable.class); spanMock = mock(Span.class); }
@Test public void doGetInitialSpanName_delegates_to_wingtips_strategy() { // when String result = impl.doGetInitialSpanName(requestMock); // then assertThat(result).isEqualTo(initialSpanNameFromStrategy.get()); strategyInitialSpanNameArgs.get().verifyArgs(requestMock, wingtipsAdapterMock); }
@Test public void doHandleRequestTagging_delegates_to_wingtips_strategy() { // when impl.doHandleRequestTagging(spanMock, requestMock); // then strategyRequestTaggingArgs.get().verifyArgs(spanMock, requestMock, wingtipsAdapterMock); }
); wingtipsTagAndNamingAdapterMock = mock(HttpTagAndSpanNamingAdapter.class); tagAndNamingStrategy = new DefaultAsyncHttpClientHelperSpanNamingAndTaggingStrategy( wingtipsTagAndNamingStrategy, wingtipsTagAndNamingAdapterMock ); DefaultAsyncHttpClientHelperSpanNamingAndTaggingStrategy.getDefaultInstance() );
@Test public void doHandleResponseTaggingAndFinalSpanName_delegates_to_wingtips_strategy() { // when impl.doHandleResponseTaggingAndFinalSpanName(spanMock, requestMock, responseMock, errorMock); // then strategyResponseTaggingArgs.get().verifyArgs( spanMock, requestMock, responseMock, errorMock, wingtipsAdapterMock ); } }
@DataProvider(value = { "null | false", " | false", "[whitespace] | false", "fooNewName | true" }, splitBy = "\\|") @Test public void doChangeSpanName_changes_span_name_as_expected(String newName, boolean expectNameToBeChanged) { // given if ("[whitespace]".equals(newName)) { newName = " \r\n\t "; } String initialSpanName = UUID.randomUUID().toString(); Span span = Span.newBuilder(initialSpanName, Span.SpanPurpose.CLIENT).build(); String expectedSpanName = (expectNameToBeChanged) ? newName : initialSpanName; // when impl.doChangeSpanName(span, newName); // then assertThat(span.getSpanName()).isEqualTo(expectedSpanName); }
@Test public void getDefaultInstance_returns_DEFAULT_INSTANCE() { // when DefaultAsyncHttpClientHelperSpanNamingAndTaggingStrategy instance = DefaultAsyncHttpClientHelperSpanNamingAndTaggingStrategy.getDefaultInstance(); // then assertThat(instance) .isSameAs(DefaultAsyncHttpClientHelperSpanNamingAndTaggingStrategy.DEFAULT_INSTANCE); assertThat(instance.tagAndNamingStrategy).isSameAs(ZipkinHttpTagStrategy.getDefaultInstance()); assertThat(instance.tagAndNamingAdapter).isSameAs(AsyncHttpClientHelperTagAdapter.getDefaultInstance()); }
@Test public void alternate_constructor_creates_instance_using_specified_wingtips_strategy_and_adapter() { // given HttpTagAndSpanNamingStrategy<RequestBuilderWrapper, Response> wingtipsStrategyMock = mock(HttpTagAndSpanNamingStrategy.class); HttpTagAndSpanNamingAdapter<RequestBuilderWrapper, Response> wingtipsAdapterMock = mock(HttpTagAndSpanNamingAdapter.class); // when DefaultAsyncHttpClientHelperSpanNamingAndTaggingStrategy instance = new DefaultAsyncHttpClientHelperSpanNamingAndTaggingStrategy(wingtipsStrategyMock, wingtipsAdapterMock); // then assertThat(instance.tagAndNamingStrategy).isSameAs(wingtipsStrategyMock); assertThat(instance.tagAndNamingAdapter).isSameAs(wingtipsAdapterMock); }
@DataProvider(value = { "NULL_WINGTIPS_STRATEGY", "NULL_WINGTIPS_ADAPTER" }) @Test public void alternate_constructor_throws_IllegalArgumentException_if_passed_null_args( NullArgsScenario scenario ) { // when Throwable ex = catchThrowable( () -> new DefaultAsyncHttpClientHelperSpanNamingAndTaggingStrategy( scenario.wingtipsStrategy, scenario.wingtipsAdapter ) ); // then assertThat(ex) .isInstanceOf(IllegalArgumentException.class) .hasMessage(scenario.expectedExceptionMessage); }
@Test public void default_constructor_creates_instance_using_default_ZipkinHttpTagStrategy_and_AsyncHttpClientHelperTagAdapter() { // when DefaultAsyncHttpClientHelperSpanNamingAndTaggingStrategy instance = new DefaultAsyncHttpClientHelperSpanNamingAndTaggingStrategy(); // then assertThat(instance.tagAndNamingStrategy).isSameAs(ZipkinHttpTagStrategy.getDefaultInstance()); assertThat(instance.tagAndNamingAdapter).isSameAs(AsyncHttpClientHelperTagAdapter.getDefaultInstance()); }
); wingtipsTagAndNamingAdapterMock = mock(HttpTagAndSpanNamingAdapter.class); tagAndNamingStrategy = new DefaultAsyncHttpClientHelperSpanNamingAndTaggingStrategy( wingtipsTagAndNamingStrategy, wingtipsTagAndNamingAdapterMock );