diff --git a/CHANGELOG.md b/CHANGELOG.md index c1723089..1c2638fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,3 +17,4 @@ - [Optimize: rename opertion EQUAL to EQUALS](https://github.com/Tencent/spring-cloud-tencent/pull/457) - [Docs: Add featureenv example readme(en) file](https://github.com/Tencent/spring-cloud-tencent/pull/460) - [docs:update configuration metadata.](https://github.com/Tencent/spring-cloud-tencent/pull/463) +- [feat:rename the configuration of reporter.](https://github.com/Tencent/spring-cloud-tencent/pull/465) diff --git a/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/src/main/resources/bootstrap.yml b/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/src/main/resources/bootstrap.yml index 7e69c416..ad35a87d 100644 --- a/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/src/main/resources/bootstrap.yml +++ b/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/src/main/resources/bootstrap.yml @@ -13,12 +13,13 @@ spring: stat: enabled: true port: 28081 -# tencent: -# rpc-enhancement: -# enabled: true -# ignore-internal-server-error: true -# series: server_error -# statuses: gateway_timeout, bad_gateway, service_unavailable + tencent: + rpc-enhancement: + enabled: true + reporter: + ignore-internal-server-error: true + series: server_error + statuses: gateway_timeout, bad_gateway, service_unavailable feign: hystrix: diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/AbstractPolarisReporterAdapter.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/AbstractPolarisReporterAdapter.java index 41b9fe15..6ba28617 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/AbstractPolarisReporterAdapter.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/AbstractPolarisReporterAdapter.java @@ -22,7 +22,7 @@ import java.util.Arrays; import java.util.List; import java.util.Objects; -import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementProperties; +import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementReporterProperties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -50,19 +50,17 @@ import static org.springframework.http.HttpStatus.VARIANT_ALSO_NEGOTIATES; public abstract class AbstractPolarisReporterAdapter { private static final Logger LOG = LoggerFactory.getLogger(AbstractPolarisReporterAdapter.class); - - protected final RpcEnhancementProperties properties; - private static final List HTTP_STATUSES = toList(NOT_IMPLEMENTED, BAD_GATEWAY, SERVICE_UNAVAILABLE, GATEWAY_TIMEOUT, HTTP_VERSION_NOT_SUPPORTED, VARIANT_ALSO_NEGOTIATES, INSUFFICIENT_STORAGE, LOOP_DETECTED, BANDWIDTH_LIMIT_EXCEEDED, NOT_EXTENDED, NETWORK_AUTHENTICATION_REQUIRED); + protected final RpcEnhancementReporterProperties properties; /** - * Constructor With {@link RpcEnhancementProperties} . + * Constructor With {@link RpcEnhancementReporterProperties} . * - * @param properties instance of {@link RpcEnhancementProperties}. + * @param properties instance of {@link RpcEnhancementReporterProperties}. */ - protected AbstractPolarisReporterAdapter(RpcEnhancementProperties properties) { + protected AbstractPolarisReporterAdapter(RpcEnhancementReporterProperties properties) { this.properties = properties; } 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 9f25709c..d7cd05fa 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 @@ -49,7 +49,7 @@ import static org.springframework.core.Ordered.HIGHEST_PRECEDENCE; */ @Configuration(proxyBeanMethods = false) @ConditionalOnProperty(value = "spring.cloud.tencent.rpc-enhancement.enabled", havingValue = "true", matchIfMissing = true) -@EnableConfigurationProperties(RpcEnhancementProperties.class) +@EnableConfigurationProperties(RpcEnhancementReporterProperties.class) @AutoConfigureAfter(PolarisContextAutoConfiguration.class) public class RpcEnhancementAutoConfiguration { @@ -75,7 +75,7 @@ public class RpcEnhancementAutoConfiguration { static class PolarisReporterConfig { @Bean - public SuccessPolarisReporter successPolarisReporter(RpcEnhancementProperties properties) { + public SuccessPolarisReporter successPolarisReporter(RpcEnhancementReporterProperties properties) { return new SuccessPolarisReporter(properties); } @@ -98,7 +98,7 @@ public class RpcEnhancementAutoConfiguration { @Bean public EnhancedRestTemplateReporter polarisRestTemplateResponseErrorHandler( - RpcEnhancementProperties properties, + RpcEnhancementReporterProperties properties, ConsumerAPI consumerAPI) { return new EnhancedRestTemplateReporter(properties, consumerAPI); } diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementProperties.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementReporterProperties.java similarity index 85% rename from spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementProperties.java rename to spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementReporterProperties.java index 184ddbef..a044f459 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementProperties.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementReporterProperties.java @@ -29,13 +29,8 @@ import org.springframework.http.HttpStatus; * * @author Elve.Xu 2022-07-08 */ -@ConfigurationProperties("spring.cloud.tencent.rpc-enhancement") -public class RpcEnhancementProperties { - - /** - * If rpc enhancement enabled. - */ - private boolean enabled = true; +@ConfigurationProperties("spring.cloud.tencent.rpc-enhancement.reporter") +public class RpcEnhancementReporterProperties { /** * Specify the Http status code(s) that needs to be reported as FAILED. @@ -49,7 +44,7 @@ public class RpcEnhancementProperties { /** * If ignore "Internal Server Error Http Status Code (500)", - * Only takes effect if the attribute {@link RpcEnhancementProperties#series} is not empty. + * Only takes effect if the attribute {@link RpcEnhancementReporterProperties#series} is not empty. */ private boolean ignoreInternalServerError = true; @@ -81,14 +76,6 @@ public class RpcEnhancementProperties { this.series = series; } - public boolean isEnabled() { - return enabled; - } - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - public boolean isIgnoreInternalServerError() { return ignoreInternalServerError; } 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 e2bb22b3..d4dc7734 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 @@ -18,7 +18,7 @@ package com.tencent.cloud.rpc.enhancement.feign.plugin.reporter; import com.tencent.cloud.rpc.enhancement.AbstractPolarisReporterAdapter; -import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementProperties; +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.EnhancedFeignPlugin; import com.tencent.cloud.rpc.enhancement.feign.plugin.EnhancedFeignPluginType; @@ -42,14 +42,13 @@ import org.springframework.http.HttpStatus; public class SuccessPolarisReporter extends AbstractPolarisReporterAdapter implements EnhancedFeignPlugin { private static final Logger LOG = LoggerFactory.getLogger(SuccessPolarisReporter.class); + @Autowired(required = false) + private ConsumerAPI consumerAPI; - public SuccessPolarisReporter(RpcEnhancementProperties properties) { + public SuccessPolarisReporter(RpcEnhancementReporterProperties properties) { super(properties); } - @Autowired(required = false) - private ConsumerAPI consumerAPI; - @Override public String getName() { return SuccessPolarisReporter.class.getName(); 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 index a6d2ea23..46b945dc 100644 --- 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 @@ -25,7 +25,7 @@ import java.net.URL; import com.tencent.cloud.common.metadata.MetadataContext; import com.tencent.cloud.common.util.ReflectionUtils; import com.tencent.cloud.rpc.enhancement.AbstractPolarisReporterAdapter; -import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementProperties; +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; @@ -52,7 +52,7 @@ public class EnhancedRestTemplateReporter extends AbstractPolarisReporterAdapter private final ConsumerAPI consumerAPI; - public EnhancedRestTemplateReporter(RpcEnhancementProperties properties, ConsumerAPI consumerAPI) { + public EnhancedRestTemplateReporter(RpcEnhancementReporterProperties properties, ConsumerAPI consumerAPI) { super(properties); this.consumerAPI = consumerAPI; } diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-cloud-tencent-rpc-enhancement/src/main/resources/META-INF/additional-spring-configuration-metadata.json index be709215..c76a1856 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-cloud-tencent-rpc-enhancement/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -7,19 +7,19 @@ "description": "If rpc enhancement enabled." }, { - "name": "spring.cloud.tencent.rpc-enhancement.ignore-internal-server-error", + "name": "spring.cloud.tencent.rpc-enhancement.reporter.ignore-internal-server-error", "type": "java.lang.Boolean", "defaultValue": true, "description": "If ignore \"Internal Server Error Http Status Code (500)\"." }, { - "name": "sspring.cloud.tencent.rpc-enhancement.series", + "name": "spring.cloud.tencent.rpc-enhancement.reporter.series", "type": "java.util.List", "defaultValue": "HttpStatus.Series.SERVER_ERROR", "description": "Specify List of HTTP status series that needs to be reported as FAILED when status list is empty." }, { - "name": "sspring.cloud.tencent.rpc-enhancement.statuses", + "name": "spring.cloud.tencent.rpc-enhancement.reporter.statuses", "type": "java.util.List", "defaultValue": "", "description": "Specify the Http status code(s) that needs to be reported as FAILED." 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 db205c31..a14655de 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 @@ -17,7 +17,7 @@ package com.tencent.cloud.rpc.enhancement; -import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementProperties; +import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementReporterProperties; import org.assertj.core.api.Assertions; import org.junit.Test; @@ -32,7 +32,7 @@ public class AbstractPolarisReporterAdapterTest { @Test public void testApplyWithDefaultConfig() { - RpcEnhancementProperties properties = new RpcEnhancementProperties(); + RpcEnhancementReporterProperties properties = new RpcEnhancementReporterProperties(); // Mock Condition SimplePolarisReporterAdapter adapter = new SimplePolarisReporterAdapter(properties); @@ -44,7 +44,7 @@ public class AbstractPolarisReporterAdapterTest { @Test public void testApplyWithoutIgnoreInternalServerError() { - RpcEnhancementProperties properties = new RpcEnhancementProperties(); + RpcEnhancementReporterProperties properties = new RpcEnhancementReporterProperties(); // Mock Condition properties.getStatuses().clear(); properties.setIgnoreInternalServerError(false); @@ -59,7 +59,7 @@ public class AbstractPolarisReporterAdapterTest { @Test public void testApplyWithIgnoreInternalServerError() { - RpcEnhancementProperties properties = new RpcEnhancementProperties(); + RpcEnhancementReporterProperties properties = new RpcEnhancementReporterProperties(); // Mock Condition properties.getStatuses().clear(); properties.setIgnoreInternalServerError(true); @@ -74,7 +74,7 @@ public class AbstractPolarisReporterAdapterTest { @Test public void testApplyWithoutSeries() { - RpcEnhancementProperties properties = new RpcEnhancementProperties(); + RpcEnhancementReporterProperties properties = new RpcEnhancementReporterProperties(); // Mock Condition properties.getStatuses().clear(); properties.getSeries().clear(); @@ -89,7 +89,7 @@ public class AbstractPolarisReporterAdapterTest { @Test public void testApplyWithSeries() { - RpcEnhancementProperties properties = new RpcEnhancementProperties(); + RpcEnhancementReporterProperties properties = new RpcEnhancementReporterProperties(); // Mock Condition properties.getStatuses().clear(); properties.getSeries().clear(); @@ -109,7 +109,7 @@ public class AbstractPolarisReporterAdapterTest { */ public static class SimplePolarisReporterAdapter extends AbstractPolarisReporterAdapter { - public SimplePolarisReporterAdapter(RpcEnhancementProperties properties) { + public SimplePolarisReporterAdapter(RpcEnhancementReporterProperties properties) { super(properties); } } diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementReporterPropertiesTest.java b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementReporterPropertiesTest.java new file mode 100644 index 00000000..48c61233 --- /dev/null +++ b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementReporterPropertiesTest.java @@ -0,0 +1,64 @@ +/* + * 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.config; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.http.HttpStatus.MOVED_PERMANENTLY; +import static org.springframework.http.HttpStatus.MULTIPLE_CHOICES; +import static org.springframework.http.HttpStatus.Series.CLIENT_ERROR; +import static org.springframework.http.HttpStatus.Series.SERVER_ERROR; + +/** + * Test For {@link RpcEnhancementReporterProperties}. + * + * @author Haotian Zhang + */ +@RunWith(SpringRunner.class) +@SpringBootTest(classes = RpcEnhancementReporterPropertiesTest.TestApplication.class) +@ActiveProfiles("test") +public class RpcEnhancementReporterPropertiesTest { + + @Autowired + private RpcEnhancementReporterProperties rpcEnhancementReporterProperties; + + @Test + public void testDefaultInitialization() { + assertThat(rpcEnhancementReporterProperties).isNotNull(); + assertThat(rpcEnhancementReporterProperties.isIgnoreInternalServerError()).isFalse(); + assertThat(rpcEnhancementReporterProperties.getSeries()).isNotEmpty(); + assertThat(rpcEnhancementReporterProperties.getSeries().get(0)).isEqualTo(CLIENT_ERROR); + assertThat(rpcEnhancementReporterProperties.getSeries().get(1)).isEqualTo(SERVER_ERROR); + assertThat(rpcEnhancementReporterProperties.getStatuses()).isNotEmpty(); + assertThat(rpcEnhancementReporterProperties.getStatuses().get(0)).isEqualTo(MULTIPLE_CHOICES); + assertThat(rpcEnhancementReporterProperties.getStatuses().get(1)).isEqualTo(MOVED_PERMANENTLY); + } + + @SpringBootApplication + protected static class TestApplication { + + } +} diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/resttemplate/EnhancedRestTemplateReporterTest.java b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/resttemplate/EnhancedRestTemplateReporterTest.java index 20d7eebc..848e2298 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/resttemplate/EnhancedRestTemplateReporterTest.java +++ b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/resttemplate/EnhancedRestTemplateReporterTest.java @@ -22,7 +22,7 @@ import java.net.HttpURLConnection; import java.net.URI; import java.net.URL; -import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementProperties; +import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementReporterProperties; import com.tencent.polaris.api.core.ConsumerAPI; import org.junit.Test; import org.junit.runner.RunWith; @@ -49,7 +49,7 @@ public class EnhancedRestTemplateReporterTest { public void handleError() throws Exception { ConsumerAPI consumerAPI = mock(ConsumerAPI.class); EnhancedRestTemplateReporter enhancedRestTemplateReporter = - new EnhancedRestTemplateReporter(mock(RpcEnhancementProperties.class), consumerAPI); + new EnhancedRestTemplateReporter(mock(RpcEnhancementReporterProperties.class), consumerAPI); URI uri = mock(URI.class); when(uri.getPath()).thenReturn("/test"); when(uri.getHost()).thenReturn("host"); diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/resources/application-test.properties b/spring-cloud-tencent-rpc-enhancement/src/test/resources/application-test.properties index 96d94d0d..34e566e7 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/test/resources/application-test.properties +++ b/spring-cloud-tencent-rpc-enhancement/src/test/resources/application-test.properties @@ -1,3 +1,8 @@ spring.cloud.polaris.stat.enabled=true spring.cloud.polaris.stat.port=20000 spring.cloud.polaris.stat.path=/xxx +spring.cloud.tencent.rpc-enhancement.reporter.ignore-internal-server-error=false +spring.cloud.tencent.rpc-enhancement.reporter.series[0]=CLIENT_ERROR +spring.cloud.tencent.rpc-enhancement.reporter.series[1]=SERVER_ERROR +spring.cloud.tencent.rpc-enhancement.reporter.statuses[0]=MULTIPLE_CHOICES +spring.cloud.tencent.rpc-enhancement.reporter.statuses[1]=MOVED_PERMANENTLY