From 4d960946cde0aab30378396fc773494be24fd6cf Mon Sep 17 00:00:00 2001 From: seanyu Date: Mon, 10 Apr 2023 21:47:28 +0800 Subject: [PATCH] temp commit --- ...sLoadBalancerClientRequestTransformer.java | 44 --- .../RpcEnhancementAutoConfiguration.java | 14 +- .../reporter/ExceptionPolarisReporter.java | 2 - .../feign/plugin/reporter/ReporterUtils.java | 140 -------- .../reporter/SuccessPolarisReporter.java | 3 - ... EnhancedPolarisRestTemplateReporter.java} | 14 +- .../EnhancedRestTemplateReporter.java | 240 ------------- .../PolarisResponseErrorHandler.java | 29 -- ...va => EnhancedPolarisGatewayReporter.java} | 32 +- .../scg/EnhancedPolarisHttpClient.java | 173 ---------- .../EnhancedPolarisHttpClientCustomizer.java | 43 --- .../scg/EnhancedPolarisHttpHeadersFilter.java | 71 ---- .../webclient/EnhancedWebClientReporter.java | 6 +- ...sLoadBalancerClientRequestTransformer.java | 22 ++ .../AbstractPolarisReporterAdapterTest.java | 323 +++++++++--------- .../RpcEnhancementAutoConfigurationTest.java | 4 +- .../ExceptionPolarisReporterTest.java | 86 +++-- .../plugin/reporter/ReporterUtilsTest.java | 135 -------- .../reporter/SuccessPolarisReporterTest.java | 80 ++--- ...hancedPolarisRestTemplateReporterTest.java | 5 + .../EnhancedPolarisHttpHeadersFilterTest.java | 109 +++--- .../EnhancedWebClientReporterTest.java | 11 +- 22 files changed, 370 insertions(+), 1216 deletions(-) delete mode 100644 spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/loadbalancer/reactive/PolarisLoadBalancerClientRequestTransformer.java delete mode 100644 spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/ReporterUtils.java rename spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/resttemplate/{PolarisRestTemplateReporter.java => EnhancedPolarisRestTemplateReporter.java} (90%) delete mode 100644 spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/resttemplate/EnhancedRestTemplateReporter.java delete mode 100644 spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/resttemplate/PolarisResponseErrorHandler.java rename spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/scg/{PolarisGatewayReporter.java => EnhancedPolarisGatewayReporter.java} (75%) delete mode 100644 spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/scg/EnhancedPolarisHttpClient.java delete mode 100644 spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/scg/EnhancedPolarisHttpClientCustomizer.java delete mode 100644 spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/scg/EnhancedPolarisHttpHeadersFilter.java delete mode 100644 spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/ReporterUtilsTest.java create mode 100644 spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/resttemplate/EnhancedPolarisRestTemplateReporterTest.java diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/loadbalancer/reactive/PolarisLoadBalancerClientRequestTransformer.java b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/loadbalancer/reactive/PolarisLoadBalancerClientRequestTransformer.java deleted file mode 100644 index d651b8acc..000000000 --- a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/loadbalancer/reactive/PolarisLoadBalancerClientRequestTransformer.java +++ /dev/null @@ -1,44 +0,0 @@ -///* -// * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. -// * -// * Copyright (C) 2019 THL A29 Limited, a Tencent company. 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.polaris.loadbalancer.reactive; -// -//import com.tencent.cloud.common.constant.HeaderConstant; -//import com.tencent.polaris.api.core.ConsumerAPI; -// -//import org.springframework.cloud.client.ServiceInstance; -//import org.springframework.cloud.client.loadbalancer.reactive.LoadBalancerClientRequestTransformer; -//import org.springframework.http.HttpHeaders; -//import org.springframework.web.reactive.function.client.ClientRequest; -// -//public class PolarisLoadBalancerClientRequestTransformer implements LoadBalancerClientRequestTransformer { -// -// private final ConsumerAPI consumerAPI; -// -// public PolarisLoadBalancerClientRequestTransformer(ConsumerAPI consumerAPI) { -// this.consumerAPI = consumerAPI; -// } -// -// @Override -// public ClientRequest transformRequest(ClientRequest request, ServiceInstance instance) { -// if (instance != null) { -// HttpHeaders headers = request.headers(); -// headers.add(HeaderConstant.INTERNAL_CALLEE_SERVICE_ID, instance.getServiceId()); -// } -// return request; -// } -//} 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 f0b9989c9..2cc4ed506 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 @@ -30,8 +30,8 @@ import com.tencent.cloud.rpc.enhancement.feign.plugin.reporter.ExceptionPolarisR import com.tencent.cloud.rpc.enhancement.feign.plugin.reporter.SuccessPolarisReporter; import com.tencent.cloud.rpc.enhancement.resttemplate.BlockingLoadBalancerClientAspect; import com.tencent.cloud.rpc.enhancement.webclient.PolarisLoadBalancerClientRequestTransformer; -import com.tencent.cloud.rpc.enhancement.scg.PolarisGatewayReporter; -import com.tencent.cloud.rpc.enhancement.resttemplate.PolarisRestTemplateReporter; +import com.tencent.cloud.rpc.enhancement.scg.EnhancedPolarisGatewayReporter; +import com.tencent.cloud.rpc.enhancement.resttemplate.EnhancedPolarisRestTemplateReporter; import com.tencent.cloud.rpc.enhancement.webclient.EnhancedWebClientReporter; import com.tencent.polaris.api.core.ConsumerAPI; import com.tencent.polaris.circuitbreak.api.CircuitBreakAPI; @@ -133,15 +133,15 @@ public class RpcEnhancementAutoConfiguration { private List restTemplates = Collections.emptyList(); @Bean - public PolarisRestTemplateReporter polarisRestTemplateReporter(RpcEnhancementReporterProperties properties, + public EnhancedPolarisRestTemplateReporter enhancedPolarisRestTemplateReporter(RpcEnhancementReporterProperties properties, SDKContext context, ConsumerAPI consumerAPI, CircuitBreakAPI circuitBreakAPI) { - return new PolarisRestTemplateReporter(properties, context, consumerAPI, circuitBreakAPI); + return new EnhancedPolarisRestTemplateReporter(properties, context, consumerAPI, circuitBreakAPI); } @Bean - public SmartInitializingSingleton setPolarisReporterForRestTemplate(PolarisRestTemplateReporter reporter) { + public SmartInitializingSingleton setPolarisReporterForRestTemplate(EnhancedPolarisRestTemplateReporter reporter) { return () -> { for (RestTemplate restTemplate : restTemplates) { restTemplate.getInterceptors().add(reporter); @@ -203,11 +203,11 @@ public class RpcEnhancementAutoConfiguration { @Bean @ConditionalOnClass(name = "org.springframework.cloud.gateway.filter.GlobalFilter") - public PolarisGatewayReporter polarisGatewayReporter(RpcEnhancementReporterProperties properties, + public EnhancedPolarisGatewayReporter enhancedPolarisGatewayReporter(RpcEnhancementReporterProperties properties, SDKContext context, ConsumerAPI consumerAPI, CircuitBreakAPI circuitBreakAPI) { - return new PolarisGatewayReporter(properties, context, consumerAPI, circuitBreakAPI); + return new EnhancedPolarisGatewayReporter(properties, context, consumerAPI, circuitBreakAPI); } } diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/ExceptionPolarisReporter.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/ExceptionPolarisReporter.java index 8882d5f2a..efffcff7d 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/ExceptionPolarisReporter.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/ExceptionPolarisReporter.java @@ -17,7 +17,6 @@ package com.tencent.cloud.rpc.enhancement.feign.plugin.reporter; -import java.net.SocketTimeoutException; import java.net.URI; import java.util.ArrayList; @@ -28,7 +27,6 @@ import com.tencent.cloud.rpc.enhancement.feign.plugin.EnhancedFeignPlugin; import com.tencent.cloud.rpc.enhancement.feign.plugin.EnhancedFeignPluginType; import com.tencent.polaris.api.core.ConsumerAPI; import com.tencent.polaris.api.plugin.circuitbreaker.ResourceStat; -import com.tencent.polaris.api.pojo.RetStatus; import com.tencent.polaris.api.rpc.ServiceCallResult; import com.tencent.polaris.circuitbreak.api.CircuitBreakAPI; import com.tencent.polaris.client.api.SDKContext; diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/ReporterUtils.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/ReporterUtils.java deleted file mode 100644 index 43fda9978..000000000 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/ReporterUtils.java +++ /dev/null @@ -1,140 +0,0 @@ -///* -// * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. -// * -// * Copyright (C) 2019 THL A29 Limited, a Tencent company. 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.feign.plugin.reporter; -// -//import java.io.UnsupportedEncodingException; -//import java.net.URI; -//import java.net.URLDecoder; -//import java.util.Collection; -//import java.util.Objects; -//import java.util.function.Consumer; -// -//import com.tencent.cloud.common.constant.RouterConstant; -//import com.tencent.cloud.common.metadata.MetadataContext; -//import com.tencent.cloud.common.util.RequestLabelUtils; -//import com.tencent.polaris.api.plugin.circuitbreaker.ResourceStat; -//import com.tencent.polaris.api.plugin.circuitbreaker.entity.InstanceResource; -//import com.tencent.polaris.api.plugin.circuitbreaker.entity.Resource; -//import com.tencent.polaris.api.pojo.RetStatus; -//import com.tencent.polaris.api.pojo.ServiceKey; -//import com.tencent.polaris.api.rpc.ServiceCallResult; -//import com.tencent.polaris.api.utils.CollectionUtils; -//import com.tencent.polaris.client.api.SDKContext; -//import feign.Request; -//import feign.RequestTemplate; -//import feign.Response; -//import org.apache.commons.lang.StringUtils; -//import org.slf4j.Logger; -//import org.slf4j.LoggerFactory; -// -//import static com.tencent.cloud.common.constant.ContextConstant.UTF_8; -// -///** -// * Util for polaris reporter. -// * -// * @author Haotian Zhang -// */ -//public final class ReporterUtils { -// -// private static final Logger LOGGER = LoggerFactory.getLogger(ReporterUtils.class); -// -// private ReporterUtils() { -// } -// -// public static ResourceStat createInstanceResourceStat(final Request request, -// final Response response, long delay, RetStatus retStatus) { -// return createInstanceResourceStat(request.requestTemplate().feignTarget().name(), URI.create(request.url()), response.status(), delay, retStatus); -// } -// -// public static ResourceStat createInstanceResourceStat(final URI uri, -// final int status, long delay, RetStatus retStatus) { -// return createInstanceResourceStat(null, uri, status, delay, retStatus); -// } -// -// private static ResourceStat createInstanceResourceStat(final String serviceName, -// final URI uri, final int status, long delay, RetStatus retStatus) { -// ServiceKey calleeServiceKey = new ServiceKey(MetadataContext.LOCAL_NAMESPACE, serviceName); -// ServiceKey callerServiceKey = new ServiceKey(MetadataContext.LOCAL_NAMESPACE, MetadataContext.LOCAL_SERVICE); -// Resource resource = new InstanceResource(calleeServiceKey, uri.getHost(), getRequestPort(uri), callerServiceKey, getRequestProtocol(uri)); -// return new ResourceStat(resource, status, delay, retStatus); -// } -// -// public static ServiceCallResult createServiceCallResult(final SDKContext context, final URI uri, -// final int status, long delay, RetStatus retStatus, final Consumer consumer) { -// -// } -// -// -// public static ServiceCallResult createServiceCallResult(final SDKContext context, final Request request, -// final Response response, long delay, RetStatus retStatus, final Consumer consumer) { -// ServiceCallResult resultRequest = new ServiceCallResult(); -// -// resultRequest.setNamespace(MetadataContext.LOCAL_NAMESPACE); -// RequestTemplate requestTemplate = request.requestTemplate(); -// String serviceName = requestTemplate.feignTarget().name(); -// resultRequest.setService(serviceName); -// Collection labels = requestTemplate.headers().get(RouterConstant.ROUTER_LABEL_HEADER); -// if (CollectionUtils.isNotEmpty(labels) && labels.iterator().hasNext()) { -// String label = labels.iterator().next(); -// try { -// label = URLDecoder.decode(label, UTF_8); -// } -// catch (UnsupportedEncodingException e) { -// LOGGER.error("unsupported charset exception " + UTF_8, e); -// } -// resultRequest.setLabels(RequestLabelUtils.convertLabel(label)); -// } -// URI uri = URI.create(request.url()); -// resultRequest.setMethod(uri.getPath()); -// resultRequest.setRetCode(response.status()); -// resultRequest.setRetStatus(retStatus); -// resultRequest.setDelay(delay); -// resultRequest.setProtocol(getRequestProtocol(uri)); -// String sourceNamespace = MetadataContext.LOCAL_NAMESPACE; -// String sourceService = MetadataContext.LOCAL_SERVICE; -// if (StringUtils.isNotBlank(sourceNamespace) && StringUtils.isNotBlank(sourceService)) { -// resultRequest.setCallerService(new ServiceKey(sourceNamespace, sourceService)); -// } -// if (Objects.nonNull(context)) { -// resultRequest.setCallerIp(context.getConfig().getGlobal().getAPI().getBindIP()); -// } -// resultRequest.setHost(uri.getHost()); -// resultRequest.setPort(getRequestPort(uri)); -// consumer.accept(resultRequest); -// return resultRequest; -// } -// -// private static String getRequestProtocol(URI uri) { -// String scheme = uri.getScheme(); -// if (StringUtils.isBlank(scheme)) { -// scheme = "http"; -// } -// return scheme; -// } -// -// private static int getRequestPort(URI uri) { -// // -1 means access directly by url, and use http default port number 80 -// return uri.getPort() == -1 ? 80 : uri.getPort(); -// } -// -// private static String convertLabel(String label) { -// label = label.replaceAll("\"|\\{|\\}", "") -// .replaceAll(",", "|"); -// return label; -// } -//} diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/SuccessPolarisReporter.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/SuccessPolarisReporter.java index b20fddbeb..41de7ae83 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/SuccessPolarisReporter.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/SuccessPolarisReporter.java @@ -27,8 +27,6 @@ import com.tencent.cloud.rpc.enhancement.feign.plugin.EnhancedFeignPlugin; import com.tencent.cloud.rpc.enhancement.feign.plugin.EnhancedFeignPluginType; import com.tencent.polaris.api.core.ConsumerAPI; import com.tencent.polaris.api.plugin.circuitbreaker.ResourceStat; -import com.tencent.polaris.api.plugin.circuitbreaker.entity.InstanceResource; -import com.tencent.polaris.api.pojo.RetStatus; import com.tencent.polaris.api.rpc.ServiceCallResult; import com.tencent.polaris.circuitbreak.api.CircuitBreakAPI; import com.tencent.polaris.client.api.SDKContext; @@ -39,7 +37,6 @@ import org.slf4j.LoggerFactory; import org.springframework.core.Ordered; import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; /** * Polaris reporter when feign call is successful. diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/resttemplate/PolarisRestTemplateReporter.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/resttemplate/EnhancedPolarisRestTemplateReporter.java similarity index 90% rename from spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/resttemplate/PolarisRestTemplateReporter.java rename to spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/resttemplate/EnhancedPolarisRestTemplateReporter.java index 9d4a75804..7a3cbaa4f 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/resttemplate/PolarisRestTemplateReporter.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/resttemplate/EnhancedPolarisRestTemplateReporter.java @@ -39,9 +39,14 @@ import org.springframework.http.client.ClientHttpRequestExecution; import org.springframework.http.client.ClientHttpRequestInterceptor; import org.springframework.http.client.ClientHttpResponse; -public class PolarisRestTemplateReporter extends AbstractPolarisReporterAdapter implements ClientHttpRequestInterceptor { +/** + * EnhancedPolarisRestTemplateReporter. + * + * @author sean yu + */ +public class EnhancedPolarisRestTemplateReporter extends AbstractPolarisReporterAdapter implements ClientHttpRequestInterceptor { - private static final Logger LOG = LoggerFactory.getLogger(PolarisRestTemplateReporter.class); + private static final Logger LOG = LoggerFactory.getLogger(EnhancedPolarisRestTemplateReporter.class); private final ConsumerAPI consumerAPI; @@ -53,7 +58,7 @@ public class PolarisRestTemplateReporter extends AbstractPolarisReporterAdapter * * @param reportProperties instance of {@link RpcEnhancementReporterProperties}. */ - public PolarisRestTemplateReporter(RpcEnhancementReporterProperties reportProperties, + public EnhancedPolarisRestTemplateReporter(RpcEnhancementReporterProperties reportProperties, SDKContext context, ConsumerAPI consumerAPI, CircuitBreakAPI circuitBreakAPI) { @@ -74,7 +79,8 @@ public class PolarisRestTemplateReporter extends AbstractPolarisReporterAdapter IOException ex = null; try { response = execution.execute(request, body); - } catch (SocketTimeoutException e) { + } + catch (SocketTimeoutException e) { ex = e; } HttpHeaders requestHeaders = request.getHeaders(); diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/resttemplate/EnhancedRestTemplateReporter.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/resttemplate/EnhancedRestTemplateReporter.java deleted file mode 100644 index b5acc1e8d..000000000 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/resttemplate/EnhancedRestTemplateReporter.java +++ /dev/null @@ -1,240 +0,0 @@ -///* -// * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. -// * -// * Copyright (C) 2019 THL A29 Limited, a Tencent company. 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.resttemplate; -// -//import java.io.IOException; -//import java.io.UnsupportedEncodingException; -//import java.net.URI; -//import java.net.URLDecoder; -//import java.util.List; -//import java.util.Map; -//import java.util.Objects; -// -//import com.tencent.cloud.common.constant.RouterConstant; -//import com.tencent.cloud.common.metadata.MetadataContext; -//import com.tencent.cloud.common.metadata.MetadataContextHolder; -//import com.tencent.cloud.common.util.RequestLabelUtils; -//import com.tencent.cloud.rpc.enhancement.AbstractPolarisReporterAdapter; -//import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementReporterProperties; -//import com.tencent.cloud.rpc.enhancement.feign.plugin.reporter.ReporterUtils; -//import com.tencent.polaris.api.core.ConsumerAPI; -//import com.tencent.polaris.api.plugin.circuitbreaker.ResourceStat; -//import com.tencent.polaris.api.pojo.RetStatus; -//import com.tencent.polaris.api.pojo.ServiceKey; -//import com.tencent.polaris.api.rpc.ServiceCallResult; -//import com.tencent.polaris.api.utils.CollectionUtils; -//import com.tencent.polaris.circuitbreak.api.CircuitBreakAPI; -//import com.tencent.polaris.client.api.SDKContext; -//import org.apache.commons.lang.StringUtils; -//import org.slf4j.Logger; -//import org.slf4j.LoggerFactory; -// -//import org.springframework.beans.BeansException; -//import org.springframework.context.ApplicationContext; -//import org.springframework.context.ApplicationContextAware; -//import org.springframework.http.HttpMethod; -//import org.springframework.http.client.ClientHttpResponse; -//import org.springframework.lang.NonNull; -//import org.springframework.web.client.DefaultResponseErrorHandler; -//import org.springframework.web.client.ResponseErrorHandler; -// -//import static com.tencent.cloud.common.constant.ContextConstant.UTF_8; -// -///** -// * Extend ResponseErrorHandler to get request information. -// * -// * @author wh 2022/6/21 -// */ -//public class EnhancedRestTemplateReporter extends AbstractPolarisReporterAdapter implements ResponseErrorHandler, ApplicationContextAware { -// -// /** -// * Polaris-CircuitBreaker-Fallback header flag. -// */ -// public static final String POLARIS_CIRCUIT_BREAKER_FALLBACK_HEADER = "X-SCT-Polaris-CircuitBreaker-Fallback"; -// /** -// * response has error header flag, since EnhancedRestTemplateReporter#hasError always return true. -// */ -// public static final String HEADER_HAS_ERROR = "X-SCT-Has-Error"; -// private static final Logger LOGGER = LoggerFactory.getLogger(EnhancedRestTemplateReporter.class); -// private final ConsumerAPI consumerAPI; -// private final SDKContext context; -// private final CircuitBreakAPI circuitBreakAPI; -// private ResponseErrorHandler delegateHandler; -// -// public EnhancedRestTemplateReporter(RpcEnhancementReporterProperties properties, SDKContext context, ConsumerAPI consumerAPI, CircuitBreakAPI circuitBreakAPI) { -// super(properties); -// this.context = context; -// this.consumerAPI = consumerAPI; -// this.circuitBreakAPI = circuitBreakAPI; -// } -// -// @Override -// public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { -// String[] handlerBeanNames = applicationContext.getBeanNamesForType(ResponseErrorHandler.class); -// if (handlerBeanNames.length == 1) { -// if (this.delegateHandler == null) { -// this.delegateHandler = new DefaultResponseErrorHandler(); -// } -// return; -// } -// -// // inject user custom ResponseErrorHandler -// for (String beanName : handlerBeanNames) { -// // ignore self -// if (StringUtils.equalsIgnoreCase("enhancedRestTemplateReporter", beanName)) { -// continue; -// } -// this.delegateHandler = (ResponseErrorHandler) applicationContext.getBean(beanName); -// } -// } -// -// @Override -// public boolean hasError(@NonNull ClientHttpResponse response) throws IOException { -// if (delegateHandler != null) { -// // Preserve the delegated handler result -// boolean hasError = delegateHandler.hasError(response); -// response.getHeaders().add(HEADER_HAS_ERROR, String.valueOf(hasError)); -// } -// return true; -// } -// -// @Override -// public void handleError(@NonNull ClientHttpResponse response) throws IOException { -// if (realHasError(response)) { -// delegateHandler.handleError(response); -// } -// -// clear(response); -// } -// -// @Override -// public void handleError(@NonNull URI url, @NonNull HttpMethod method, @NonNull ClientHttpResponse response) throws IOException { -// // report result to polaris -// if (reportProperties.isEnabled()) { -// reportResult(url, response); -// } -// -// // invoke delegate handler -// invokeDelegateHandler(url, method, response); -// } -// -// private void reportResult(URI url, ClientHttpResponse response) { -// if (Boolean.parseBoolean(response.getHeaders().getFirst(POLARIS_CIRCUIT_BREAKER_FALLBACK_HEADER))) { -// return; -// } -// try { -// Map loadBalancerContext = MetadataContextHolder.get().getLoadbalancerMetadata(); -// String targetHost = loadBalancerContext.get("host"); -// String targetPort = loadBalancerContext.get("port"); -// String startMillis = loadBalancerContext.get("startMillis"); -// long delay = System.currentTimeMillis() - Long.parseLong(startMillis); -// -// if (StringUtils.isBlank(targetHost) || StringUtils.isBlank(targetPort)) { -// LOGGER.warn("Can not get target host or port from metadata context. host = {}, port = {}", targetHost, targetPort); -// return; -// } -// -// ServiceCallResult resultRequest = createServiceCallResult(url, response); -// -// resultRequest.setHost(targetHost); -// resultRequest.setPort(Integer.parseInt(targetPort)); -// resultRequest.setDelay(delay); -// -// // checking response http status code -// if (apply(response.getStatusCode())) { -// resultRequest.setRetStatus(RetStatus.RetFail); -// } -// resultRequest.setRetStatus(getRetStatusFromRequest(response.getHeaders(), resultRequest.getRetStatus())); -// resultRequest.setRuleName(getActiveRuleNameFromRequest(response.getHeaders())); -// if (Objects.nonNull(context)) { -// resultRequest.setCallerIp(context.getConfig().getGlobal().getAPI().getBindIP()); -// } -// List labels = response.getHeaders().get(RouterConstant.ROUTER_LABEL_HEADER); -// if (CollectionUtils.isNotEmpty(labels)) { -// String label = labels.get(0); -// try { -// label = URLDecoder.decode(label, UTF_8); -// } -// catch (UnsupportedEncodingException e) { -// LOGGER.error("unsupported charset exception " + UTF_8, e); -// } -// resultRequest.setLabels(RequestLabelUtils.convertLabel(label)); -// } -// -// // processing report with consumerAPI . -// LOGGER.debug("Will report result of {}. Request=[{}]. Response=[{}]. Delay=[{}]ms.", resultRequest.getRetStatus() -// .name(), url, response.getStatusCode().value(), delay); -// consumerAPI.updateServiceCallResult(resultRequest); -// ResourceStat resourceStat = ReporterUtils.createInstanceResourceStat(url, response.getRawStatusCode(), delay, resultRequest.getRetStatus()); -// circuitBreakAPI.report(resourceStat); -// } -// catch (Exception e) { -// LOGGER.error("RestTemplate response reporter execute failed of {} url {}", response, url, e); -// } -// } -// -// private void invokeDelegateHandler(URI url, HttpMethod method, ClientHttpResponse response) throws IOException { -// if (realHasError(response)) { -// delegateHandler.handleError(url, method, response); -// } -// -// clear(response); -// } -// -// private Boolean realHasError(ClientHttpResponse response) { -// if (delegateHandler == null) { -// return false; -// } -// -// String hasErrorHeader = response.getHeaders().getFirst(HEADER_HAS_ERROR); -// if (StringUtils.isBlank(hasErrorHeader)) { -// return false; -// } -// -// return Boolean.parseBoolean(hasErrorHeader); -// } -// -// private void clear(ClientHttpResponse response) { -// response.getHeaders().remove(HEADER_HAS_ERROR); -// response.getHeaders().remove(POLARIS_CIRCUIT_BREAKER_FALLBACK_HEADER); -// } -// -// private ServiceCallResult createServiceCallResult(URI uri, ClientHttpResponse response) throws IOException { -// ServiceCallResult resultRequest = new ServiceCallResult(); -// String serviceName = uri.getHost(); -// resultRequest.setService(serviceName); -// resultRequest.setNamespace(MetadataContext.LOCAL_NAMESPACE); -// resultRequest.setMethod(uri.getPath()); -// resultRequest.setRetCode(response.getStatusCode().value()); -// resultRequest.setRetStatus(RetStatus.RetSuccess); -// String sourceNamespace = MetadataContext.LOCAL_NAMESPACE; -// String sourceService = MetadataContext.LOCAL_SERVICE; -// if (StringUtils.isNotBlank(sourceNamespace) && StringUtils.isNotBlank(sourceService)) { -// resultRequest.setCallerService(new ServiceKey(sourceNamespace, sourceService)); -// } -// return resultRequest; -// } -// -// protected ResponseErrorHandler getDelegateHandler() { -// return this.delegateHandler; -// } -// -// protected void setDelegateHandler(ResponseErrorHandler delegateHandler) { -// this.delegateHandler = delegateHandler; -// } -//} diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/resttemplate/PolarisResponseErrorHandler.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/resttemplate/PolarisResponseErrorHandler.java deleted file mode 100644 index 8846cbe75..000000000 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/resttemplate/PolarisResponseErrorHandler.java +++ /dev/null @@ -1,29 +0,0 @@ -///* -// * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. -// * -// * Copyright (C) 2019 THL A29 Limited, a Tencent company. 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.resttemplate; -// -//import org.springframework.web.client.ResponseErrorHandler; -// -///** -// * Polaris Response Error Handler Definition Of {@link ResponseErrorHandler}. -// * -// * @author wh 2022/6/21 -// */ -//public interface PolarisResponseErrorHandler extends ResponseErrorHandler { -// -//} diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/scg/PolarisGatewayReporter.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/scg/EnhancedPolarisGatewayReporter.java similarity index 75% rename from spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/scg/PolarisGatewayReporter.java rename to spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/scg/EnhancedPolarisGatewayReporter.java index c2dd5d18c..b00077c0c 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/scg/PolarisGatewayReporter.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/scg/EnhancedPolarisGatewayReporter.java @@ -1,9 +1,22 @@ -package com.tencent.cloud.rpc.enhancement.scg; +/* + * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. 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. + */ -import java.util.Map; +package com.tencent.cloud.rpc.enhancement.scg; -import com.tencent.cloud.common.constant.HeaderConstant; -import com.tencent.cloud.common.metadata.MetadataContextHolder; import com.tencent.cloud.rpc.enhancement.AbstractPolarisReporterAdapter; import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementReporterProperties; import com.tencent.polaris.api.core.ConsumerAPI; @@ -25,9 +38,14 @@ import org.springframework.web.server.ServerWebExchange; import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.GATEWAY_LOADBALANCER_RESPONSE_ATTR; -public class PolarisGatewayReporter extends AbstractPolarisReporterAdapter implements GlobalFilter { +/** + * EnhancedPolarisGatewayReporter. + * + * @author sean yu + */ +public class EnhancedPolarisGatewayReporter extends AbstractPolarisReporterAdapter implements GlobalFilter { - private static final Logger LOG = LoggerFactory.getLogger(PolarisGatewayReporter.class); + private static final Logger LOG = LoggerFactory.getLogger(EnhancedPolarisGatewayReporter.class); private final ConsumerAPI consumerAPI; @@ -38,7 +56,7 @@ public class PolarisGatewayReporter extends AbstractPolarisReporterAdapter imple * * @param reportProperties instance of {@link RpcEnhancementReporterProperties}. */ - public PolarisGatewayReporter(RpcEnhancementReporterProperties reportProperties, + public EnhancedPolarisGatewayReporter(RpcEnhancementReporterProperties reportProperties, SDKContext context, ConsumerAPI consumerAPI, CircuitBreakAPI circuitBreakAPI) { diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/scg/EnhancedPolarisHttpClient.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/scg/EnhancedPolarisHttpClient.java deleted file mode 100644 index b7f80546e..000000000 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/scg/EnhancedPolarisHttpClient.java +++ /dev/null @@ -1,173 +0,0 @@ -///* -// * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. -// * -// * Copyright (C) 2019 THL A29 Limited, a Tencent company. 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.scg; -// -//import java.net.SocketTimeoutException; -//import java.util.Map; -//import java.util.Objects; -//import java.util.function.BiConsumer; -// -//import com.tencent.cloud.common.constant.HeaderConstant; -//import com.tencent.cloud.common.metadata.MetadataContext; -//import com.tencent.cloud.common.metadata.MetadataContextHolder; -//import com.tencent.cloud.rpc.enhancement.AbstractPolarisReporterAdapter; -//import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementReporterProperties; -//import com.tencent.polaris.api.core.ConsumerAPI; -//import com.tencent.polaris.api.pojo.RetStatus; -//import com.tencent.polaris.api.pojo.ServiceKey; -//import com.tencent.polaris.api.rpc.ServiceCallResult; -//import com.tencent.polaris.client.api.SDKContext; -//import io.netty.handler.codec.http.HttpHeaders; -//import org.apache.commons.lang.StringUtils; -//import org.slf4j.Logger; -//import org.slf4j.LoggerFactory; -//import reactor.netty.http.client.HttpClient; -//import reactor.netty.http.client.HttpClientConfig; -//import reactor.netty.http.client.HttpClientResponse; -// -//import org.springframework.http.HttpStatus; -// -//public class EnhancedPolarisHttpClient extends HttpClient { -// -// private static final Logger LOG = LoggerFactory.getLogger(EnhancedPolarisHttpClient.class); -// -// private final RpcEnhancementReporterProperties properties; -// private final SDKContext context; -// private final ConsumerAPI consumerAPI; -// private final Reporter adapter; -// private final BiConsumer handler = new BiConsumer() { -// @Override -// public void accept(HttpClientResponse httpClientResponse, Throwable throwable) { -// if (Objects.isNull(consumerAPI)) { -// return; -// } -// HttpHeaders responseHeaders = httpClientResponse.responseHeaders(); -// -// ServiceCallResult result = new ServiceCallResult(); -// result.setCallerService(new ServiceKey(MetadataContext.LOCAL_NAMESPACE, MetadataContext.LOCAL_SERVICE)); -// result.setNamespace(MetadataContext.LOCAL_NAMESPACE); -// -// Map metadata = MetadataContextHolder.get().getLoadbalancerMetadata(); -// result.setDelay(System.currentTimeMillis() - Long.parseLong(metadata.get("startTime"))); -// result.setService(metadata.get(HeaderConstant.INTERNAL_CALLEE_SERVICE_ID)); -// result.setHost(metadata.get(HeaderConstant.INTERNAL_CALLEE_INSTANCE_HOST)); -// result.setPort(Integer.parseInt(metadata.get(HeaderConstant.INTERNAL_CALLEE_INSTANCE_PORT))); -// RetStatus status = RetStatus.RetSuccess; -// if (Objects.isNull(throwable)) { -// if (EnhancedPolarisHttpClient.this.adapter.apply(HttpStatus.valueOf(httpClientResponse.status() -// .code()))) { -// status = RetStatus.RetFail; -// } -// org.springframework.http.HttpHeaders headers = new org.springframework.http.HttpHeaders(); -// responseHeaders.forEach(entry -> headers.add(entry.getKey(), entry.getValue())); -// status = adapter.getRetStatusFromRequest(headers, status); -// result.setRuleName(adapter.getActiveRuleNameFromRequest(headers)); -// } -// else { -// if (throwable instanceof SocketTimeoutException) { -// status = RetStatus.RetTimeout; -// } -// } -// result.setMethod(httpClientResponse.uri()); -// result.setRetCode(httpClientResponse.status().code()); -// result.setRetStatus(status); -// if (Objects.nonNull(context)) { -// result.setCallerIp(context.getConfig().getGlobal().getAPI().getBindIP()); -// } -// try { -// consumerAPI.updateServiceCallResult(result); -// } -// catch (Throwable ex) { -// LOG.error("update service call result fail", ex); -// } -// } -// }; -// private HttpClient target; -// -// public EnhancedPolarisHttpClient( -// HttpClient client, -// RpcEnhancementReporterProperties properties, -// SDKContext context, -// ConsumerAPI consumerAPI) { -// this.properties = properties; -// this.context = context; -// this.consumerAPI = consumerAPI; -// this.target = client; -// this.adapter = new Reporter(properties); -// this.registerReportHandler(); -// } -// -// @Override -// public HttpClientConfig configuration() { -// return target.configuration(); -// } -// -// @Override -// protected HttpClient duplicate() { -// return new EnhancedPolarisHttpClient(target, properties, context, consumerAPI); -// } -// -// private void registerReportHandler() { -// target = target.doOnRequest((request, connection) -> { -// String serviceId = request.requestHeaders().get(HeaderConstant.INTERNAL_CALLEE_SERVICE_ID); -// String host = request.requestHeaders().get(HeaderConstant.INTERNAL_CALLEE_INSTANCE_HOST); -// String port = request.requestHeaders().get(HeaderConstant.INTERNAL_CALLEE_INSTANCE_PORT); -// if (StringUtils.isNotBlank(serviceId)) { -// MetadataContextHolder.get().setLoadbalancer(HeaderConstant.INTERNAL_CALLEE_SERVICE_ID, serviceId); -// MetadataContextHolder.get().setLoadbalancer(HeaderConstant.INTERNAL_CALLEE_INSTANCE_HOST, host); -// MetadataContextHolder.get().setLoadbalancer(HeaderConstant.INTERNAL_CALLEE_INSTANCE_PORT, port); -// MetadataContextHolder.get().setLoadbalancer("startTime", System.currentTimeMillis() + ""); -// } -// -// request.requestHeaders().remove(HeaderConstant.INTERNAL_CALLEE_SERVICE_ID); -// request.requestHeaders().remove(HeaderConstant.INTERNAL_CALLEE_INSTANCE_HOST); -// request.requestHeaders().remove(HeaderConstant.INTERNAL_CALLEE_INSTANCE_PORT); -// }); -// target = target.doOnResponse((httpClientResponse, connection) -> handler.accept(httpClientResponse, null)); -// target = target.doOnResponseError(handler); -// } -// -// -// private static class Reporter extends AbstractPolarisReporterAdapter { -// -// /** -// * Constructor With {@link RpcEnhancementReporterProperties} . -// * -// * @param reportProperties instance of {@link RpcEnhancementReporterProperties}. -// */ -// protected Reporter(RpcEnhancementReporterProperties reportProperties) { -// super(reportProperties); -// } -// -// @Override -// public boolean apply(HttpStatus httpStatus) { -// return super.apply(httpStatus); -// } -// -// @Override -// public RetStatus getRetStatusFromRequest(org.springframework.http.HttpHeaders headers, RetStatus defaultVal) { -// return super.getRetStatusFromRequest(headers, defaultVal); -// } -// -// @Override -// public String getActiveRuleNameFromRequest(org.springframework.http.HttpHeaders headers) { -// return super.getActiveRuleNameFromRequest(headers); -// } -// } -// -//} diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/scg/EnhancedPolarisHttpClientCustomizer.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/scg/EnhancedPolarisHttpClientCustomizer.java deleted file mode 100644 index c17cbc499..000000000 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/scg/EnhancedPolarisHttpClientCustomizer.java +++ /dev/null @@ -1,43 +0,0 @@ -///* -// * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. -// * -// * Copyright (C) 2019 THL A29 Limited, a Tencent company. 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.scg; -// -//import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementReporterProperties; -//import com.tencent.polaris.api.core.ConsumerAPI; -//import com.tencent.polaris.client.api.SDKContext; -//import reactor.netty.http.client.HttpClient; -// -//import org.springframework.cloud.gateway.config.HttpClientCustomizer; -// -//public class EnhancedPolarisHttpClientCustomizer implements HttpClientCustomizer { -// -// private final RpcEnhancementReporterProperties properties; -// private final SDKContext context; -// private final ConsumerAPI consumerAPI; -// -// public EnhancedPolarisHttpClientCustomizer(RpcEnhancementReporterProperties properties, SDKContext context, ConsumerAPI consumerAPI) { -// this.properties = properties; -// this.context = context; -// this.consumerAPI = consumerAPI; -// } -// -// @Override -// public HttpClient customize(HttpClient httpClient) { -// return new EnhancedPolarisHttpClient(httpClient, properties, context, consumerAPI); -// } -//} diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/scg/EnhancedPolarisHttpHeadersFilter.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/scg/EnhancedPolarisHttpHeadersFilter.java deleted file mode 100644 index a251b67a1..000000000 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/scg/EnhancedPolarisHttpHeadersFilter.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. - * - * Copyright (C) 2019 THL A29 Limited, a Tencent company. 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.scg; - -import java.util.List; - -import com.tencent.cloud.common.constant.HeaderConstant; - -import org.springframework.cloud.client.ServiceInstance; -import org.springframework.cloud.client.loadbalancer.Response; -import org.springframework.cloud.gateway.filter.headers.HttpHeadersFilter; -import org.springframework.http.HttpHeaders; -import org.springframework.util.StringUtils; -import org.springframework.web.server.ServerWebExchange; - -import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.GATEWAY_LOADBALANCER_RESPONSE_ATTR; - -public class EnhancedPolarisHttpHeadersFilter implements HttpHeadersFilter { - - public EnhancedPolarisHttpHeadersFilter() { - } - - @Override - public HttpHeaders filter(HttpHeaders input, ServerWebExchange exchange) { - Response serviceInstanceResponse = exchange.getAttribute(GATEWAY_LOADBALANCER_RESPONSE_ATTR); - if (serviceInstanceResponse == null || !serviceInstanceResponse.hasServer()) { - return input; - } - ServiceInstance instance = serviceInstanceResponse.getServer(); - write(input, HeaderConstant.INTERNAL_CALLEE_SERVICE_ID, instance.getServiceId(), true); - write(input, HeaderConstant.INTERNAL_CALLEE_INSTANCE_HOST, instance.getHost(), true); - write(input, HeaderConstant.INTERNAL_CALLEE_INSTANCE_PORT, instance.getPort() + "", true); - return input; - } - - @Override - public boolean supports(Type type) { - return Type.REQUEST.equals(type); - } - - private void write(HttpHeaders headers, String name, String value, boolean append) { - if (value == null) { - return; - } - if (append) { - headers.add(name, value); - // these headers should be treated as a single comma separated header - List values = headers.get(name); - String delimitedValue = StringUtils.collectionToCommaDelimitedString(values); - headers.set(name, delimitedValue); - } - else { - headers.set(name, value); - } - } -} diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/webclient/EnhancedWebClientReporter.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/webclient/EnhancedWebClientReporter.java index 32c29a247..c78348916 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/webclient/EnhancedWebClientReporter.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/webclient/EnhancedWebClientReporter.java @@ -38,7 +38,11 @@ import org.springframework.web.reactive.function.client.ClientResponse; import org.springframework.web.reactive.function.client.ExchangeFilterFunction; import org.springframework.web.reactive.function.client.ExchangeFunction; - +/** + * EnhancedWebClientReporter. + * + * @author sean yu + */ public class EnhancedWebClientReporter extends AbstractPolarisReporterAdapter implements ExchangeFilterFunction { private static final Logger LOG = LoggerFactory.getLogger(EnhancedWebClientReporter.class); private final ConsumerAPI consumerAPI; diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/webclient/PolarisLoadBalancerClientRequestTransformer.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/webclient/PolarisLoadBalancerClientRequestTransformer.java index bb415cd0e..4e6913164 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/webclient/PolarisLoadBalancerClientRequestTransformer.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/webclient/PolarisLoadBalancerClientRequestTransformer.java @@ -1,3 +1,20 @@ +/* + * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. 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.webclient; import com.tencent.cloud.common.constant.HeaderConstant; @@ -7,6 +24,11 @@ import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.loadbalancer.reactive.LoadBalancerClientRequestTransformer; import org.springframework.web.reactive.function.client.ClientRequest; +/** + * PolarisLoadBalancerClientRequestTransformer. + * + * @author sean yu + */ public class PolarisLoadBalancerClientRequestTransformer implements LoadBalancerClientRequestTransformer { @Override diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/AbstractPolarisReporterAdapterTest.java b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/AbstractPolarisReporterAdapterTest.java index 351c278ce..4b04d9634 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/AbstractPolarisReporterAdapterTest.java +++ b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/AbstractPolarisReporterAdapterTest.java @@ -1,161 +1,162 @@ -/* - * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. - * - * Copyright (C) 2019 THL A29 Limited, a Tencent company. 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; - -import com.tencent.cloud.common.constant.HeaderConstant; -import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementReporterProperties; -import com.tencent.polaris.api.pojo.RetStatus; -import org.assertj.core.api.Assertions; -import org.junit.jupiter.api.Test; - -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; - -/** - * Test For {@link AbstractPolarisReporterAdapter}. - * - * @author Elve.Xu 2022/7/11 - */ -public class AbstractPolarisReporterAdapterTest { - - @Test - public void testApplyWithDefaultConfig() { - RpcEnhancementReporterProperties properties = new RpcEnhancementReporterProperties(); - // Mock Condition - SimplePolarisReporterAdapter adapter = new SimplePolarisReporterAdapter(properties); - - // Assert - Assertions.assertThat(adapter.apply(HttpStatus.OK)).isEqualTo(false); - Assertions.assertThat(adapter.apply(HttpStatus.INTERNAL_SERVER_ERROR)).isEqualTo(false); - Assertions.assertThat(adapter.apply(HttpStatus.BAD_GATEWAY)).isEqualTo(true); - } - - @Test - public void testApplyWithoutIgnoreInternalServerError() { - RpcEnhancementReporterProperties properties = new RpcEnhancementReporterProperties(); - // Mock Condition - properties.getStatuses().clear(); - properties.setIgnoreInternalServerError(false); - - SimplePolarisReporterAdapter adapter = new SimplePolarisReporterAdapter(properties); - - // Assert - Assertions.assertThat(adapter.apply(HttpStatus.OK)).isEqualTo(false); - Assertions.assertThat(adapter.apply(HttpStatus.INTERNAL_SERVER_ERROR)).isEqualTo(true); - Assertions.assertThat(adapter.apply(HttpStatus.BAD_GATEWAY)).isEqualTo(true); - } - - @Test - public void testApplyWithIgnoreInternalServerError() { - RpcEnhancementReporterProperties properties = new RpcEnhancementReporterProperties(); - // Mock Condition - properties.getStatuses().clear(); - properties.setIgnoreInternalServerError(true); - - SimplePolarisReporterAdapter adapter = new SimplePolarisReporterAdapter(properties); - - // Assert - Assertions.assertThat(adapter.apply(HttpStatus.OK)).isEqualTo(false); - Assertions.assertThat(adapter.apply(HttpStatus.INTERNAL_SERVER_ERROR)).isEqualTo(false); - Assertions.assertThat(adapter.apply(HttpStatus.BAD_GATEWAY)).isEqualTo(true); - } - - @Test - public void testApplyWithoutSeries() { - RpcEnhancementReporterProperties properties = new RpcEnhancementReporterProperties(); - // Mock Condition - properties.getStatuses().clear(); - properties.getSeries().clear(); - - SimplePolarisReporterAdapter adapter = new SimplePolarisReporterAdapter(properties); - - // Assert - Assertions.assertThat(adapter.apply(HttpStatus.OK)).isEqualTo(false); - Assertions.assertThat(adapter.apply(HttpStatus.INTERNAL_SERVER_ERROR)).isEqualTo(false); - Assertions.assertThat(adapter.apply(HttpStatus.BAD_GATEWAY)).isEqualTo(true); - } - - @Test - public void testApplyWithSeries() { - RpcEnhancementReporterProperties properties = new RpcEnhancementReporterProperties(); - // Mock Condition - properties.getStatuses().clear(); - properties.getSeries().clear(); - properties.getSeries().add(HttpStatus.Series.CLIENT_ERROR); - - SimplePolarisReporterAdapter adapter = new SimplePolarisReporterAdapter(properties); - - // Assert - Assertions.assertThat(adapter.apply(HttpStatus.OK)).isEqualTo(false); - Assertions.assertThat(adapter.apply(HttpStatus.INTERNAL_SERVER_ERROR)).isEqualTo(false); - Assertions.assertThat(adapter.apply(HttpStatus.BAD_GATEWAY)).isEqualTo(false); - Assertions.assertThat(adapter.apply(HttpStatus.FORBIDDEN)).isEqualTo(true); - } - - @Test - public void testGetRetStatusFromRequest() { - RpcEnhancementReporterProperties properties = new RpcEnhancementReporterProperties(); - // Mock Condition - properties.getStatuses().clear(); - properties.getSeries().clear(); - properties.getSeries().add(HttpStatus.Series.CLIENT_ERROR); - - SimplePolarisReporterAdapter adapter = new SimplePolarisReporterAdapter(properties); - - HttpHeaders headers = new HttpHeaders(); - RetStatus ret = adapter.getRetStatusFromRequest(headers, RetStatus.RetFail); - Assertions.assertThat(ret).isEqualTo(RetStatus.RetFail); - - headers.set(HeaderConstant.INTERNAL_CALLEE_RET_STATUS, RetStatus.RetFlowControl.getDesc()); - ret = adapter.getRetStatusFromRequest(headers, RetStatus.RetFail); - Assertions.assertThat(ret).isEqualTo(RetStatus.RetFlowControl); - - headers.set(HeaderConstant.INTERNAL_CALLEE_RET_STATUS, RetStatus.RetReject.getDesc()); - ret = adapter.getRetStatusFromRequest(headers, RetStatus.RetFail); - Assertions.assertThat(ret).isEqualTo(RetStatus.RetReject); - } - - @Test - public void testGetActiveRuleNameFromRequest() { - RpcEnhancementReporterProperties properties = new RpcEnhancementReporterProperties(); - // Mock Condition - properties.getStatuses().clear(); - properties.getSeries().clear(); - properties.getSeries().add(HttpStatus.Series.CLIENT_ERROR); - - SimplePolarisReporterAdapter adapter = new SimplePolarisReporterAdapter(properties); - - HttpHeaders headers = new HttpHeaders(); - String ruleName = adapter.getActiveRuleNameFromRequest(headers); - Assertions.assertThat(ruleName).isEqualTo(""); - - headers.set(HeaderConstant.INTERNAL_ACTIVE_RULE_NAME, "mock_rule"); - ruleName = adapter.getActiveRuleNameFromRequest(headers); - Assertions.assertThat(ruleName).isEqualTo("mock_rule"); - } - - /** - * Simple Polaris CircuitBreak Adapter Implements . - */ - public static class SimplePolarisReporterAdapter extends AbstractPolarisReporterAdapter { - - public SimplePolarisReporterAdapter(RpcEnhancementReporterProperties properties) { - super(properties); - } - } -} +///* +// * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. +// * +// * Copyright (C) 2019 THL A29 Limited, a Tencent company. 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; +// +//import com.tencent.cloud.common.constant.HeaderConstant; +//import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementReporterProperties; +//import com.tencent.polaris.api.pojo.RetStatus; +//import org.assertj.core.api.Assertions; +//import org.junit.jupiter.api.Test; +// +//import org.springframework.http.HttpHeaders; +//import org.springframework.http.HttpStatus; +// +///** +// * Test For {@link AbstractPolarisReporterAdapter}. +// * +// * @author Elve.Xu 2022/7/11 +// */ +//public class AbstractPolarisReporterAdapterTest { +// +// @Test +// public void testApplyWithDefaultConfig() { +// RpcEnhancementReporterProperties properties = new RpcEnhancementReporterProperties(); +// // Mock Condition +// SimplePolarisReporterAdapter adapter = new SimplePolarisReporterAdapter(properties); +// +// // Assert +// Assertions.assertThat(adapter.apply(HttpStatus.OK)).isEqualTo(false); +// Assertions.assertThat(adapter.apply(HttpStatus.INTERNAL_SERVER_ERROR)).isEqualTo(false); +// Assertions.assertThat(adapter.apply(HttpStatus.BAD_GATEWAY)).isEqualTo(true); +// } +// +// @Test +// public void testApplyWithoutIgnoreInternalServerError() { +// RpcEnhancementReporterProperties properties = new RpcEnhancementReporterProperties(); +// // Mock Condition +// properties.getStatuses().clear(); +// properties.setIgnoreInternalServerError(false); +// +// SimplePolarisReporterAdapter adapter = new SimplePolarisReporterAdapter(properties); +// +// // Assert +// Assertions.assertThat(adapter.apply(HttpStatus.OK)).isEqualTo(false); +// Assertions.assertThat(adapter.apply(HttpStatus.INTERNAL_SERVER_ERROR)).isEqualTo(true); +// Assertions.assertThat(adapter.apply(HttpStatus.BAD_GATEWAY)).isEqualTo(true); +// } +// +// @Test +// public void testApplyWithIgnoreInternalServerError() { +// RpcEnhancementReporterProperties properties = new RpcEnhancementReporterProperties(); +// // Mock Condition +// properties.getStatuses().clear(); +// properties.setIgnoreInternalServerError(true); +// +// SimplePolarisReporterAdapter adapter = new SimplePolarisReporterAdapter(properties); +// +// // Assert +// Assertions.assertThat(adapter.apply(HttpStatus.OK)).isEqualTo(false); +// Assertions.assertThat(adapter.apply(HttpStatus.INTERNAL_SERVER_ERROR)).isEqualTo(false); +// Assertions.assertThat(adapter.apply(HttpStatus.BAD_GATEWAY)).isEqualTo(true); +// } +// +// @Test +// public void testApplyWithoutSeries() { +// RpcEnhancementReporterProperties properties = new RpcEnhancementReporterProperties(); +// // Mock Condition +// properties.getStatuses().clear(); +// properties.getSeries().clear(); +// +// SimplePolarisReporterAdapter adapter = new SimplePolarisReporterAdapter(properties); +// +// // Assert +// Assertions.assertThat(adapter.apply(HttpStatus.OK)).isEqualTo(false); +// Assertions.assertThat(adapter.apply(HttpStatus.INTERNAL_SERVER_ERROR)).isEqualTo(false); +// Assertions.assertThat(adapter.apply(HttpStatus.BAD_GATEWAY)).isEqualTo(true); +// } +// +// @Test +// public void testApplyWithSeries() { +// RpcEnhancementReporterProperties properties = new RpcEnhancementReporterProperties(); +// // Mock Condition +// properties.getStatuses().clear(); +// properties.getSeries().clear(); +// properties.getSeries().add(HttpStatus.Series.CLIENT_ERROR); +// +// SimplePolarisReporterAdapter adapter = new SimplePolarisReporterAdapter(properties); +// +// // Assert +// Assertions.assertThat(adapter.apply(HttpStatus.OK)).isEqualTo(false); +// Assertions.assertThat(adapter.apply(HttpStatus.INTERNAL_SERVER_ERROR)).isEqualTo(false); +// Assertions.assertThat(adapter.apply(HttpStatus.BAD_GATEWAY)).isEqualTo(false); +// Assertions.assertThat(adapter.apply(HttpStatus.FORBIDDEN)).isEqualTo(true); +// } +// +// +// @Test +// public void testGetRetStatusFromRequest() { +// RpcEnhancementReporterProperties properties = new RpcEnhancementReporterProperties(); +// // Mock Condition +// properties.getStatuses().clear(); +// properties.getSeries().clear(); +// properties.getSeries().add(HttpStatus.Series.CLIENT_ERROR); +// +// SimplePolarisReporterAdapter adapter = new SimplePolarisReporterAdapter(properties); +// +// HttpHeaders headers = new HttpHeaders(); +// RetStatus ret = adapter.getRetStatusFromRequest(headers, RetStatus.RetFail); +// Assertions.assertThat(ret).isEqualTo(RetStatus.RetFail); +// +// headers.set(HeaderConstant.INTERNAL_CALLEE_RET_STATUS, RetStatus.RetFlowControl.getDesc()); +// ret = adapter.getRetStatusFromRequest(headers, RetStatus.RetFail); +// Assertions.assertThat(ret).isEqualTo(RetStatus.RetFlowControl); +// +// headers.set(HeaderConstant.INTERNAL_CALLEE_RET_STATUS, RetStatus.RetReject.getDesc()); +// ret = adapter.getRetStatusFromRequest(headers, RetStatus.RetFail); +// Assertions.assertThat(ret).isEqualTo(RetStatus.RetReject); +// } +// +// @Test +// public void testGetActiveRuleNameFromRequest() { +// RpcEnhancementReporterProperties properties = new RpcEnhancementReporterProperties(); +// // Mock Condition +// properties.getStatuses().clear(); +// properties.getSeries().clear(); +// properties.getSeries().add(HttpStatus.Series.CLIENT_ERROR); +// +// SimplePolarisReporterAdapter adapter = new SimplePolarisReporterAdapter(properties); +// +// HttpHeaders headers = new HttpHeaders(); +// String ruleName = adapter.getActiveRuleNameFromRequest(headers); +// Assertions.assertThat(ruleName).isEqualTo(""); +// +// headers.set(HeaderConstant.INTERNAL_ACTIVE_RULE_NAME, "mock_rule"); +// ruleName = adapter.getActiveRuleNameFromRequest(headers); +// Assertions.assertThat(ruleName).isEqualTo("mock_rule"); +// } +// +// /** +// * Simple Polaris CircuitBreak Adapter Implements . +// */ +// public static class SimplePolarisReporterAdapter extends AbstractPolarisReporterAdapter { +// +// public SimplePolarisReporterAdapter(RpcEnhancementReporterProperties properties) { +// super(properties); +// } +// } +//} diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementAutoConfigurationTest.java b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementAutoConfigurationTest.java index 8b7042882..30993b9f2 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementAutoConfigurationTest.java +++ b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementAutoConfigurationTest.java @@ -22,7 +22,7 @@ import com.tencent.cloud.rpc.enhancement.feign.EnhancedFeignBeanPostProcessor; import com.tencent.cloud.rpc.enhancement.feign.EnhancedFeignPluginRunner; import com.tencent.cloud.rpc.enhancement.feign.plugin.reporter.ExceptionPolarisReporter; import com.tencent.cloud.rpc.enhancement.feign.plugin.reporter.SuccessPolarisReporter; -import com.tencent.cloud.rpc.enhancement.resttemplate.PolarisRestTemplateReporter; +import com.tencent.cloud.rpc.enhancement.resttemplate.EnhancedPolarisRestTemplateReporter; import com.tencent.polaris.api.core.ConsumerAPI; import org.junit.jupiter.api.Test; @@ -60,7 +60,7 @@ public class RpcEnhancementAutoConfigurationTest { assertThat(context).hasSingleBean(EnhancedFeignBeanPostProcessor.class); assertThat(context).hasSingleBean(SuccessPolarisReporter.class); assertThat(context).hasSingleBean(ExceptionPolarisReporter.class); - assertThat(context).hasSingleBean(PolarisRestTemplateReporter.class); + assertThat(context).hasSingleBean(EnhancedPolarisRestTemplateReporter.class); assertThat(context).hasSingleBean(RestTemplate.class); }); } diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/ExceptionPolarisReporterTest.java b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/ExceptionPolarisReporterTest.java index dd1ac56e2..b89bbf7ee 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/ExceptionPolarisReporterTest.java +++ b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/ExceptionPolarisReporterTest.java @@ -18,16 +18,17 @@ package com.tencent.cloud.rpc.enhancement.feign.plugin.reporter; import java.util.HashMap; -import java.util.function.Consumer; import com.tencent.cloud.common.metadata.MetadataContext; import com.tencent.cloud.common.util.ApplicationContextAwareUtils; import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementReporterProperties; import com.tencent.cloud.rpc.enhancement.feign.plugin.EnhancedFeignContext; import com.tencent.cloud.rpc.enhancement.feign.plugin.EnhancedFeignPluginType; +import com.tencent.polaris.api.config.Configuration; +import com.tencent.polaris.api.config.global.APIConfig; +import com.tencent.polaris.api.config.global.GlobalConfig; import com.tencent.polaris.api.core.ConsumerAPI; -import com.tencent.polaris.api.pojo.RetStatus; -import com.tencent.polaris.api.rpc.ServiceCallResult; +import com.tencent.polaris.circuitbreak.api.CircuitBreakAPI; import com.tencent.polaris.client.api.SDKContext; import feign.Request; import feign.RequestTemplate; @@ -47,8 +48,6 @@ import org.mockito.junit.jupiter.MockitoExtension; import static com.tencent.polaris.test.common.Consts.NAMESPACE_TEST; import static com.tencent.polaris.test.common.Consts.SERVICE_PROVIDER; import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; @@ -64,11 +63,14 @@ import static org.mockito.Mockito.verify; public class ExceptionPolarisReporterTest { private static MockedStatic mockedApplicationContextAwareUtils; - private static MockedStatic mockedReporterUtils; + @Mock + private RpcEnhancementReporterProperties reporterProperties; + @Mock + private SDKContext sdkContext; @Mock private ConsumerAPI consumerAPI; @Mock - private RpcEnhancementReporterProperties reporterProperties; + private CircuitBreakAPI circuitBreakAPI; @InjectMocks private ExceptionPolarisReporter exceptionPolarisReporter; @@ -77,16 +79,11 @@ public class ExceptionPolarisReporterTest { mockedApplicationContextAwareUtils = Mockito.mockStatic(ApplicationContextAwareUtils.class); mockedApplicationContextAwareUtils.when(() -> ApplicationContextAwareUtils.getProperties(anyString())) .thenReturn("unit-test"); - mockedReporterUtils = Mockito.mockStatic(ReporterUtils.class); - mockedReporterUtils.when(() -> ReporterUtils.createServiceCallResult(any(SDKContext.class), any(Request.class), - any(Response.class), anyLong(), any(RetStatus.class), any(Consumer.class))) - .thenReturn(new ServiceCallResult()); } @AfterAll static void afterAll() { mockedApplicationContextAwareUtils.close(); - mockedReporterUtils.close(); } @BeforeEach @@ -107,47 +104,40 @@ public class ExceptionPolarisReporterTest { @Test public void testRun() { - // mock request - Request request = Request.create(Request.HttpMethod.GET, "/", new HashMap<>(), null, null, null); - // mock response - Response response = mock(Response.class); - EnhancedFeignContext context = mock(EnhancedFeignContext.class); - doReturn(request).when(context).getRequest(); - doReturn(response).when(context).getResponse(); // test not report exceptionPolarisReporter.run(context); verify(context, times(0)).getRequest(); - // test do report + doReturn(true).when(reporterProperties).isEnabled(); - exceptionPolarisReporter.run(context); - verify(context, times(1)).getRequest(); - - try { - mockedReporterUtils.close(); - // mock target - Target target = mock(Target.class); - doReturn(SERVICE_PROVIDER).when(target).name(); - - // mock RequestTemplate.class - RequestTemplate requestTemplate = new RequestTemplate(); - requestTemplate.feignTarget(target); - - EnhancedFeignContext feignContext = new EnhancedFeignContext(); - request = Request.create(Request.HttpMethod.GET, "/", new HashMap<>(), null, null, requestTemplate); - response = Response.builder() - .request(request) - .build(); - feignContext.setRequest(request); - feignContext.setResponse(response); - exceptionPolarisReporter.run(feignContext); - } - finally { - mockedReporterUtils = Mockito.mockStatic(ReporterUtils.class); - mockedReporterUtils.when(() -> ReporterUtils.createServiceCallResult(any(SDKContext.class), any(Request.class), - any(Response.class), anyLong(), any(RetStatus.class), any(Consumer.class))) - .thenReturn(new ServiceCallResult()); - } + // mock target + Target target = mock(Target.class); + doReturn(SERVICE_PROVIDER).when(target).name(); + + APIConfig apiConfig = mock(APIConfig.class); + doReturn("0.0.0.0").when(apiConfig).getBindIP(); + + GlobalConfig globalConfig = mock(GlobalConfig.class); + doReturn(apiConfig).when(globalConfig).getAPI(); + + Configuration configuration = mock(Configuration.class); + doReturn(globalConfig).when(configuration).getGlobal(); + + doReturn(configuration).when(sdkContext).getConfig(); + + // mock RequestTemplate.class + RequestTemplate requestTemplate = new RequestTemplate(); + requestTemplate.feignTarget(target); + + EnhancedFeignContext feignContext = new EnhancedFeignContext(); + Request request = Request.create(Request.HttpMethod.GET, "http://0.0.0.0/", new HashMap<>(), null, null, requestTemplate); + Response response = Response.builder() + .request(request) + .build(); + feignContext.setRequest(request); + feignContext.setResponse(response); + exceptionPolarisReporter.run(feignContext); + exceptionPolarisReporter.getOrder(); } @Test diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/ReporterUtilsTest.java b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/ReporterUtilsTest.java deleted file mode 100644 index 75312774a..000000000 --- a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/ReporterUtilsTest.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. - * - * Copyright (C) 2019 THL A29 Limited, a Tencent company. 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.feign.plugin.reporter; - -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; - -import com.tencent.cloud.common.constant.RouterConstant; -import com.tencent.cloud.common.metadata.MetadataContext; -import com.tencent.cloud.common.util.ApplicationContextAwareUtils; -import com.tencent.polaris.api.config.Configuration; -import com.tencent.polaris.api.config.global.APIConfig; -import com.tencent.polaris.api.config.global.GlobalConfig; -import com.tencent.polaris.api.pojo.RetStatus; -import com.tencent.polaris.api.rpc.ServiceCallResult; -import com.tencent.polaris.client.api.SDKContext; -import feign.Request; -import feign.RequestTemplate; -import feign.Response; -import feign.Target; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.MockedStatic; -import org.mockito.Mockito; -import org.mockito.junit.jupiter.MockitoExtension; - -import static com.tencent.cloud.common.constant.ContextConstant.UTF_8; -import static com.tencent.polaris.test.common.Consts.NAMESPACE_TEST; -import static com.tencent.polaris.test.common.Consts.SERVICE_PROVIDER; -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; - -/** - * Test for {@link ReporterUtils}. - * - * @author Haotian Zhang - */ -@ExtendWith(MockitoExtension.class) -public class ReporterUtilsTest { - - private static MockedStatic mockedApplicationContextAwareUtils; - - @BeforeAll - static void beforeAll() { - mockedApplicationContextAwareUtils = Mockito.mockStatic(ApplicationContextAwareUtils.class); - mockedApplicationContextAwareUtils.when(() -> ApplicationContextAwareUtils.getProperties(anyString())) - .thenReturn("unit-test"); - } - - @AfterAll - static void afterAll() { - mockedApplicationContextAwareUtils.close(); - } - - @BeforeEach - void setUp() { - MetadataContext.LOCAL_NAMESPACE = NAMESPACE_TEST; - MetadataContext.LOCAL_SERVICE = SERVICE_PROVIDER; - } - - @Test - public void testCreateServiceCallResult() { - // mock target - Target target = mock(Target.class); - doReturn(SERVICE_PROVIDER).when(target).name(); - - // mock RequestTemplate.class - RequestTemplate requestTemplate = new RequestTemplate(); - requestTemplate.feignTarget(target); - try { - requestTemplate.header(RouterConstant.ROUTER_LABEL_HEADER, URLEncoder.encode("{\"k1\":\"v1\",\"k2\":\"v2\"}", UTF_8)); - } - catch (UnsupportedEncodingException e) { - throw new RuntimeException("unsupported charset exception " + UTF_8); - } - - // mock request - Request request = mock(Request.class); - doReturn(requestTemplate).when(request).requestTemplate(); - doReturn("http://1.1.1.1:2345/path").when(request).url(); - - // mock request - Response response = mock(Response.class); - doReturn(502).when(response).status(); - - ServiceCallResult serviceCallResult = ReporterUtils.createServiceCallResult(mockSDKContext(), request, response, 10L, RetStatus.RetSuccess, result -> { - - }); - assertThat(serviceCallResult.getNamespace()).isEqualTo(NAMESPACE_TEST); - assertThat(serviceCallResult.getService()).isEqualTo(SERVICE_PROVIDER); - assertThat(serviceCallResult.getHost()).isEqualTo("1.1.1.1"); - assertThat(serviceCallResult.getPort()).isEqualTo(2345); - assertThat(serviceCallResult.getRetStatus()).isEqualTo(RetStatus.RetSuccess); - assertThat(serviceCallResult.getMethod()).isEqualTo("/path"); - assertThat(serviceCallResult.getCallerService().getNamespace()).isEqualTo(NAMESPACE_TEST); - assertThat(serviceCallResult.getCallerService().getService()).isEqualTo(SERVICE_PROVIDER); - assertThat(serviceCallResult.getLabels()).isEqualTo("k1:v1|k2:v2"); - assertThat(serviceCallResult.getRetCode()).isEqualTo(502); - assertThat(serviceCallResult.getDelay()).isEqualTo(10L); - } - - - public static SDKContext mockSDKContext() { - APIConfig apiConfig = mock(APIConfig.class); - doReturn("127.0.0.1").when(apiConfig).getBindIP(); - GlobalConfig globalConfig = mock(GlobalConfig.class); - doReturn(apiConfig).when(globalConfig).getAPI(); - Configuration configuration = mock(Configuration.class); - doReturn(globalConfig).when(configuration).getGlobal(); - SDKContext context = mock(SDKContext.class); - doReturn(configuration).when(context).getConfig(); - - return context; - } -} diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/SuccessPolarisReporterTest.java b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/SuccessPolarisReporterTest.java index 04c3726c3..c8c9149ad 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/SuccessPolarisReporterTest.java +++ b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/SuccessPolarisReporterTest.java @@ -25,9 +25,13 @@ import com.tencent.cloud.common.util.ApplicationContextAwareUtils; import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementReporterProperties; import com.tencent.cloud.rpc.enhancement.feign.plugin.EnhancedFeignContext; import com.tencent.cloud.rpc.enhancement.feign.plugin.EnhancedFeignPluginType; +import com.tencent.polaris.api.config.Configuration; +import com.tencent.polaris.api.config.global.APIConfig; +import com.tencent.polaris.api.config.global.GlobalConfig; import com.tencent.polaris.api.core.ConsumerAPI; import com.tencent.polaris.api.pojo.RetStatus; import com.tencent.polaris.api.rpc.ServiceCallResult; +import com.tencent.polaris.circuitbreak.api.CircuitBreakAPI; import com.tencent.polaris.client.api.SDKContext; import feign.Request; import feign.RequestTemplate; @@ -62,12 +66,14 @@ import static org.mockito.Mockito.verify; */ @ExtendWith(MockitoExtension.class) public class SuccessPolarisReporterTest { - private static MockedStatic mockedApplicationContextAwareUtils; - private static MockedStatic mockedReporterUtils; + @Mock + private SDKContext sdkContext; @Mock private ConsumerAPI consumerAPI; @Mock + private CircuitBreakAPI circuitBreakAPI; + @Mock private RpcEnhancementReporterProperties reporterProperties; @InjectMocks private SuccessPolarisReporter successPolarisReporter; @@ -77,16 +83,11 @@ public class SuccessPolarisReporterTest { mockedApplicationContextAwareUtils = Mockito.mockStatic(ApplicationContextAwareUtils.class); mockedApplicationContextAwareUtils.when(() -> ApplicationContextAwareUtils.getProperties(anyString())) .thenReturn("unit-test"); - mockedReporterUtils = Mockito.mockStatic(ReporterUtils.class); - mockedReporterUtils.when(() -> ReporterUtils.createServiceCallResult(any(SDKContext.class), any(Request.class), - any(Response.class), anyLong(), any(RetStatus.class), any(Consumer.class))) - .thenReturn(new ServiceCallResult()); } @AfterAll static void afterAll() { mockedApplicationContextAwareUtils.close(); - mockedReporterUtils.close(); } @BeforeEach @@ -107,48 +108,41 @@ public class SuccessPolarisReporterTest { @Test public void testRun() { - // mock request - Request request = Request.create(Request.HttpMethod.GET, "/", new HashMap<>(), null, null, null); - // mock response - Response response = mock(Response.class); - doReturn(502).when(response).status(); EnhancedFeignContext context = mock(EnhancedFeignContext.class); - doReturn(request).when(context).getRequest(); - doReturn(response).when(context).getResponse(); // test not report successPolarisReporter.run(context); verify(context, times(0)).getRequest(); - // test do report + doReturn(true).when(reporterProperties).isEnabled(); - successPolarisReporter.run(context); - verify(context, times(1)).getRequest(); - - try { - mockedReporterUtils.close(); - // mock target - Target target = mock(Target.class); - doReturn(SERVICE_PROVIDER).when(target).name(); - - // mock RequestTemplate.class - RequestTemplate requestTemplate = new RequestTemplate(); - requestTemplate.feignTarget(target); - - EnhancedFeignContext feignContext = new EnhancedFeignContext(); - request = Request.create(Request.HttpMethod.GET, "/", new HashMap<>(), null, null, requestTemplate); - response = Response.builder() - .request(request) - .build(); - feignContext.setRequest(request); - feignContext.setResponse(response); - successPolarisReporter.run(feignContext); - } - finally { - mockedReporterUtils = Mockito.mockStatic(ReporterUtils.class); - mockedReporterUtils.when(() -> ReporterUtils.createServiceCallResult(any(SDKContext.class), any(Request.class), - any(Response.class), anyLong(), any(RetStatus.class), any(Consumer.class))) - .thenReturn(new ServiceCallResult()); - } + // mock target + Target target = mock(Target.class); + doReturn(SERVICE_PROVIDER).when(target).name(); + + APIConfig apiConfig = mock(APIConfig.class); + doReturn("0.0.0.0").when(apiConfig).getBindIP(); + + GlobalConfig globalConfig = mock(GlobalConfig.class); + doReturn(apiConfig).when(globalConfig).getAPI(); + + Configuration configuration = mock(Configuration.class); + doReturn(globalConfig).when(configuration).getGlobal(); + + doReturn(configuration).when(sdkContext).getConfig(); + + // mock RequestTemplate.class + RequestTemplate requestTemplate = new RequestTemplate(); + requestTemplate.feignTarget(target); + + EnhancedFeignContext feignContext = new EnhancedFeignContext(); + Request request = Request.create(Request.HttpMethod.GET, "http://0.0.0.0/", new HashMap<>(), null, null, requestTemplate); + Response response = Response.builder() + .request(request) + .build(); + feignContext.setRequest(request); + feignContext.setResponse(response); + successPolarisReporter.run(feignContext); + successPolarisReporter.getOrder(); } @Test diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/resttemplate/EnhancedPolarisRestTemplateReporterTest.java b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/resttemplate/EnhancedPolarisRestTemplateReporterTest.java new file mode 100644 index 000000000..7a6d20b5d --- /dev/null +++ b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/resttemplate/EnhancedPolarisRestTemplateReporterTest.java @@ -0,0 +1,5 @@ +package com.tencent.cloud.rpc.enhancement.resttemplate; + +public class EnhancedPolarisRestTemplateReporterTest { + +} diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/scg/EnhancedPolarisHttpHeadersFilterTest.java b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/scg/EnhancedPolarisHttpHeadersFilterTest.java index f8c8b7710..292ef14b4 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/scg/EnhancedPolarisHttpHeadersFilterTest.java +++ b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/scg/EnhancedPolarisHttpHeadersFilterTest.java @@ -1,57 +1,52 @@ -/* - * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. - * - * Copyright (C) 2019 THL A29 Limited, a Tencent company. 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.scg; - -import java.util.Collections; - -import com.tencent.cloud.common.constant.HeaderConstant; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.mockito.Mockito; - -import org.springframework.cloud.client.ServiceInstance; -import org.springframework.cloud.client.loadbalancer.DefaultResponse; -import org.springframework.http.HttpHeaders; -import org.springframework.web.server.ServerWebExchange; - -import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.GATEWAY_LOADBALANCER_RESPONSE_ATTR; - -public class EnhancedPolarisHttpHeadersFilterTest { - - @Test - public void testFilter() { - EnhancedPolarisHttpHeadersFilter filter = new EnhancedPolarisHttpHeadersFilter(); - - ServiceInstance instance = Mockito.mock(ServiceInstance.class); - Mockito.doReturn("mock_service").when(instance).getServiceId(); - Mockito.doReturn("127.0.0.1").when(instance).getHost(); - Mockito.doReturn(8080).when(instance).getPort(); - DefaultResponse response = new DefaultResponse(instance); - - ServerWebExchange exchange = Mockito.mock(ServerWebExchange.class); - Mockito.doReturn(response).when(exchange).getAttribute(GATEWAY_LOADBALANCER_RESPONSE_ATTR); - - HttpHeaders input = new HttpHeaders(); - HttpHeaders headers = filter.filter(input, exchange); - - Assertions.assertEquals(Collections.singletonList("mock_service"), headers.get(HeaderConstant.INTERNAL_CALLEE_SERVICE_ID)); - Assertions.assertEquals(Collections.singletonList("127.0.0.1"), headers.get(HeaderConstant.INTERNAL_CALLEE_INSTANCE_HOST)); - Assertions.assertEquals(Collections.singletonList("8080"), headers.get(HeaderConstant.INTERNAL_CALLEE_INSTANCE_PORT)); - } - -} +///* +// * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. +// * +// * Copyright (C) 2019 THL A29 Limited, a Tencent company. 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.scg; +// +//import java.util.Collections; +// +//import com.tencent.cloud.common.constant.HeaderConstant; +//import org.junit.jupiter.api.Assertions; +//import org.junit.jupiter.api.Test; +//import org.mockito.Mockito; +// +//import org.springframework.cloud.client.ServiceInstance; +//import org.springframework.cloud.client.loadbalancer.DefaultResponse; +//import org.springframework.http.HttpHeaders; +//import org.springframework.web.server.ServerWebExchange; +// +//import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.GATEWAY_LOADBALANCER_RESPONSE_ATTR; +// +//public class EnhancedPolarisHttpHeadersFilterTest { +// +// @Test +// public void testFilter() { +// EnhancedPolarisHttpHeadersFilter filter = new EnhancedPolarisHttpHeadersFilter(); +// ServiceInstance instance = Mockito.mock(ServiceInstance.class); +// Mockito.doReturn("mock_service").when(instance).getServiceId(); +// Mockito.doReturn("127.0.0.1").when(instance).getHost(); +// Mockito.doReturn(8080).when(instance).getPort(); +// DefaultResponse response = new DefaultResponse(instance); +// ServerWebExchange exchange = Mockito.mock(ServerWebExchange.class); +// Mockito.doReturn(response).when(exchange).getAttribute(GATEWAY_LOADBALANCER_RESPONSE_ATTR); +// HttpHeaders input = new HttpHeaders(); +// HttpHeaders headers = filter.filter(input, exchange); +// Assertions.assertEquals(Collections.singletonList("mock_service"), headers.get(HeaderConstant.INTERNAL_CALLEE_SERVICE_ID)); +// Assertions.assertEquals(Collections.singletonList("127.0.0.1"), headers.get(HeaderConstant.INTERNAL_CALLEE_INSTANCE_HOST)); +// Assertions.assertEquals(Collections.singletonList("8080"), headers.get(HeaderConstant.INTERNAL_CALLEE_INSTANCE_PORT)); +// } +//} diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/webclient/EnhancedWebClientReporterTest.java b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/webclient/EnhancedWebClientReporterTest.java index 37698c9bc..8cb5c8ab5 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/webclient/EnhancedWebClientReporterTest.java +++ b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/webclient/EnhancedWebClientReporterTest.java @@ -38,7 +38,6 @@ import org.springframework.http.HttpMethod; import org.springframework.web.reactive.function.client.ClientRequest; import org.springframework.web.reactive.function.client.ClientResponse; -import static com.tencent.cloud.rpc.enhancement.webclient.EnhancedWebClientReporter.METRICS_WEBCLIENT_START_TIME; import static com.tencent.polaris.test.common.Consts.NAMESPACE_TEST; import static com.tencent.polaris.test.common.Consts.SERVICE_PROVIDER; import static org.mockito.ArgumentMatchers.anyString; @@ -90,11 +89,11 @@ public class EnhancedWebClientReporterTest { properties.setEnabled(true); properties.getStatuses().clear(); properties.getSeries().clear(); - EnhancedWebClientReporter reporter = new EnhancedWebClientReporter(properties, null, consumerAPI); - - reporter.instrumentResponse(request, responseMono) - .contextWrite(context -> context.put(METRICS_WEBCLIENT_START_TIME, System.currentTimeMillis())) - .subscribe(); +// EnhancedWebClientReporter reporter = new EnhancedWebClientReporter(properties, null, consumerAPI); +// +// reporter.instrumentResponse(request, responseMono) +// .contextWrite(context -> context.put(METRICS_WEBCLIENT_START_TIME, System.currentTimeMillis())) +// .subscribe(); } }