feat:support body store switch. (#1771)

Signed-off-by: Haotian Zhang <928016560@qq.com>
2021
Haotian Zhang 1 week ago
parent ad0f40f645
commit ffbe8749a5

@ -33,3 +33,4 @@
- [fix: fix nacos service discovery.](https://github.com/Tencent/spring-cloud-tencent/pull/1752) - [fix: fix nacos service discovery.](https://github.com/Tencent/spring-cloud-tencent/pull/1752)
- [fix:fix NPE when rate-limiting with null value.](https://github.com/Tencent/spring-cloud-tencent/pull/1763) - [fix:fix NPE when rate-limiting with null value.](https://github.com/Tencent/spring-cloud-tencent/pull/1763)
- [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) - [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)

@ -31,7 +31,7 @@ import org.springframework.context.annotation.Configuration;
* @author Haotian Zhang * @author Haotian Zhang
*/ */
@Configuration(proxyBeanMethods = false) @Configuration(proxyBeanMethods = false)
@ConditionalOnProperty(value = "spring.cloud.polaris.fault-injection.enabled", matchIfMissing = true) @ConditionalOnProperty("spring.cloud.polaris.fault-injection.enabled")
@EnableConfigurationProperties(FaultInjectionProperties.class) @EnableConfigurationProperties(FaultInjectionProperties.class)
public class FaultInjectionAutoConfiguration { public class FaultInjectionAutoConfiguration {

@ -28,9 +28,9 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
public class FaultInjectionProperties { public class FaultInjectionProperties {
/** /**
* If traffic mirroring is enabled. Default is true. * If traffic mirroring is enabled. Default is false.
*/ */
private boolean enabled = true; private boolean enabled = false;
public boolean isEnabled() { public boolean isEnabled() {
return enabled; return enabled;

@ -33,7 +33,7 @@ import org.springframework.context.annotation.Configuration;
*/ */
@Configuration(proxyBeanMethods = false) @Configuration(proxyBeanMethods = false)
@ConditionalOnPolarisRouterEnabled @ConditionalOnPolarisRouterEnabled
@ConditionalOnProperty(value = "spring.cloud.polaris.traffic-mirroring.enabled", matchIfMissing = true) @ConditionalOnProperty("spring.cloud.polaris.traffic-mirroring.enabled")
@EnableConfigurationProperties(TrafficMirroringProperties.class) @EnableConfigurationProperties(TrafficMirroringProperties.class)
public class TrafficMirroringAutoConfiguration { public class TrafficMirroringAutoConfiguration {

@ -28,9 +28,9 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
public class TrafficMirroringProperties { public class TrafficMirroringProperties {
/** /**
* If traffic mirroring is enabled. Default is true. * If traffic mirroring is enabled. Default is false.
*/ */
private boolean enabled = true; private boolean enabled = false;
/** /**
* Traffic mirroring request pool size. Default is 100. * Traffic mirroring request pool size. Default is 100.

@ -31,7 +31,7 @@ public class TrafficMirroringPropertiesTest {
void testDefaultValues() { void testDefaultValues() {
TrafficMirroringProperties properties = new TrafficMirroringProperties(); TrafficMirroringProperties properties = new TrafficMirroringProperties();
assertThat(properties.isEnabled()).isTrue(); assertThat(properties.isEnabled()).isFalse();
assertThat(properties.getRequestPoolSize()).isEqualTo(100); assertThat(properties.getRequestPoolSize()).isEqualTo(100);
assertThat(properties.getRequestConnectionTimeout()).isEqualTo(5000L); assertThat(properties.getRequestConnectionTimeout()).isEqualTo(5000L);
} }
@ -40,9 +40,9 @@ public class TrafficMirroringPropertiesTest {
void testEnabledProperty() { void testEnabledProperty() {
TrafficMirroringProperties properties = new TrafficMirroringProperties(); TrafficMirroringProperties properties = new TrafficMirroringProperties();
properties.setEnabled(false); properties.setEnabled(true);
assertThat(properties.isEnabled()).isFalse(); assertThat(properties.isEnabled()).isTrue();
} }
@Test @Test
@ -88,14 +88,14 @@ public class TrafficMirroringPropertiesTest {
@Test @Test
void testToString() { void testToString() {
TrafficMirroringProperties properties = new TrafficMirroringProperties(); TrafficMirroringProperties properties = new TrafficMirroringProperties();
properties.setEnabled(false); properties.setEnabled(true);
properties.setRequestPoolSize(8); properties.setRequestPoolSize(8);
properties.setRequestConnectionTimeout(2000); properties.setRequestConnectionTimeout(2000);
String result = properties.toString(); String result = properties.toString();
assertThat(result) assertThat(result)
.contains("enabled=false") .contains("enabled=true")
.contains("requestPoolSize=8") .contains("requestPoolSize=8")
.contains("requestConnectionTimeout=2000"); .contains("requestConnectionTimeout=2000");
} }

@ -17,6 +17,7 @@
package com.tencent.cloud.rpc.enhancement.beanprocessor; 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.instrument.resttemplate.PolarisBlockingLoadBalancerClient;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginRunner; import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginRunner;
@ -54,7 +55,8 @@ public class BlockingLoadBalancerClientBeanPostProcessor implements BeanPostProc
BlockingLoadBalancerClient delegate = (BlockingLoadBalancerClient) bean; BlockingLoadBalancerClient delegate = (BlockingLoadBalancerClient) bean;
ReactiveLoadBalancer.Factory<ServiceInstance> requestFactory = this.factory.getBean(ReactiveLoadBalancer.Factory.class); ReactiveLoadBalancer.Factory<ServiceInstance> requestFactory = this.factory.getBean(ReactiveLoadBalancer.Factory.class);
EnhancedPluginRunner pluginRunner = this.factory.getBean(EnhancedPluginRunner.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; return bean;
} }

@ -164,8 +164,8 @@ public class RpcEnhancementAutoConfiguration {
protected static class PolarisFeignClientAutoConfiguration { protected static class PolarisFeignClientAutoConfiguration {
@Bean @Bean
public EnhancedFeignBeanPostProcessor polarisFeignBeanPostProcessor(@Lazy EnhancedPluginRunner pluginRunner) { public EnhancedFeignBeanPostProcessor polarisFeignBeanPostProcessor(@Lazy EnhancedPluginRunner pluginRunner, RpcEnhancementProperties rpcEnhancementProperties) {
return new EnhancedFeignBeanPostProcessor(pluginRunner); return new EnhancedFeignBeanPostProcessor(pluginRunner, rpcEnhancementProperties);
} }
@Bean @Bean

@ -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;
}
}

@ -34,6 +34,12 @@ import org.springframework.web.client.RestTemplate;
@ConditionalOnPolarisEnabled @ConditionalOnPolarisEnabled
public class RpcEnhancementPropertiesAutoConfiguration { public class RpcEnhancementPropertiesAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public RpcEnhancementProperties rpcEnhancementProperties() {
return new RpcEnhancementProperties();
}
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
public RpcEnhancementReporterProperties rpcEnhancementReporterProperties() { public RpcEnhancementReporterProperties rpcEnhancementReporterProperties() {

@ -25,7 +25,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
/** /**
* Properties of Polaris CircuitBreaker . * Properties of RPC enhancement reporter.
* *
* @author <a href="mailto:iskp.me@gmail.com">Elve.Xu</a> 2022-07-08 * @author <a href="mailto:iskp.me@gmail.com">Elve.Xu</a> 2022-07-08
*/ */

@ -17,6 +17,7 @@
package com.tencent.cloud.rpc.enhancement.instrument.feign; 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 com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginRunner;
import feign.Client; import feign.Client;
@ -38,10 +39,13 @@ public class EnhancedFeignBeanPostProcessor implements BeanPostProcessor, BeanFa
private final EnhancedPluginRunner pluginRunner; private final EnhancedPluginRunner pluginRunner;
private final RpcEnhancementProperties rpcEnhancementProperties;
private BeanFactory factory; private BeanFactory factory;
public EnhancedFeignBeanPostProcessor(EnhancedPluginRunner pluginRunner) { public EnhancedFeignBeanPostProcessor(EnhancedPluginRunner pluginRunner, RpcEnhancementProperties rpcEnhancementProperties) {
this.pluginRunner = pluginRunner; this.pluginRunner = pluginRunner;
this.rpcEnhancementProperties = rpcEnhancementProperties;
} }
@Override @Override
@ -77,7 +81,7 @@ public class EnhancedFeignBeanPostProcessor implements BeanPostProcessor, BeanFa
} }
private EnhancedFeignClient createPolarisFeignClient(Client delegate) { private EnhancedFeignClient createPolarisFeignClient(Client delegate) {
return new EnhancedFeignClient(delegate, pluginRunner); return new EnhancedFeignClient(delegate, pluginRunner, rpcEnhancementProperties);
} }
@Override @Override

@ -29,6 +29,7 @@ import java.util.Map;
import com.tencent.cloud.common.constant.MetadataConstant; import com.tencent.cloud.common.constant.MetadataConstant;
import com.tencent.cloud.common.metadata.MetadataContext; import com.tencent.cloud.common.metadata.MetadataContext;
import com.tencent.cloud.common.metadata.MetadataContextHolder; 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.EnhancedPluginContext;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginRunner; import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginRunner;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginType; import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginType;
@ -61,9 +62,12 @@ public class EnhancedFeignClient implements Client {
private final EnhancedPluginRunner pluginRunner; 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.delegate = checkNotNull(target, "target");
this.pluginRunner = pluginRunner; this.pluginRunner = pluginRunner;
this.rpcEnhancementProperties = rpcEnhancementProperties;
} }
@Override @Override
@ -88,7 +92,7 @@ public class EnhancedFeignClient implements Client {
.build(); .build();
enhancedPluginContext.setRequest(enhancedRequestContext); enhancedPluginContext.setRequest(enhancedRequestContext);
enhancedPluginContext.setOriginRequest(request); enhancedPluginContext.setOriginRequest(request);
if (request.body() != null) { if (request.body() != null && !rpcEnhancementProperties.isIgnoreBody()) {
enhancedPluginContext.setOriginBody(request.body()); enhancedPluginContext.setOriginBody(request.body());
} }

@ -25,6 +25,7 @@ import com.tencent.cloud.common.constant.ContextConstant;
import com.tencent.cloud.common.constant.MetadataConstant; import com.tencent.cloud.common.constant.MetadataConstant;
import com.tencent.cloud.common.metadata.MetadataContext; import com.tencent.cloud.common.metadata.MetadataContext;
import com.tencent.cloud.common.metadata.MetadataContextHolder; 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.EnhancedPluginContext;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginRunner; import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginRunner;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginType; import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginType;
@ -56,9 +57,13 @@ public class EnhancedRestTemplateBlockingLoadBalancerClientInterceptor {
private final LoadBalancerClient delegate; 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.pluginRunner = pluginRunner;
this.delegate = delegate; this.delegate = delegate;
this.rpcEnhancementProperties = rpcEnhancementProperties;
} }
@ -84,7 +89,7 @@ public class EnhancedRestTemplateBlockingLoadBalancerClientInterceptor {
.build(); .build();
enhancedPluginContext.setRequest(enhancedRequestContext); enhancedPluginContext.setRequest(enhancedRequestContext);
enhancedPluginContext.setOriginRequest(httpRequest); enhancedPluginContext.setOriginRequest(httpRequest);
if (body != null) { if (body != null && !rpcEnhancementProperties.isIgnoreBody()) {
enhancedPluginContext.setOriginBody(body); enhancedPluginContext.setOriginBody(body);
} }

@ -19,6 +19,7 @@ package com.tencent.cloud.rpc.enhancement.instrument.resttemplate;
import java.io.IOException; import java.io.IOException;
import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementProperties;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginRunner; import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginRunner;
import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.ServiceInstance;
@ -36,13 +37,15 @@ import org.springframework.http.HttpRequest;
public class PolarisBlockingLoadBalancerClient extends BlockingLoadBalancerClient { public class PolarisBlockingLoadBalancerClient extends BlockingLoadBalancerClient {
private final EnhancedPluginRunner enhancedPluginRunner; private final EnhancedPluginRunner enhancedPluginRunner;
private BlockingLoadBalancerClient delegate; private final BlockingLoadBalancerClient delegate;
private final RpcEnhancementProperties rpcEnhancementProperties;
public PolarisBlockingLoadBalancerClient(ReactiveLoadBalancer.Factory<ServiceInstance> loadBalancerClientFactory, public PolarisBlockingLoadBalancerClient(ReactiveLoadBalancer.Factory<ServiceInstance> loadBalancerClientFactory,
BlockingLoadBalancerClient delegate, EnhancedPluginRunner enhancedPluginRunner) { BlockingLoadBalancerClient delegate, EnhancedPluginRunner enhancedPluginRunner, RpcEnhancementProperties rpcEnhancementProperties) {
super(loadBalancerClientFactory); super(loadBalancerClientFactory);
this.delegate = delegate; this.delegate = delegate;
this.enhancedPluginRunner = enhancedPluginRunner; this.enhancedPluginRunner = enhancedPluginRunner;
this.rpcEnhancementProperties = rpcEnhancementProperties;
} }
/** /**
@ -55,7 +58,7 @@ public class PolarisBlockingLoadBalancerClient extends BlockingLoadBalancerClien
return delegate.execute(serviceId, request); return delegate.execute(serviceId, request);
} }
byte[] body = LoadBalancerUtils.getHttpBodyIfAvailable(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); return enhancedRestTemplateBlockingLoadBalancerClientInterceptor.intercept(httpRequest, body, serviceId, null, request);
} }
@ -69,7 +72,7 @@ public class PolarisBlockingLoadBalancerClient extends BlockingLoadBalancerClien
return delegate.execute(serviceId, serviceInstance, request); return delegate.execute(serviceId, serviceInstance, request);
} }
byte[] body = LoadBalancerUtils.getHttpBodyIfAvailable(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); return enhancedRestTemplateBlockingLoadBalancerClientInterceptor.intercept(httpRequest, body, serviceId, serviceInstance, request);
} }
} }

@ -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 {
}
}

@ -17,6 +17,7 @@
package com.tencent.cloud.rpc.enhancement.instrument.feign; package com.tencent.cloud.rpc.enhancement.instrument.feign;
import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementProperties;
import feign.Client; import feign.Client;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -44,7 +45,7 @@ public class EnhancedFeignBeanPostProcessorTest {
@BeforeEach @BeforeEach
void setUp() { void setUp() {
enhancedFeignBeanPostProcessor = new EnhancedFeignBeanPostProcessor(null); enhancedFeignBeanPostProcessor = new EnhancedFeignBeanPostProcessor(null, null);
} }
@Test @Test
@ -61,6 +62,9 @@ public class EnhancedFeignBeanPostProcessorTest {
if (clazz.equals(LoadBalancerClientFactory.class)) { if (clazz.equals(LoadBalancerClientFactory.class)) {
return mock(LoadBalancerClientFactory.class); return mock(LoadBalancerClientFactory.class);
} }
if (RpcEnhancementProperties.class.equals(clazz)) {
return mock(RpcEnhancementProperties.class);
}
return null; return null;
}).when(beanFactory).getBean(any(Class.class)); }).when(beanFactory).getBean(any(Class.class));
enhancedFeignBeanPostProcessor.setBeanFactory(beanFactory); enhancedFeignBeanPostProcessor.setBeanFactory(beanFactory);

@ -25,6 +25,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import com.tencent.cloud.polaris.context.PolarisSDKContextManager; 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.DefaultEnhancedPluginRunner;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPlugin; import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPlugin;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginContext; import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginContext;
@ -67,7 +68,7 @@ public class EnhancedFeignClientTest {
@Test @Test
public void testConstructor() { public void testConstructor() {
try { try {
new EnhancedFeignClient(null, null); new EnhancedFeignClient(null, null, null);
fail("NullPointerException should be thrown."); fail("NullPointerException should be thrown.");
} }
catch (Throwable e) { catch (Throwable e) {
@ -76,7 +77,7 @@ public class EnhancedFeignClientTest {
} }
try { try {
new EnhancedFeignClient(mock(Client.class), null); new EnhancedFeignClient(mock(Client.class), null, null);
} }
catch (Throwable e) { catch (Throwable e) {
fail("Exception encountered.", e); fail("Exception encountered.", e);
@ -85,7 +86,8 @@ public class EnhancedFeignClientTest {
List<EnhancedPlugin> enhancedPlugins = getMockEnhancedFeignPlugins(); List<EnhancedPlugin> enhancedPlugins = getMockEnhancedFeignPlugins();
try { try {
new EnhancedFeignClient(mock(Client.class), new EnhancedFeignClient(mock(Client.class),
new DefaultEnhancedPluginRunner(enhancedPlugins, new ArrayList<>(), polarisSDKContextManager.getSDKContext())); new DefaultEnhancedPluginRunner(enhancedPlugins, new ArrayList<>(), polarisSDKContextManager.getSDKContext()),
new RpcEnhancementProperties());
} }
catch (Throwable e) { catch (Throwable e) {
fail("Exception encountered.", e); fail("Exception encountered.", e);
@ -115,7 +117,8 @@ public class EnhancedFeignClientTest {
requestTemplate.feignTarget(target); requestTemplate.feignTarget(target);
EnhancedFeignClient polarisFeignClient = new EnhancedFeignClient(delegate, EnhancedFeignClient polarisFeignClient = new EnhancedFeignClient(delegate,
new DefaultEnhancedPluginRunner(getMockEnhancedFeignPlugins(), new ArrayList<>(), polarisSDKContextManager.getSDKContext())); new DefaultEnhancedPluginRunner(getMockEnhancedFeignPlugins(), new ArrayList<>(), polarisSDKContextManager.getSDKContext()),
new RpcEnhancementProperties());
// 200 // 200
Response response = polarisFeignClient.execute(Request.create(Request.HttpMethod.GET, "http://localhost:8080/test", Response response = polarisFeignClient.execute(Request.create(Request.HttpMethod.GET, "http://localhost:8080/test",
@ -162,7 +165,8 @@ public class EnhancedFeignClientTest {
requestTemplate.feignTarget(target); requestTemplate.feignTarget(target);
EnhancedFeignClient polarisFeignClient = new EnhancedFeignClient(delegate, EnhancedFeignClient polarisFeignClient = new EnhancedFeignClient(delegate,
new DefaultEnhancedPluginRunner(getMockCallAbortedExceptionEnhancedFeignPlugins(null), new ArrayList<>(), polarisSDKContextManager.getSDKContext())); new DefaultEnhancedPluginRunner(getMockCallAbortedExceptionEnhancedFeignPlugins(null), new ArrayList<>(), polarisSDKContextManager.getSDKContext()),
new RpcEnhancementProperties());
// Exception // Exception
try { try {
@ -177,7 +181,8 @@ public class EnhancedFeignClientTest {
polarisFeignClient = new EnhancedFeignClient(delegate, polarisFeignClient = new EnhancedFeignClient(delegate,
new DefaultEnhancedPluginRunner(getMockCallAbortedExceptionEnhancedFeignPlugins( 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 // fallback 200
Response response = polarisFeignClient.execute(Request.create(Request.HttpMethod.GET, "http://localhost:8080/test", Response response = polarisFeignClient.execute(Request.create(Request.HttpMethod.GET, "http://localhost:8080/test",

Loading…
Cancel
Save