From c076cccfa0d0fddeb1f73ea43ce5d40e67dc8eb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=93=88=E5=B8=8C?= Date: Thu, 30 Apr 2020 01:58:59 +0000 Subject: [PATCH 1/2] replace method for deprecation and keep reference of requestTemplate --- .../sleuth/instrument/web/client/feign/TracingFeignClient.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TracingFeignClient.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TracingFeignClient.java index ac6d69442..601d487ca 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TracingFeignClient.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TracingFeignClient.java @@ -173,11 +173,10 @@ final class TracingFeignClient implements Client { if (headers == null) { return delegate; } - String method = delegate.method(); String url = delegate.url(); byte[] body = delegate.body(); Charset charset = delegate.charset(); - return Request.create(method, url, headers, body, charset); + return Request.create(delegate.httpMethod(), url, headers, body, charset, delegate.requestTemplate()); } } From 00ca6ad1000e5ea4de41367258c810d89b1cead6 Mon Sep 17 00:00:00 2001 From: zhanghaoxin-at-826767166263 Date: Thu, 7 May 2020 08:19:50 +0000 Subject: [PATCH 2/2] add unit test for saved template --- .../client/feign/TracingFeignClientTests.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TracingFeignClientTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TracingFeignClientTests.java index 8742bdce8..fe0c8da9c 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TracingFeignClientTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TracingFeignClientTests.java @@ -28,24 +28,31 @@ import brave.http.HttpTracing; import brave.propagation.StrictCurrentTraceContext; import feign.Client; import feign.Request; +import feign.RequestTemplate; import org.assertj.core.api.BDDAssertions; +import org.junit.Assert; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.BDDMockito; import org.mockito.Mock; +import org.mockito.invocation.InvocationOnMock; import org.mockito.junit.jupiter.MockitoExtension; +import org.mockito.stubbing.Answer; import static org.assertj.core.api.BDDAssertions.then; /** * @author Marcin Grzejszczak + * @author Hash.Jang */ @ExtendWith(MockitoExtension.class) public class TracingFeignClientTests { - Request request = Request.create("GET", "https://foo", new HashMap<>(), null, null); + RequestTemplate requestTemplate = new RequestTemplate(); + + Request request = Request.create(Request.HttpMethod.GET, "https://foo", new HashMap<>(), null, null, requestTemplate); Request.Options options = new Request.Options(); @@ -112,4 +119,16 @@ public class TracingFeignClientTests { then(this.spans.get(0).tags()).containsEntry("error", "exception has occurred"); } + @Test + public void keep_requestTemplate() throws IOException { + BDDMockito.given(this.client.execute(BDDMockito.any(), BDDMockito.any())).willAnswer(new Answer() { + public Object answer(InvocationOnMock invocation) { + Object[] args = invocation.getArguments(); + Assert.assertEquals(((Request) args[0]).requestTemplate(), requestTemplate); + return null; + } + }); + this.traceFeignClient.execute(this.request, this.options); + } + }