4 changed files with 152 additions and 6 deletions
@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
|
||||
/* |
||||
* Copyright 2012-2022 the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.boot.actuate.autoconfigure.tracing.zipkin; |
||||
|
||||
import org.springframework.boot.web.client.RestTemplateBuilder; |
||||
|
||||
/** |
||||
* Callback interface that can be implemented by beans wishing to customize the |
||||
* {@link RestTemplateBuilder} used to send spans to Zipkin. |
||||
* |
||||
* @author Marcin Grzejszczak |
||||
* @since 3.0.0 |
||||
*/ |
||||
@FunctionalInterface |
||||
public interface ZipkinRestTemplateBuilderCustomizer { |
||||
|
||||
/** |
||||
* Customize the rest template builder. |
||||
* @param restTemplateBuilder the {@code RestTemplateBuilder} to customize |
||||
*/ |
||||
void customize(RestTemplateBuilder restTemplateBuilder); |
||||
|
||||
} |
||||
@ -0,0 +1,38 @@
@@ -0,0 +1,38 @@
|
||||
/* |
||||
* Copyright 2012-2022 the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.boot.actuate.autoconfigure.tracing.zipkin; |
||||
|
||||
import org.springframework.web.reactive.function.client.WebClient; |
||||
import org.springframework.web.reactive.function.client.WebClient.Builder; |
||||
|
||||
/** |
||||
* Callback interface that can be implemented by beans wishing to customize the |
||||
* {@link Builder} used to send spans to Zipkin. |
||||
* |
||||
* @author Marcin Grzejszczak |
||||
* @since 3.0.0 |
||||
*/ |
||||
@FunctionalInterface |
||||
public interface ZipkinWebClientBuilderCustomizer { |
||||
|
||||
/** |
||||
* Customize the web client builder. |
||||
* @param webClientBuilder the {@code WebClient.Builder} to customize |
||||
*/ |
||||
void customize(WebClient.Builder webClientBuilder); |
||||
|
||||
} |
||||
@ -0,0 +1,72 @@
@@ -0,0 +1,72 @@
|
||||
/* |
||||
* Copyright 2012-2022 the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.boot.actuate.autoconfigure.tracing.zipkin; |
||||
|
||||
import org.junit.jupiter.api.Test; |
||||
import zipkin2.reporter.urlconnection.URLConnectionSender; |
||||
|
||||
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration; |
||||
import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration; |
||||
import org.springframework.boot.actuate.autoconfigure.metrics.web.client.HttpClientMetricsAutoConfiguration; |
||||
import org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration; |
||||
import org.springframework.boot.actuate.autoconfigure.tracing.BraveAutoConfiguration; |
||||
import org.springframework.boot.actuate.autoconfigure.tracing.MicrometerTracingAutoConfiguration; |
||||
import org.springframework.boot.autoconfigure.AutoConfigurations; |
||||
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration; |
||||
import org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration; |
||||
import org.springframework.boot.test.context.FilteredClassLoader; |
||||
import org.springframework.boot.test.context.assertj.ApplicationContextAssertProvider; |
||||
import org.springframework.boot.test.context.runner.AbstractApplicationContextRunner; |
||||
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner; |
||||
import org.springframework.boot.test.context.runner.WebApplicationContextRunner; |
||||
import org.springframework.context.ConfigurableApplicationContext; |
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat; |
||||
|
||||
/** |
||||
* Integration tests for {@link ZipkinAutoConfiguration} and other related |
||||
* auto-configurations. |
||||
* |
||||
* @author Andy Wilkinson |
||||
*/ |
||||
class ZipkinAutoConfigurationIntegrationTests { |
||||
|
||||
@Test |
||||
void zipkinsUseOfRestTemplateDoesNotCauseACycle() { |
||||
configure(new WebApplicationContextRunner()) |
||||
.withConfiguration(AutoConfigurations.of(RestTemplateAutoConfiguration.class)) |
||||
.run((context) -> assertThat(context).hasNotFailed()); |
||||
} |
||||
|
||||
@Test |
||||
void zipkinsUseOfWebClientDoesNotCauseACycle() { |
||||
configure(new ReactiveWebApplicationContextRunner()) |
||||
.withConfiguration(AutoConfigurations.of(WebClientAutoConfiguration.class)) |
||||
.run((context) -> assertThat(context).hasNotFailed()); |
||||
} |
||||
|
||||
<SELF extends AbstractApplicationContextRunner<SELF, C, A>, C extends ConfigurableApplicationContext, A extends ApplicationContextAssertProvider<C>> AbstractApplicationContextRunner<SELF, C, A> configure( |
||||
AbstractApplicationContextRunner<SELF, ?, ?> runner) { |
||||
return runner |
||||
.withConfiguration(AutoConfigurations.of(MicrometerTracingAutoConfiguration.class, |
||||
ObservationAutoConfiguration.class, BraveAutoConfiguration.class, ZipkinAutoConfiguration.class, |
||||
HttpClientMetricsAutoConfiguration.class, MetricsAutoConfiguration.class, |
||||
SimpleMetricsExportAutoConfiguration.class)) |
||||
.withClassLoader(new FilteredClassLoader(URLConnectionSender.class)); |
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue