From 2ebfc0b2f423a935ea8e912d30db146ae59ece73 Mon Sep 17 00:00:00 2001 From: Haotian Zhang <928016560@qq.com> Date: Fri, 12 Dec 2025 14:44:19 +0800 Subject: [PATCH] feat:support body store switch. Signed-off-by: Haotian Zhang <928016560@qq.com> --- CHANGELOG.md | 1 + ...ngLoadBalancerClientBeanPostProcessor.java | 4 +- .../RpcEnhancementAutoConfiguration.java | 4 +- .../config/RpcEnhancementProperties.java | 55 +++++++++++++++++ ...nhancementPropertiesAutoConfiguration.java | 6 ++ .../RpcEnhancementReporterProperties.java | 2 +- .../feign/EnhancedFeignBeanPostProcessor.java | 8 ++- .../instrument/feign/EnhancedFeignClient.java | 8 ++- ...BlockingLoadBalancerClientInterceptor.java | 9 ++- .../PolarisBlockingLoadBalancerClient.java | 11 ++-- .../config/RpcEnhancementPropertiesTest.java | 60 +++++++++++++++++++ .../EnhancedFeignBeanPostProcessorTest.java | 6 +- .../feign/EnhancedFeignClientTest.java | 17 ++++-- 13 files changed, 170 insertions(+), 21 deletions(-) create mode 100644 spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementProperties.java create mode 100644 spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementPropertiesTest.java diff --git a/CHANGELOG.md b/CHANGELOG.md index fb76e01fe..3a99743b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,3 +34,4 @@ - [fix: fix nacos service discovery. ](https://github.com/Tencent/spring-cloud-tencent/pull/1751) - [fix:fix NPE when rate-limiting with null value.](https://github.com/Tencent/spring-cloud-tencent/pull/1764) - [fix: get source service name from upstream application meta in getServerPreSpanAttributes & set custom tag in current server span in tsf.](https://github.com/Tencent/spring-cloud-tencent/pull/1767) +- [feat:support body store switch.](https://github.com/Tencent/spring-cloud-tencent/pull/1771) diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/beanprocessor/BlockingLoadBalancerClientBeanPostProcessor.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/beanprocessor/BlockingLoadBalancerClientBeanPostProcessor.java index f48144b22..a0fab8185 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/beanprocessor/BlockingLoadBalancerClientBeanPostProcessor.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/beanprocessor/BlockingLoadBalancerClientBeanPostProcessor.java @@ -17,6 +17,7 @@ package com.tencent.cloud.rpc.enhancement.beanprocessor; +import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementProperties; import com.tencent.cloud.rpc.enhancement.instrument.resttemplate.PolarisBlockingLoadBalancerClient; import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginRunner; @@ -54,7 +55,8 @@ public class BlockingLoadBalancerClientBeanPostProcessor implements BeanPostProc BlockingLoadBalancerClient delegate = (BlockingLoadBalancerClient) bean; ReactiveLoadBalancer.Factory requestFactory = this.factory.getBean(ReactiveLoadBalancer.Factory.class); EnhancedPluginRunner pluginRunner = this.factory.getBean(EnhancedPluginRunner.class); - return new PolarisBlockingLoadBalancerClient(requestFactory, delegate, pluginRunner); + RpcEnhancementProperties rpcEnhancementProperties = this.factory.getBean(RpcEnhancementProperties.class); + return new PolarisBlockingLoadBalancerClient(requestFactory, delegate, pluginRunner, rpcEnhancementProperties); } return bean; } diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementAutoConfiguration.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementAutoConfiguration.java index 6461cfba3..5cce847f3 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementAutoConfiguration.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementAutoConfiguration.java @@ -164,8 +164,8 @@ public class RpcEnhancementAutoConfiguration { protected static class PolarisFeignClientAutoConfiguration { @Bean - public EnhancedFeignBeanPostProcessor polarisFeignBeanPostProcessor(@Lazy EnhancedPluginRunner pluginRunner) { - return new EnhancedFeignBeanPostProcessor(pluginRunner); + public EnhancedFeignBeanPostProcessor polarisFeignBeanPostProcessor(@Lazy EnhancedPluginRunner pluginRunner, RpcEnhancementProperties rpcEnhancementProperties) { + return new EnhancedFeignBeanPostProcessor(pluginRunner, rpcEnhancementProperties); } @Bean diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementProperties.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementProperties.java new file mode 100644 index 000000000..22bf27cb0 --- /dev/null +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementProperties.java @@ -0,0 +1,55 @@ +/* + * Tencent is pleased to support the open source community by making spring-cloud-tencent available. + * + * Copyright (C) 2021 Tencent. All rights reserved. + * + * Licensed under the BSD 3-Clause License (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://opensource.org/licenses/BSD-3-Clause + * + * 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 com.tencent.cloud.rpc.enhancement.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * Properties of RPC enhancement. + * + * @author Haotian Zhang + */ +@ConfigurationProperties("spring.cloud.tencent.rpc-enhancement") +public class RpcEnhancementProperties { + + /** + * Whether report call result to polaris. + */ + private boolean enabled = true; + + /** + * Whether to ignore the body of the request. + */ + private boolean ignoreBody = true; + + public boolean isEnabled() { + return enabled; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + public boolean isIgnoreBody() { + return ignoreBody; + } + + public void setIgnoreBody(boolean ignoreBody) { + this.ignoreBody = ignoreBody; + } +} diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementPropertiesAutoConfiguration.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementPropertiesAutoConfiguration.java index 1f33f81f8..3ff720884 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementPropertiesAutoConfiguration.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementPropertiesAutoConfiguration.java @@ -34,6 +34,12 @@ import org.springframework.web.client.RestTemplate; @ConditionalOnPolarisEnabled public class RpcEnhancementPropertiesAutoConfiguration { + @Bean + @ConditionalOnMissingBean + public RpcEnhancementProperties rpcEnhancementProperties() { + return new RpcEnhancementProperties(); + } + @Bean @ConditionalOnMissingBean public RpcEnhancementReporterProperties rpcEnhancementReporterProperties() { diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementReporterProperties.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementReporterProperties.java index 94a20e4b8..b4439aadf 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementReporterProperties.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementReporterProperties.java @@ -25,7 +25,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.http.HttpStatus; /** - * Properties of Polaris CircuitBreaker . + * Properties of RPC enhancement reporter. * * @author Elve.Xu 2022-07-08 */ diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/instrument/feign/EnhancedFeignBeanPostProcessor.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/instrument/feign/EnhancedFeignBeanPostProcessor.java index a888de25e..33eb7b541 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/instrument/feign/EnhancedFeignBeanPostProcessor.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/instrument/feign/EnhancedFeignBeanPostProcessor.java @@ -17,6 +17,7 @@ package com.tencent.cloud.rpc.enhancement.instrument.feign; +import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementProperties; import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginRunner; import feign.Client; @@ -41,10 +42,13 @@ public class EnhancedFeignBeanPostProcessor implements BeanPostProcessor, BeanFa private final EnhancedPluginRunner pluginRunner; + private final RpcEnhancementProperties rpcEnhancementProperties; + private BeanFactory factory; - public EnhancedFeignBeanPostProcessor(EnhancedPluginRunner pluginRunner) { + public EnhancedFeignBeanPostProcessor(EnhancedPluginRunner pluginRunner, RpcEnhancementProperties rpcEnhancementProperties) { this.pluginRunner = pluginRunner; + this.rpcEnhancementProperties = rpcEnhancementProperties; } @Override @@ -85,7 +89,7 @@ public class EnhancedFeignBeanPostProcessor implements BeanPostProcessor, BeanFa } private EnhancedFeignClient createPolarisFeignClient(Client delegate) { - return new EnhancedFeignClient(delegate, pluginRunner); + return new EnhancedFeignClient(delegate, pluginRunner, rpcEnhancementProperties); } @Override diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/instrument/feign/EnhancedFeignClient.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/instrument/feign/EnhancedFeignClient.java index 23fd882cb..432be80de 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/instrument/feign/EnhancedFeignClient.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/instrument/feign/EnhancedFeignClient.java @@ -29,6 +29,7 @@ import java.util.Map; import com.tencent.cloud.common.constant.MetadataConstant; import com.tencent.cloud.common.metadata.MetadataContext; import com.tencent.cloud.common.metadata.MetadataContextHolder; +import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementProperties; import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginContext; import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginRunner; import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginType; @@ -61,9 +62,12 @@ public class EnhancedFeignClient implements Client { private final EnhancedPluginRunner pluginRunner; - public EnhancedFeignClient(Client target, EnhancedPluginRunner pluginRunner) { + private final RpcEnhancementProperties rpcEnhancementProperties; + + public EnhancedFeignClient(Client target, EnhancedPluginRunner pluginRunner, RpcEnhancementProperties rpcEnhancementProperties) { this.delegate = checkNotNull(target, "target"); this.pluginRunner = pluginRunner; + this.rpcEnhancementProperties = rpcEnhancementProperties; } @Override @@ -88,7 +92,7 @@ public class EnhancedFeignClient implements Client { .build(); enhancedPluginContext.setRequest(enhancedRequestContext); enhancedPluginContext.setOriginRequest(request); - if (request.body() != null) { + if (request.body() != null && !rpcEnhancementProperties.isIgnoreBody()) { enhancedPluginContext.setOriginBody(request.body()); } diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/instrument/resttemplate/EnhancedRestTemplateBlockingLoadBalancerClientInterceptor.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/instrument/resttemplate/EnhancedRestTemplateBlockingLoadBalancerClientInterceptor.java index 8f7739504..90e16a60a 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/instrument/resttemplate/EnhancedRestTemplateBlockingLoadBalancerClientInterceptor.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/instrument/resttemplate/EnhancedRestTemplateBlockingLoadBalancerClientInterceptor.java @@ -25,6 +25,7 @@ import com.tencent.cloud.common.constant.ContextConstant; import com.tencent.cloud.common.constant.MetadataConstant; import com.tencent.cloud.common.metadata.MetadataContext; import com.tencent.cloud.common.metadata.MetadataContextHolder; +import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementProperties; import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginContext; import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginRunner; import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginType; @@ -56,9 +57,13 @@ public class EnhancedRestTemplateBlockingLoadBalancerClientInterceptor { private final LoadBalancerClient delegate; - public EnhancedRestTemplateBlockingLoadBalancerClientInterceptor(EnhancedPluginRunner pluginRunner, LoadBalancerClient delegate) { + private final RpcEnhancementProperties rpcEnhancementProperties; + + public EnhancedRestTemplateBlockingLoadBalancerClientInterceptor(EnhancedPluginRunner pluginRunner, + LoadBalancerClient delegate, RpcEnhancementProperties rpcEnhancementProperties) { this.pluginRunner = pluginRunner; this.delegate = delegate; + this.rpcEnhancementProperties = rpcEnhancementProperties; } @@ -84,7 +89,7 @@ public class EnhancedRestTemplateBlockingLoadBalancerClientInterceptor { .build(); enhancedPluginContext.setRequest(enhancedRequestContext); enhancedPluginContext.setOriginRequest(httpRequest); - if (body != null) { + if (body != null && !rpcEnhancementProperties.isIgnoreBody()) { enhancedPluginContext.setOriginBody(body); } diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/instrument/resttemplate/PolarisBlockingLoadBalancerClient.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/instrument/resttemplate/PolarisBlockingLoadBalancerClient.java index 226e68eb0..12304079e 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/instrument/resttemplate/PolarisBlockingLoadBalancerClient.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/instrument/resttemplate/PolarisBlockingLoadBalancerClient.java @@ -19,6 +19,7 @@ package com.tencent.cloud.rpc.enhancement.instrument.resttemplate; import java.io.IOException; +import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementProperties; import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginRunner; import org.springframework.cloud.client.ServiceInstance; @@ -36,13 +37,15 @@ import org.springframework.http.HttpRequest; public class PolarisBlockingLoadBalancerClient extends BlockingLoadBalancerClient { private final EnhancedPluginRunner enhancedPluginRunner; - private BlockingLoadBalancerClient delegate; + private final BlockingLoadBalancerClient delegate; + private final RpcEnhancementProperties rpcEnhancementProperties; public PolarisBlockingLoadBalancerClient(ReactiveLoadBalancer.Factory loadBalancerClientFactory, - BlockingLoadBalancerClient delegate, EnhancedPluginRunner enhancedPluginRunner) { + BlockingLoadBalancerClient delegate, EnhancedPluginRunner enhancedPluginRunner, RpcEnhancementProperties rpcEnhancementProperties) { super(loadBalancerClientFactory); this.delegate = delegate; this.enhancedPluginRunner = enhancedPluginRunner; + this.rpcEnhancementProperties = rpcEnhancementProperties; } /** @@ -55,7 +58,7 @@ public class PolarisBlockingLoadBalancerClient extends BlockingLoadBalancerClien return delegate.execute(serviceId, request); } byte[] body = LoadBalancerUtils.getHttpBodyIfAvailable(request); - EnhancedRestTemplateBlockingLoadBalancerClientInterceptor enhancedRestTemplateBlockingLoadBalancerClientInterceptor = new EnhancedRestTemplateBlockingLoadBalancerClientInterceptor(enhancedPluginRunner, delegate); + EnhancedRestTemplateBlockingLoadBalancerClientInterceptor enhancedRestTemplateBlockingLoadBalancerClientInterceptor = new EnhancedRestTemplateBlockingLoadBalancerClientInterceptor(enhancedPluginRunner, delegate, rpcEnhancementProperties); return enhancedRestTemplateBlockingLoadBalancerClientInterceptor.intercept(httpRequest, body, serviceId, null, request); } @@ -69,7 +72,7 @@ public class PolarisBlockingLoadBalancerClient extends BlockingLoadBalancerClien return delegate.execute(serviceId, serviceInstance, request); } byte[] body = LoadBalancerUtils.getHttpBodyIfAvailable(request); - EnhancedRestTemplateBlockingLoadBalancerClientInterceptor enhancedRestTemplateBlockingLoadBalancerClientInterceptor = new EnhancedRestTemplateBlockingLoadBalancerClientInterceptor(enhancedPluginRunner, delegate); + EnhancedRestTemplateBlockingLoadBalancerClientInterceptor enhancedRestTemplateBlockingLoadBalancerClientInterceptor = new EnhancedRestTemplateBlockingLoadBalancerClientInterceptor(enhancedPluginRunner, delegate, rpcEnhancementProperties); return enhancedRestTemplateBlockingLoadBalancerClientInterceptor.intercept(httpRequest, body, serviceId, serviceInstance, request); } } diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementPropertiesTest.java b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementPropertiesTest.java new file mode 100644 index 000000000..cafd558bf --- /dev/null +++ b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementPropertiesTest.java @@ -0,0 +1,60 @@ +/* + * Tencent is pleased to support the open source community by making spring-cloud-tencent available. + * + * Copyright (C) 2021 Tencent. All rights reserved. + * + * Licensed under the BSD 3-Clause License (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://opensource.org/licenses/BSD-3-Clause + * + * 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 com.tencent.cloud.rpc.enhancement.config; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Test For {@link RpcEnhancementProperties}. + * + * @author Haotian Zhang + */ +@ExtendWith(SpringExtension.class) +@SpringBootTest(classes = RpcEnhancementPropertiesTest.TestApplication.class, properties = { + "spring.application.name=test", + "spring.cloud.gateway.enabled=false", + "spring.cloud.tencent.rpc-enhancement=true", + "spring.cloud.tencent.rpc-enhancement.ignore-body=false" +}) +@ActiveProfiles("test") +public class RpcEnhancementPropertiesTest { + + @Autowired + private RpcEnhancementProperties rpcEnhancementProperties; + + @Test + public void testDefaultInitialization() { + assertThat(rpcEnhancementProperties).isNotNull(); + assertThat(rpcEnhancementProperties.isEnabled()).isTrue(); + assertThat(rpcEnhancementProperties.isIgnoreBody()).isFalse(); + } + + @SpringBootApplication + protected static class TestApplication { + + } +} diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/instrument/feign/EnhancedFeignBeanPostProcessorTest.java b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/instrument/feign/EnhancedFeignBeanPostProcessorTest.java index 5e9655f57..d3e1239fb 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/instrument/feign/EnhancedFeignBeanPostProcessorTest.java +++ b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/instrument/feign/EnhancedFeignBeanPostProcessorTest.java @@ -17,6 +17,7 @@ package com.tencent.cloud.rpc.enhancement.instrument.feign; +import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementProperties; import feign.Client; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -46,7 +47,7 @@ public class EnhancedFeignBeanPostProcessorTest { @BeforeEach void setUp() { - enhancedFeignBeanPostProcessor = new EnhancedFeignBeanPostProcessor(null); + enhancedFeignBeanPostProcessor = new EnhancedFeignBeanPostProcessor(null, null); } @Test @@ -63,6 +64,9 @@ public class EnhancedFeignBeanPostProcessorTest { if (clazz.equals(LoadBalancerClientFactory.class)) { return mock(LoadBalancerClientFactory.class); } + if (RpcEnhancementProperties.class.equals(clazz)) { + return mock(RpcEnhancementProperties.class); + } return null; }).when(beanFactory).getBean(any(Class.class)); ObjectProvider objectProvider = mock(ObjectProvider.class); diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/instrument/feign/EnhancedFeignClientTest.java b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/instrument/feign/EnhancedFeignClientTest.java index fffa2f732..eec56a45c 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/instrument/feign/EnhancedFeignClientTest.java +++ b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/instrument/feign/EnhancedFeignClientTest.java @@ -25,6 +25,7 @@ import java.util.HashMap; import java.util.List; import com.tencent.cloud.polaris.context.PolarisSDKContextManager; +import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementProperties; import com.tencent.cloud.rpc.enhancement.plugin.DefaultEnhancedPluginRunner; import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPlugin; import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginContext; @@ -67,7 +68,7 @@ public class EnhancedFeignClientTest { @Test public void testConstructor() { try { - new EnhancedFeignClient(null, null); + new EnhancedFeignClient(null, null, null); fail("NullPointerException should be thrown."); } catch (Throwable e) { @@ -76,7 +77,7 @@ public class EnhancedFeignClientTest { } try { - new EnhancedFeignClient(mock(Client.class), null); + new EnhancedFeignClient(mock(Client.class), null, null); } catch (Throwable e) { fail("Exception encountered.", e); @@ -85,7 +86,8 @@ public class EnhancedFeignClientTest { List enhancedPlugins = getMockEnhancedFeignPlugins(); try { new EnhancedFeignClient(mock(Client.class), - new DefaultEnhancedPluginRunner(enhancedPlugins, new ArrayList<>(), polarisSDKContextManager.getSDKContext())); + new DefaultEnhancedPluginRunner(enhancedPlugins, new ArrayList<>(), polarisSDKContextManager.getSDKContext()), + new RpcEnhancementProperties()); } catch (Throwable e) { fail("Exception encountered.", e); @@ -115,7 +117,8 @@ public class EnhancedFeignClientTest { requestTemplate.feignTarget(target); EnhancedFeignClient polarisFeignClient = new EnhancedFeignClient(delegate, - new DefaultEnhancedPluginRunner(getMockEnhancedFeignPlugins(), new ArrayList<>(), polarisSDKContextManager.getSDKContext())); + new DefaultEnhancedPluginRunner(getMockEnhancedFeignPlugins(), new ArrayList<>(), polarisSDKContextManager.getSDKContext()), + new RpcEnhancementProperties()); // 200 Response response = polarisFeignClient.execute(Request.create(Request.HttpMethod.GET, "http://localhost:8080/test", @@ -162,7 +165,8 @@ public class EnhancedFeignClientTest { requestTemplate.feignTarget(target); EnhancedFeignClient polarisFeignClient = new EnhancedFeignClient(delegate, - new DefaultEnhancedPluginRunner(getMockCallAbortedExceptionEnhancedFeignPlugins(null), new ArrayList<>(), polarisSDKContextManager.getSDKContext())); + new DefaultEnhancedPluginRunner(getMockCallAbortedExceptionEnhancedFeignPlugins(null), new ArrayList<>(), polarisSDKContextManager.getSDKContext()), + new RpcEnhancementProperties()); // Exception try { @@ -177,7 +181,8 @@ public class EnhancedFeignClientTest { polarisFeignClient = new EnhancedFeignClient(delegate, new DefaultEnhancedPluginRunner(getMockCallAbortedExceptionEnhancedFeignPlugins( - new CircuitBreakerStatus.FallbackInfo(200, new HashMap<>(), "mock ok")), new ArrayList<>(), polarisSDKContextManager.getSDKContext())); + new CircuitBreakerStatus.FallbackInfo(200, new HashMap<>(), "mock ok")), new ArrayList<>(), polarisSDKContextManager.getSDKContext()), + new RpcEnhancementProperties()); // fallback 200 Response response = polarisFeignClient.execute(Request.create(Request.HttpMethod.GET, "http://localhost:8080/test",