Merge remote-tracking branch 'origin/2.2.x'

# Conflicts:
#	spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TracingFeignObjectWrapperTests.java
This commit is contained in:
Olga Maciaszek-Sharma
2020-10-28 14:31:57 +01:00
2 changed files with 46 additions and 6 deletions

View File

@@ -27,16 +27,19 @@ import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.cloud.client.loadbalancer.LoadBalancedRetryFactory;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.cloud.client.loadbalancer.reactive.LoadBalancerProperties;
import org.springframework.cloud.loadbalancer.blocking.client.BlockingLoadBalancerClient;
import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory;
import org.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalancerClient;
import org.springframework.cloud.openfeign.loadbalancer.RetryableFeignBlockingLoadBalancerClient;
import static org.mockito.Mockito.mock;
/**
* @author Marcin Grzejszczak
* @author Olga Maciaszek-Sharma
*/
@ExtendWith(MockitoExtension.class)
public class TracingFeignObjectWrapperTests {
@@ -73,6 +76,21 @@ public class TracingFeignObjectWrapperTests {
Assertions.assertThat(wrapped).isInstanceOf(TraceFeignBlockingLoadBalancerClient.class);
}
// gh-1528
@Test
public void should_wrap_feign_retryable_loadbalancer_client() {
Client delegate = mock(Client.class);
BlockingLoadBalancerClient loadBalancerClient = mock(BlockingLoadBalancerClient.class);
LoadBalancerClientFactory loadBalancerClientFactory = mock(LoadBalancerClientFactory.class);
LoadBalancedRetryFactory retryFactory = mock(LoadBalancedRetryFactory.class);
Mockito.when(beanFactory.getBean(LoadBalancerClient.class)).thenReturn(loadBalancerClient);
Object wrapped = traceFeignObjectWrapper.wrap(new RetryableFeignBlockingLoadBalancerClient(delegate,
loadBalancerClient, retryFactory, new LoadBalancerProperties(), loadBalancerClientFactory));
Assertions.assertThat(wrapped).isInstanceOf(TraceRetryableFeignBlockingLoadBalancerClient.class);
}
// gh-1528, gh-1125
@Test
public void should_wrap_subclass_of_feign_loadbalancer_client() {
@@ -81,12 +99,29 @@ public class TracingFeignObjectWrapperTests {
LoadBalancerClientFactory loadBalancerClientFactory = mock(LoadBalancerClientFactory.class);
Mockito.when(beanFactory.getBean(LoadBalancerClient.class)).thenReturn(loadBalancerClient);
Object wrapped = traceFeignObjectWrapper
.wrap(new TestFeignBlockingLoadBalancerClient(delegate, loadBalancerClient, loadBalancerClientFactory));
Object wrapped = traceFeignObjectWrapper.wrap(
new org.springframework.cloud.sleuth.instrument.web.client.feign.TracingFeignObjectWrapperTests.TestFeignBlockingLoadBalancerClient(
delegate, loadBalancerClient, loadBalancerClientFactory));
Assertions.assertThat(wrapped).isInstanceOf(TraceFeignBlockingLoadBalancerClient.class);
}
// gh-1528, gh-1125
@Test
public void should_wrap_subclass_of_retryable_feign_loadbalancer_client() {
Client delegate = mock(Client.class);
BlockingLoadBalancerClient loadBalancerClient = mock(BlockingLoadBalancerClient.class);
LoadBalancerClientFactory loadBalancerClientFactory = mock(LoadBalancerClientFactory.class);
LoadBalancedRetryFactory retryFactory = mock(LoadBalancedRetryFactory.class);
Mockito.when(beanFactory.getBean(LoadBalancerClient.class)).thenReturn(loadBalancerClient);
Object wrapped = traceFeignObjectWrapper.wrap(
new org.springframework.cloud.sleuth.instrument.web.client.feign.TracingFeignObjectWrapperTests.TestRetryableFeignBlockingLoadBalancerClient(
delegate, loadBalancerClient, retryFactory, loadBalancerClientFactory));
Assertions.assertThat(wrapped).isInstanceOf(TraceRetryableFeignBlockingLoadBalancerClient.class);
}
static class TestFeignBlockingLoadBalancerClient extends FeignBlockingLoadBalancerClient {
TestFeignBlockingLoadBalancerClient(Client delegate, BlockingLoadBalancerClient loadBalancerClient,
@@ -96,4 +131,13 @@ public class TracingFeignObjectWrapperTests {
}
static class TestRetryableFeignBlockingLoadBalancerClient extends RetryableFeignBlockingLoadBalancerClient {
TestRetryableFeignBlockingLoadBalancerClient(Client delegate, BlockingLoadBalancerClient loadBalancerClient,
LoadBalancedRetryFactory retryFactory, LoadBalancerClientFactory loadBalancerClientFactory) {
super(delegate, loadBalancerClient, retryFactory, new LoadBalancerProperties(), loadBalancerClientFactory);
}
}
}

View File

@@ -160,10 +160,6 @@ class MyDelegateClient implements Client {
.headers(new HashMap<>()).status(200).build();
}
boolean wasCalled() {
return wasCalled;
}
}
@FeignClient(name = "foo", url = "http://foo")